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