SISTEM ANTI-EFRACTIE
Descrierea proiectului
row3 bit p1.2
col0 bit p1.3 ;intrari
col1 bit p1.4
col2 bit p1.5
dseg at 30h
scan1: ds 1 ;retine prima scanare
oldkey: ds 1 ;retine tasta veche
cseg
;este apelata cu decalaj (de exemplu la fiecare 1/64sec )
;Īntoarce : R0 = 0: nici o schimbare
R0 = 1: toate tastele sunt libere
R0 = 2 .. 13: numarul tastei care a fost apasata
keyscan:
orl p1, #00111111b; Seteaza liniile de taste pe nivel ;īnalt
mov R0, #13
ks1: jnb col0 ks2 ;cauta daca o tasta a fost apasata ;(=low)
dec R0
jnb col1 ks2
dec R0
jnb col2 ks2
dec R0
jbc row1 ks1 ;repeat
jbc row2 ks1 ;until
jbc row3 ks1 ;toate randurile sunt low
ks2: ;R0: 1=nici o tasta, 2 .. 13 numarul tastei
xch R0, scan1
cjne R0, scan1 ks3 ;comparare
cjne R0, oldkey ks4 ;compara daca a fost apasata o tasta noua
ks3: clr R0 ;nici o schimbare
ret
ks4: mov oldkey, R0 ;retine vechea tasta
ret ;R0 = numarul tastei apasate
80C51 Family
Architecture - Philips Semiconductors
www. PhilipsSemiconductors.com
www.EmbeddedControllerHardwareDesign.com
|