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

incf   Temp2,W  ; инкремент регистра, результат – в регистре W

Задание 2. Запишите пример в базовую программу и выполните ее компиляцию. Проверьте работу программы в пошаговом режиме, наблюдая за изменением содержимого регистров Temp1, Temp2 и W. Сделайте выводы о свойствах команды  incf  f,d.

3.9. Исследование логических команд

Микроконтроллер PIC16F84A имеет большой набор команд, реализующих основные логические операции:  И, ИЛИ, Исключающее ИЛИ, НЕ.

Есть три логические команды операций с константами (байтовыми литералами):

andlw   k   ; логическое  И константы  k  и рабочего регистра W,

; результат – в регистре W

iorlw    k   ; логическое  ИЛИ  константы  k  и рабочего регистра W,

; результат – в регистре W

xorlw  k    ; логическое  Исключающее ИЛИ константы  k  и  рабочего

; регистра W, результат – в регистре W

Эти команды очень часто используются для изменения значений разрядов (битов) числа, находящегося в рабочем регистре W. В этом случае константу  k  называют маской.

Команда   andlw  k   сбрасывает в нуль (очищает) разряд числа в рабочем регистре W, если в соответствующем разряде маски будет записан 0. И не изменяет его, если в разряде маски записана 1.

Команда  iorlw  k  устанавливает в единицу разряд числа в рабочем регистре W, если в соответствующем разряде маски будет записана 1. И не изменяет его, если в этом разряде записан 0.

Команда   xorlw  k  инвертирует разряд числа в рабочем регистре W, если в соответствующем разряде маски записана 1. И не изменяет его, если в этом разряде записан 0.

Задание 1 для самостоятельной работы. Напишите программу, которая выполняет следующий алгоритм:

1)  записать в регистр W значение  b’11000011’;

2)  вывести это значение в порт В;

3)  погасить светодиоды  VD7  и  VD1 (вывести в соответствующие разряды порта В нули);

4)  зажечь светодиоды  VD3  и  VD5 (вывести в соответствующие разряды порта В единицы);

5)  инвертировать 7-й, 5-й, 3-й разряды порта В.

Занесите коды программы в базовую, выполните ее компиляцию и проверьте ее работу в пошаговом режиме, наблюдая за состоянием разрядов порта В микроконтроллера.

В PIC16F84A имеется три логические команды операций с регистрами:

andwf  f,d  ; логическое  И рабочего регистра W и регистра  f

iorwf    f,d  ; логическое  ИЛИ рабочего регистра W и регистра  f

xorwf   f,d  ; логическое  Исключающее ИЛИ рабочего регистра W и

; регистра  f

Результат операции помещается либо в рабочий регистр  W (при  d = 0), либо обратно в заданный регистр  f  (при  d = 1).

Эти команды часто применяются для изменения отдельных разрядов числа, находящегося в произвольном регистре  f. При этом маска должна находиться в рабочем регистре  W.

Операция  Исключающее ИЛИ  может применяться для проверки состояния (сброшены или установлены) определенных бит в регистре, а также для проверки на равенство содержимого регистра определенному числу в рабочем регистре W.

Предположим, что в программе используется регистр  Temp1 и необходимо узнать, равно ли его содержимое значению  04h. Это можно сделать следующим способом:

movlw  0x04         ; загрузить число  04h  в регистр W

xorwf   Temp1,W  ; проверить равенство регистров W и Temp1

Если содержимое регистров W и Temp1 равно, то результат выполнения операции Исключающее ИЛИ  над ними равен нулю. При этом в регистре STATUS установится бит признака (флаг) нулевого результата Z = 1, который программа затем может проверить и обработать.

Задание 2 для самостоятельной работы. Напишите программу, которая выполняет следующий алгоритм:

1)  записать в регистр Temp1 число 55h;

2)  вывести нули в порт В (погасить все светодиоды);

3)  зажечь светодиоды VD0, VD1, VD3, VD7;

4)  погасить светодиоды VD1 и VD3;

5)  проверить, равно ли содержимое регистра Temp1 значению 55h.