Однокристальные PIC-микроконтроллеры. Технология разработки и отладки программ для микроконтроллеров PIC16, страница 11

     Задание 2.  Занесите пример  в базовую программу, выполните ее компилирование и проверьте работу с помощью симулятора. Для имитации сигналов на входе порта A используйте асинхронный стимул (см. п. 3.13  лабораторной работы №1).

Для создания асинхронных стимулов выберите пункт меню Debugger > Stimulus > NewWorkbook, при этом на экране появится диалоговое окно Stimulus. В этом окне выберите последнюю вкладку “Asynch”.

Поставьте курсор на первую строку в колонку “Pin/SFR” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт RA2. Затем переместите курсор в колонку “Action” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт “Set High”.

Далее поставьте курсор на вторую строку в колонку “Pin/SFR” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт RA2. Потом переместите курсор в колонку “Action” и щелкните левой кнопкой мыши. В появившемся списке выберите пункт “Set Low”.

После выбора настроек нажмите кнопку Apply в диалоговом окне с целью разрешения их использования.

Сделайте активным окно файла base.asm. Выполните сброс микроконтроллера, а затем запустите программу в режиме  Animate.

Наблюдайте по перемещению зеленой стрелки работу программы, а по содержимому порта PORTA значение на входе RA2. Подайте сначала на линию RA2 высокий уровень (Set High), нажимая кнопку “>” поля  Fireв окне Stimulus. Затем подайте на линию RA2 низкий уровень (Set Low), нажимая кнопку “>” поля Fire. Повторите эти действия несколько раз, наблюдая за изменением сигналя на линии RA2 порта PORTA  и перемещением зеленой стрелки по программе. Попытайтесь понять, правильно ли работает программа?  

     Задание 3.  Замените команду btfsc  PORTA,2  на  btfss  PORTA,2   в этом примере. Занесите коды программы в базовую. Выполните ее компиляцию и проверьте с помощью симулятора. При каком сигнале на 2-й линии  порта A будет включаться светодиод VD7?

Ранее мы упоминали о возможности  проверки битов состояния (флагов) в регистре STATUS. Это также делается при помощи команд  btfss  и  brfsc:

; проверка бита (флага)  C

btfss   STATUS, C   ; если бит C = 1, то пропустить команду goto

goto    met1

………………….

; проверка бита (флага)  Z

btfss  STATUS, Z    ; если бит Z = 1, то пропустить команду  goto

goto   met2

3.12. Исследование команд вызова и возврата из подпрограммы

В МК PIC16F84 имеется несколько команд для работы с подпрограммами.  Сначала рассмотрим команды  call  k   и  return.           

Команда  call   используется для перехода на подпрограмму по адресу, задаваемому в команде, а команда  return – для возврата из подпрограммы. Адрес команды, следующей за командой  call, запоминается в стеке. В МК  PIC16F84A стек используется только для вызова подпрограмм и возврата. Глубина стека, т.е. число ячеек в нем, равна 8. Поэтому из основной программы можно сделать не более 8 вложенных вызовов подпрограмм. После возврата из подпрограммы выполнение основной программы продолжается со следующей за  call  командой. Регистры W и STATUS при вызове подпрограммы не сохраняются,  поэтому, если необходимо, их можно сохранить в отдельных ячейках памяти (регистрах общего назначения). Вот простой пример использования подпрограммы:

start

clrf  PORTB                    ; выключить все светодиоды

bsf  PORTB, 7                 ; включить светодиод VD7

call  turnoff                      ; вызов подпрограммы с именем turnoff

goto  start                         ; идти на начало

turnoff                                            ; подпрограмма выключения VD7

bcf  PORTB, 7                 ; выключить светодиод VD7

return                               ; возврат из подпрограммы

      Задание 1.  Занесите пример  в базовую программу, выполните ее компилирование и проверьте работу с помощью симулятора в пошаговом режиме. Какая информация будет на выводах порта  B, какие светодиоды будут гореть?