brne timer0
ldi r16, low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16 ;стек загружен
ldi r16,0x00 ;направление - ввод
out DDRD,r16 ;регистр B на ввод
ldi r16,0xFF
out PORTD,r16 ;подтягивающие рез.на порт
ldi r16,0x02 ;бит разр.прер.таймер 0
out TIMSK,r16
clr r16
out TCCR0,r16 ;останов таймера 0
ldi r16,0xFF ;направление - вывод
out DDRB,r16 ;регистр D на вывод
out PORTB,r16 ;погасить светодиоды 'HIGH
clr r3 ;сбросить признак кнопки
clr r4 ;сбросить признаки событий
clr r5 ;сбросить счетчик сдвигов
clr r7 ;линейный код 1-й кнопки
clr r8 ;линейный код 2-й кнопки
clr r9 ;сбросить номер кнопки
clr r10 ;сбросить счетчик активности
sei
ldi r16,0x10
out TCNT0,r16 ;значение счетчика 0
ldi r16,0x01 ;4 : clk - 256
out TCCR0,r16 ;активация счета T0
inc r10 ;признак - таймера reset
ldi r16,0x04 ;короткий счетчик
mov r1,r16
ldi r16,0x08 ;длинный счетчик
mov r2,r16
st0: nop ;фоновый цикл ожидания
mov r16,r4 ;события на анализ
andi r16,0x01;контроль дл.события
breq st00 ;нет длинного события
nop ;начало обр.дл.события
mov r16,r4
andi r16,0x02;сбросить пр.дл.события
mov r4,r16
tst r9 ;контроль усттойч.нажатия
breq st0 ;ничего вообще не нажали
mov r6,r9
dec r6 ;контроль номера кнопки
brne kn2 ;нажата кнопка 2
nop ;обработка кнопки 1
tst r5
brne strab ;есть счетчик массива
ldi ZL, low(mas1*2)
ldi ZH,high(mas1*2)
ldi r16,7
mov r5,r16 ;есть знач.счетчика массива
strab: nop ;начало выдачи на инд.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.