Помогите разобраться с прикручиванием нескольки кнопок. Например, при нажатии нулевой число увеличивается на единицу, а при нажатии первой – уменьшается. Написал код, но снова что-то не так:
Код
.include "m16def.inc"
.def temp1=R16
.def temp2=R17
.def temp3=R18
.def temp4=R19
.def temp=R20
.dseg
Line: .byte 2
.cseg
.org 0
ldi temp, High(RamEnd)
out SPH, Temp
ldi temp, Low(RamEnd)
out SPL, Temp
ldi temp, 0b11111111
out DDRB, temp
ldi Temp,0b00000001
out PortB,Temp
KeyRead:
in temp1,PinA ; читаем порт А
sts Line, temp1 ; записываем результат в ОЗУ
rcall DLY ; Задержка
cpi Temp1,0
brne KeyTest ; если что-то нажато - переходим на обработку
rjmp KeyRead ;если ничего не нажато - сначала
KeyTest:
lds temp1, line ; загружаем результат чтения порта
cpi temp1, 0b00000001; если нажата нулевая кнопка переходим к But0
breq But0
cpi temp1, 0b00000010; если нажата первая кнопка переходим к But1
breq But1
But0:
inc Temp ;инкремент
out PortB,Temp
rcall DLY ; вызываем задержку
rjmp KeyRead ; в начало
But1:
dec Temp ;декремент
out PortB,Temp
rcall DLY ;задержка
rjmp KeyRead
;----------------------------------------------------------------------
DLY:
ldi Temp1,0
ldi Temp2,0
Loop:
dec Temp1
brne Loop
dec Temp2
brne Loop
ret
А точнее, кнопки не откликаются вовсе. Наставьте на путь истиный