Probuje sklecic kod obslugujacy klawiature 4x4 pod debugerem wydaje mi sie ze chodzi a po wgraniu do proca lipa, gdzie popelnilem blad?
Kod: Zaznacz cały
.include "m8515def.inc"
.def acc = r16
.def keyval = r20
.def pushed = r21
.macro dodaj4
inc keyval
inc keyval
inc keyval
inc keyval
.endm
.cseg
; stos
;----------------
ldi acc,low(ramend)
out spl,acc
ldi acc,high(ramend)
out sph,acc
;----------------
;konfiguracja portow we/wy klawiatury
ldi acc,0b00001111 ;PA4-PA7wejscia, PA0-PA3 wyjscia
out ddra,acc
ldi acc,0b00001111
;out porta,acc
;konfiguracja portow wyjscia led
ldi acc,0b11111111 ;PD0-PD7 wyjscia
out ddrd,acc
ldi acc,0b11111111 ;ustawienie 1(PD0-PD7)
out portd,acc
;-----------------------------------
;-------------glowna petla-----------------------
main:
rcall getkey
rcall wyswietl
rjmp main
;------------koniec glownej petli----------------
;----------------
getkey: ;
ldi keyval,0
ldi pushed,0
ldi acc,0b00000001
out porta,acc
rcall skan_kolumn
cpi pushed,1
breq getkey_end
ldi acc,0b00000010
out porta,acc
dodaj4
rcall skan_kolumn
cpi pushed,1
breq getkey_end
ldi acc,0b00000100
out porta,acc
dodaj4
rcall skan_kolumn
cpi pushed,1
breq getkey_end
ldi acc,0b00001000
out porta,acc
dodaj4
rcall skan_kolumn
cpi pushed,1
breq getkey_end
getkey_end:
ret
;------
;procedura ktora kolumna
skan_kolumn:
;inc keyval
sbic pina,pina4
rjmp wcisniety
inc keyval
sbic pina,pina5
rjmp wcisniety
inc keyval
sbic pina,pina6
rjmp wcisniety
inc keyval
sbic pina,pina7
rjmp wcisniety
ldi keyval,0
ret
wcisniety:
inc keyval
ldi pushed,1
ret
;-----wyswietla stan keyval na led
wyswietl:
in acc,keyval
com acc
out portd,acc
ret