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

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.

Например, с использованием команд сброса можно вывести нули  на выводы порта В следующими способами: