movlw 0xFF ; загрузить число FFh в регистр W
movwf PORTB ; переслать содержимое регистра W в регистр PORTB
rlf PORTB, F ; сдвиг содержимого регистра PORTB влево
rlf PORTB, F ; сдвиг содержимого регистра PORTB влево
rlf PORTB, F ; сдвиг содержимого регистра PORTB влево
Задание 2. Запишите коды примера в базовую программу, выполните ее компилирование и проверьте работу в пошаговом режиме. Выполните проверку сдвигов содержимого регистра PORTB «вручную» и сравните результаты.
3.11. Команды сброса и установки битов
Команда очистки (сброса) бита bcf f, d и команда установки бита bsf f, d используются для работы с отдельными битами в регистрах. Параметр b означает номер бита, с которым производится операция, и может принимать значения от 0 до 7.
Вот пример программы, которая включает и выключает светодиод VD7, присоединенный к 7-му разряду порта B демонстрационного МКУ:
clrf PORTB ; вывести нули в порт B (выключить светодиоды)
bsf PORTB, 7 ; вывести 1 в 7-й разряд порта B (зажечь VD7)
bcf PORTB, 7 ; вывести 0 в 7-й разряд порта В (погасить VD7)
Задание1. Занесите пример в базовую программу, выполните ее компилирование и проверьте работу с помощью симулятора в пошаговом режиме.
3.11. Исследование команд условных переходов
В МК PIC16F84A отсутствуют команды условных переходов, подобные командам МК семейства MCS-51. Вместо них применяются такие, которые позволяют пропустить выполнение следующей команды программы. Имеется два варианта подобных команд.
Первый вариант – это команды инкремента incfsz f,d и декремента decfsz f,d с пропуском следующей команды при нулевом результате. С точки зрения обработки данных они работают аналогично командам incf f,d и decf f,d. Основное отличие от этих команд заключается в том, что при нулевом результате выполнения команды incfsz f,d или decfsz f,d пропускается следующая за ней команда. Это означает, что команды incfsz f,d и decfsz f,d могут использоваться для организации программных циклов. Другая особенность этих команд состоит в том, что они не влияют на флаги регистра STATUS.
Вот типичный пример использования цикла:
movlw .10 ; Загрузить число 10 в рабочий регистр W
movwf Temp1 ; Переслать содержимое W регистр Temp1
loop
decfsz Temp1, F ; Декремент регистра Temp1
goto loop ; Повторение цикла 10 раз
movf Temp1, W ; Переслать Temp1 в регистр W
movwf PORTB ; Вывод содержимого W в порт B
Задание 1. Занесите пример в базовую программу, выполните ее компилирование и проверьте работу с помощью симулятора в пошаговом режиме. Какая информация будет на выводах порта B, какие светодиоды будут гореть?
Второй вариант команд перехода – это команды btfsc f, b и btfss f, b.
Эти команды проверяют состояние заданного бита в любом регистре, и в зависимости от результата пропускают или нет следующую команду. Параметр b означает номер бита, который проверяется, и может принимать значения от 0 до 7.
Команда btfsc f, b проверяет заданный бит регистра на нуль и если это выполняется, то следующая за ней команда программы пропускается.
Команда btfss f, b проверяет, равен ли заданный бит единице, и если это так, то следующая за ней команда программы пропускается.
Вот простой пример для заданного МКУ:
clrf PORTB ; выключить все светодиоды
loop
btfsc PORTA,2 ; Проверить бит с номером 2 на входе порта A
goto loop ; цикл ожидания появления низкого уровня
; на входе порта А
bsf PORTB,7 ; Включить светодиод VD7, если RA2 = 0
В этом примере проверяется 2-й разряд порта A и, если на этом выводе будет низкий уровень, включается светодиод VD7 (см. рисунок).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.