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