lpm r0,Z+ ;взять очередной код ламп
com r0 ;рабочее значение ламп
out PORTB,r0;в индикатор
dec r5 ;сбросить счетчик массива
tst r10 ;контроль активности
brne stra0 ;активность не исчерпана
clr r9 ;убрать активную кнопку
stra0: dec r10 ;считать активность кнопки
jmp st9
kn2: nop ;обработка кнопки 2
tst r5
brne strab ;есть счетчик массива
ldi ZL, low(mas2*2)
ldi ZH,high(mas2*2)
ldi r16,7
mov r5,r16 ;есть знач.счетчика массива
jmp strab
st00: mov r16,r4 ;события на анализ
andi r16,0x02;контроль кор.события
breq st9 ;нет короткого события
nop ;начало обр.кор.события
mov r16,r4
andi r16,0x01;сбросить пр.кор.события
mov r4,r16
tst r3 ;контроль нажатия
breq st5 ;ничего вообще не нажали
mov r6,r3
dec r6 ;контроль номера кнопки
brne knp2 ;нажата кнопка 2 предв.
nop ;обработка кнопки 1
sec
rol r7 ;вдвинуть 1 в линейку
ldi r16,0x7 ;константа длинны линейки
and r7,r16 ;убрать лишнее
cp r7,r16
brne st6 ;нет устойчивого нажатия
ldi r16,0x01;идентификатор 1-й кнопки
mov r9,r16
ldi r16,0xFF
mov r10,r16 ;счетчик активности кнопки
rjmp st6
knp2: nop ;обработка кнопки 2
sec
rol r8 ;вдвинуть 1 в линейку
ldi r16,0x7 ;константа длинны линейки
and r8,r16 ;убрать лишнее
cp r8,r16
brne st6 ;нет устойчивого нажатия
ldi r16,0x02;идентификатор 2-й кнопки
mov r9,r16
ldi r16,0xFF
mov r10,r16 ;счетчик активности кнопки
rjmp st6
st5: nop ;продвижение нуля в линии
clc
rol r7 ;ноль в 1-ю линейку
rol r8 ;ноль в 2-ю линейку
ldi r16,0x7 ;константа длинны линейки
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.