BID = 125877
Jornbyte Moderator
Beiträge: 7178
|
Und habs gefunden.
;**** 2. Teil Tastatursteuerung **********************
scan: ldi temp1,0x00 ; Zeichenpuffer auf Null
ldi temp,0b10001110 ;Reihe 1 auf 0 setzen
out porta,temp ; und ausgeben
nop ;
nop ; 3 x Nop Zeit zum umschalten
nop ; der Ausgänge
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,1 ;ist eine 1
cpi temp,0b01100000
brne t2 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t2: ldi temp,0b00001110 ;Reihe 1 auf 0 setzen
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,2 ;ist eine 2
cpi temp,0b01010000
brne t3 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t3: ldi temp,0b10001110 ;Reihe 1 auf 0 setzen
out porta,temp
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,3 ;ist eine 3
cpi temp,0b00110000
brne t4 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
;*********************************************************
t4: ldi temp,0b10001101 ;Reihe 2 auf 0 setzen
out porta,temp
nop
nop
nop
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,4 ;ist eine 4
cpi temp,0b01100000
brne t5 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t5: ldi temp,0b10001101 ;Reihe 2 auf 0 setzen
out porta,temp
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,5 ;ist eine 5
cpi temp,0b01010000
brne t6 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t6: ldi temp,0b10001101 ;Reihe 2 auf 0 setzen
out porta,temp
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,6 ;ist eine 6
cpi temp,0b00110000
brne t7 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
;*********************************************************
t7: ldi temp,0b10001011 ;Reihe 3 auf 0 setzen
out porta,temp
nop
nop
nop
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,7 ;ist eine 7
cpi temp,0b01100000
brne t8 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t8: ldi temp,0b10001011 ;Reihe 3 auf 0 setzen
out porta,temp
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,8 ;ist eine 8
cpi temp,0b01010000
brne t9 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t9: ldi temp,0b10001011 ;Reihe 3 auf 0 setzen
out porta,temp
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,9 ;ist eine 9
cpi temp,0b00110000
brne t10 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
;*********************************************************
t10: ldi temp,0b10000111 ;Reihe 4 auf 0 setzen
out porta,temp
nop
nop
nop
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,0x0a ;ist eine a
cpi temp,0b01100000
brne t11 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t11: ldi temp,0b10000111 ;Reihe 4 auf 0 setzen
out porta,temp
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,0x0c ;ist eine 0
cpi temp,0b01010000
brne t12 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
t12: ldi temp,0b10000111 ;Reihe 4 auf 0 setzen
out porta,temp
in temp,pina ;liest den Zustand von PortA nach temp
andi temp, 0b01110000
ldi key,0x0b ;ist eine b
cpi temp,0b00110000
brne t13 ;Spalte 1 abfragen und Springen wenn nicht LOW
ret ;ist LOW; Taste gefunden
;****** keine Taste gedrückt *****************************
t13: ldi temp1,255 ; Zeichenpuffer auf 255 = Keine Taste gedrückt
ret
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|