Gast
#563695
Hallo Forenbewohner,
Was hab ich vor?
------------------
Ich möchte eine 4x4 Standart Matrix Tastatur abfragen und eine 4
stellige Tastenfolge abspeichern?
Die Idee!
-----------
Ich benutze speziell den Mikrocontroller 18f2420. Am PORTB ist die
Matrix Tastatur jeweils über einen Widerstand angeschlossen.
Pinbelegung:
#define krow1 PORTB,0 ;keyboard 1 4 7 *
#define krow2 PORTB,1 ;keyboard 2 5 8 0
#define krow3 PORTB,2 ;keyboard 3 6 9 #
#define krow4 PORTB,3 ;keyboard A B C D
#define kline1 PORTB,4 ;keyboard 1 2 3 A
#define kline2 PORTB,5 ;keyboard 4 5 6 B
#define kline3 PORTB,6 ;keyboard 7 8 9 C
#define kline4 PORTB,7 ;keyboard # 0 * D
Meine Abfrage gestaltet sich derzeit wie folgt.
1. Es wird eine Spalte "krow" nach der anderen auf null gesetzt.
2. Danach wird geschaut in welcher Zeile "kline" welcher Taster ein Null
Signal liefert.
3. Wenn ein Taster 0 liefert wird sein Wert ins W-Register geschrieben.
clrw ;w-register löschen
bcf krow1 ;rb0=0
bsf krow4 ;rb4=1
bsf krow3 ;rb3=1
bsf krow2 ;rb2=1
call key1 ;rufe key1 auf
key1 btfss kline1 ;rb4=0 ? dann schreibe 1 ins w-register & zurück
retlw '1' ;rb4=1 ? dann prüfe rb5
btfss kline1 ;rb5=0 ? dann schreibe 4 ins w-register & zurück
retlw '4' ;rb5=1 ? dann prüfe rb6
btfss kline1 ;rb6=0 ? dann schreibe 7 ins w-register & zurück
retlw '7' ;rb6=1 ? dann prüfe rb7
btfss kline1 ;rb7=0 ? dann schreibe * ins w-register & zurück
retlw '*' ;rb7=1 ? dann nächste spalte
return
Soweit so gut, jedoch wird damit nur abgefragt welche Taster gerade
gedrückt wurde! Ich möchte aber gern 4 mal drücken und es sollen die 4
nacheinander gedrückten Tasten gemerkt werden.
---
Ich hab mir schon den Kopf zerbrochen und gegoogelt was das Zeug hält
aber ich komm net drauf. Habt ihr vielleicht noch ne Idee.
Im Bezug auf den umgang mit Mikrocontroller kenne ich mich aus, so das
ihr nicht mit einem absoluten Leihen auf diesem Gebiet zutun habt.
Schon mal Vielen Dank für eure Ideen & Vorschläge im Voraus
Gruß Rene