Задание 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, какие светодиоды будут гореть?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.