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

Следующая команда  movwf  TRISA  пересылает содержимое рабочего регистра  W в регистр управления направлением передачи  TRISA  порта A. Задание 1 в разряде регистра  TRISA  определяет, что соответствующий разряд порта  A настраивается на ввод. В нашем случае все разряды порта A устанавливаются на ввод, т.е. будут являться входами МКУ. Обратите внимание, что порт A имеет только 5 разрядов, и старшие 3 бита числа, записываемого в регистр TRISA, также имеющего 5 разрядов, не используются.

Следующая команда  movlw  Init2  загружает в рабочий регистр W значение, присвоенное имени  Init2 и равное  b’00000000’. Команда  movwf  TRISB  пересылает содержимое рабочего регистра  W в регистр управления направления передачи  TRISB  порта B. Задание 0 в разряде регистра  TRISB определяет, что соответствующий разряд порта B устанавливается на вывод. В нашем случае все разряды порта B будут настроены на вывод, т.е. являются выходами МКУ.

И, наконец, с помощью команды  bcf  STATUS, RP0  сбрасывается бит  RP0  в регистре  STATUS  и происходит возврат в 0-й банк памяти данных, где располагаются необходимые для работы программы регистры и порты.

Коды примеров программ, которые будут использоваться в лабораторной работе, следует вставлять на место закомментированной строки «; Здесь будут находиться команды примеров». Вы будете заменять эту строку на реальные команды, ассемблировать получившуюся программу, исследовать ее работу с помощью симулятора MPLAB SIM и смотреть, что получилось.

В конце базовой программы стоит команда  goto  $. Оператор  Ассемблера  “$” означает текущее значение программного счетчика  PC. Поэтому команда  goto  $  означает переход туда, где мы в данный момент находимся. Такой цикл бесконечен, поскольку не существует способа (кроме прерывания) выхода из него. Команда  goto  $  часто применяется для остановки выполнения программы при отладке.

Директива  end  указывает ассемблеру на конец текста программы.

     Задание 1.  Наберите текст базовой программы в окне открытого файла

base.asm.

При наборе текста программы необходимо придерживаться определенных правил. Все метки и символические имена (в данном примере Init1, Init2, Temp1, Temp2, reset, main) должны начинаться с начала строки (колонка номер 1). Мнемоники команд микропроцессора и директивы Ассемблера (в данном примере list, #include, org, end) должны размещаться со 2-й и далее колонок строки. В последней строке текста программы обязательно должна быть директива  end. Хотя в языке Ассемблера символы, написанные заглавными и строчными буквами, транслируются одинаковыми кодами, современный стиль программирования рекомендует мнемокоды команд, директивы и метки записывать строчными буквами, а имена регистров специальных функций микроконтроллера и их отдельных битов – заглавными буквами. Имена регистров пользователя (в данном примере Temp1, Temp2) и имена констант (Init1, Init2) будем записывать строчными буквами, причем первая буква имени обязательно заглавная.

Обратите внимание, что перед директивой  __CONFIG надо обязательно ввести два символа нижнего тире.

Задание 2. Используя пункт меню Project >Quickbuildbase.asm выполните компилирование исходного текста программы base.asm. Компиляция считается успешной при появлении в окне результатов сообщения “BUILD SUCCEEDED”.

3.4.  Изучения и исследование команд пересылки данных

Микроконтроллер  PIC16F84A имеет следующие команды пересылки данных:

movlw  k   ; пересылка константы (байтового литерала)  k  в рабочий

; регистр  W

movwf   f  ; пересылка содержимого регистра  f  в  рабочий регистр  W

Команду  movlw  k  часто называют командой загрузки регистра  W.

Общим свойством этих двух команд является то, что они не изменяют флаги (биты признаков) в регистре  STATUS.

Команда