Раздел 9 Пример приложения
9.1 Использование светодиодов и кнопок
Подключите порт B к светодиодам и порт D кнопкам. Светодиоды будут управляться раздельно в зависимости от нажатия на соответствующую кнопку.
Рекомендация: Скопируйте нижеприведенный текст программы через буфер обмена в AVR Studio.
;***** Демонстрация использования светодиодов и кнопок в составе STK500
.include "8515def.inc"
.def Temp =r16 ; Регистр хранения временных данных
.def Delay =r17 ; Переменная 1 для генерации задержки
.def Delay2 =r18 ; Переменная 2 для генерации задержки
;***** Инициализация
RESET:
ser temp
out DDRB, temp ; Настройка порта В (PORTB) на вывод
;**** Тестирование ввода/вывода
LOOP:
out PORTB,temp ; Обновление состояния светодиодов
sbis PIND,0x00 ; Если PortD.0 = 0,
inc temp ; то уменьшение на 1 двоичного кода, формируемого свечением светодиодов
sbis PIND,0x01 ; Если PortD.1 = 0,
dec Temp ; то увеличение на 1 двоичного кода, формируемого свечением светодиодов
sbis PIND,0x02 ; Если PortD.2 = 0,
ror Temp ; то циклический сдвиг состояния светодиодов на 1 вправо
sbis PIND,0x03 ; Если PortD.3 = 0,
rol Temp ; то циклический сдвиг состояния светодиодов на 1 влево
sbis PIND,0x04 ; Если PortD.4 = 0,
com Temp ; то инверсия состояния всех светодиодов
sbis PIND,0x05 ; Если PortD.5 = 0,
neg Temp ; то инверсия состояния и прибавление 1
sbis PIND,0x06 ; Если PortD.6 = 0,
swap Temp ; то обмен тетрадами светодиодов
;**** Далее необходима задержка, чтобы сделать проделанные изменения видимыми
DLY:
dec Delay
brne DLY
dec Delay2
brne DLY
rjmp LOOP ; Повторение цикла заново
Кондиционирование
|