movf f, d ; выполняет пересылку содержимого регистра f, а символ d определяет, куда будет помещен результат.
При d = 0 результат помещается в рабочий регистр W, а если d = 1, то результат записывается в использованный в команде регистр f. Эта команда изменяет бит признака нулевого результата (флаг Z).
Данная команда, в основном, используется для пересылки содержимого какого-либо регистра в рабочий регистр W (при d = 0). Если же установить d = 1, то эта команда загрузит регистр сам в себя, но при этом бит признака нуля Z установится в соответствии с содержимым этого регистра. Поэтому эта команда может использоваться для проверки регистра на нуль.
При написании подобных команд удобнее вместо цифр 0 или 1 подставлять символы W или F, которые обозначают регистр результата. Эти символы определены в файле p16f84a.inc, который был включен в базовую программу. Таким образом в дальнейшем будем писать команду movf f, W вместо movf f, 0 и команду movf f, F вместо movf f, 1.
Рассмотрим пример применения команд пересылки данных:
movlw b’01010101’ ; загрузить в рабочий регистр число в двоичном
; формате
movwf PORTB ; переслать содержимое регистра W в порт B
movlw 0x0F ; загрузить в рабочий регистр W число 0Fh
movwf Temp1 ; переслать содержимое регистра W в регистр Temp1
movlw 0x00 ; загрузить в регистр W число 0
; пересылка содержимого регистра Temp1 в регистр PORTB
movf Temp1, W ; переслать содержимое регистра Temp1 регистр W
movwf PORTB ; переслать содержимое регистра W в регистр PORTB
movlw 0x00 ; загрузить в регистр W число 0
movwf Temp1 ; переслать содержимое регистра W в регистр Temp1
movf Temp1, F ; проверить на нуль содержимое регистра Temp1
Задание 3. Вставьте команды примера в базовую программу. С помощью пункта меню Project >Quickbuildbase.asm выполните ее компиляцию. Выберите симулятор MPLAB SIM в качестве инструмента для отладки программы с помощью пункта меню Debug > Tools .
Затем создайте окно для наблюдения переменных, используя пункт меню View > Watch . Последовательно введите в окно наблюдения имена регистров специальных функций WREG (рабочий регистр W), PORTA (порт А), PORTB (порт В), STATUS (регистр состояния), а затем имена регистров пользователя Temp1 и Temp2 (регистров общего назначения).
Примечание.По умолчанию значения отображаются в окне наблюдения в hex-кодах. Для отслеживания состояний регистров более удобен двоичный формат, показывающий отдельные разряды. Можно изменить формат отображения в окне наблюдения. С этой целью после ввода имени переменной, например, PORTB необходимо в диалоговом окне выбрать опцию Propertis. В открывшемся окне надо выбрать систему Binary и нажать кнопку OK.
Проверку работы команд примеров удобно выполнять в пошаговом режиме. С этой целью выполните сброс микроконтроллера с помощью клавиши F6 или щелчком мыши по иконке с надписью Reset графического меню отладки. Зеленая стрелка появится в окне файла base.asm на строке reset goto main с адресом 0x000. Для пошагового выполнения программы используйте клавишу F7 или щелкайте по иконке с надписью Step Into графического меню.
Внимательно наблюдайте за изменением содержания регистров в окне Watch при выполнении команд примера. Сделайте выводы о влиянии команд пересылки на флаги микроконтроллера.
3.5. Изучение и исследование команд сброса (очистки)
В микроконтроллере PIC16F84A имеется две команды сброса (очистки):
clrw ; сброс (очистка) содержимого рабочего регистра W
clrf f ; сброс (очистка) любого регистра f.
Общим свойством команд сброса является то, что они устанавливают бит признака нуля (флаг) Z = 1 в регистре STATUS.
Например, с использованием команд сброса можно вывести нули на выводы порта В следующими способами:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.