Nein Getkbd läst sich nicht auf weniger konfigurieren ,nur auf 6 oder 7 Reihen.
Ignorier in Getkbd einfach die Tasten dieser Reihe.
servus leute
ich hab da ein problem mit dem 90S8515
auf dem portD ist die tastenmatrix mit KBD
es sind nur 7 ports belegt
den D.3 alias int1 würde ich gerne zum detecten eines externen interupts nutzen
problem getkbd debouncet ja alle 20ms den port
kann ich irgendwie den debounce auf dem nicht für kbd genutzten pin abschalten
mit ddrd=&B11111011 gehts nicht schon versucht
mit
disable int1
taste=getkbd()
enable int1
gehts auch nicht
der interrupt komt trotzdem
danke
irgendjemand ne idee
Nein Getkbd läst sich nicht auf weniger konfigurieren ,nur auf 6 oder 7 Reihen.
Ignorier in Getkbd einfach die Tasten dieser Reihe.
Gruß
Ratber
das hilft nicht weiter da das debounce dsignal mir den interrupt auslöst
werde wohl den port tauschen müssen
tasten an A und LCD an D dann sollte das problem gelöst sein
Verstehe ich jetzt nicht.......da das debounce dsignal mir den interrupt auslöst .......
Gib mal info wie du das Verschaltet hast.
Gruß
Ratber
ich vermute er meint, das er per Debounce n Unterprogramm
anspringt. Der Unterschied zwischen Int und Sub ist nicht
jedem geläufig
was er aber mit debounced mir alle x ms den Port meint erschließt
sich mir auch nicht.
und wie er den debounce abschalten will hängt mir auch zu hoch.
@magic33:
Empfehlung: Poste mal den Code, dann kann man Dir am effektivsten helfen.
Vor den Erfolg haben die Götter den Schweiß gesetzt
code ist unwichtig
ich hab meinen portd mit einer 4x3 tasten matrix belegt
die über getkbd() abgefragt wird
diese interne Bascom routine debounct den ganzen portd ist ja auch richtig
nun ist der d.3 der externe interrupt int1 am port noch frei NICHT mit TASTEN belegt
den würde ich gerne nutzen
Jedoch funzt das mit disable interupt
vor getKBD() und enable interrupt nach getKBD nicht
ich hab nun den externen int auf ein freien port an A gelegt und frag den
halt via timer interrupt ISR ab somit bin ich auch da wo ich hinwollte ohne internen Interrupt INT1
wollte nur wissen ob das möglich wäre die pins für interupt an portd zu nutzen wärend da die getkbd() subroutine läuft die alle 20ms den port debounced sind die interupts dann nutzlos da sich ja der portzustand ändert
vieleicht hatte ja das problem schon wer und konnte dafür eine lösung finden
MARK von Bascom hat die anregung aufgenommen und wird in einer zukünftigen version
wie bei LCD die benutzten pins bei getkbd als seperate config dem compiler übergeben
Danke
VORTEIL man kann eine 3x3 Tastatur nutzen ubnd hat die rest2Pins zur freien verfügung
bei 3x4 immerhin noch 1nen pin der kann entscheident sein
ich verstehe zwar nicht, was debounce mit Getkbd() zu tun hat, aber warum benutzt du nicht eine eigene Function, um die Tasten abzufragen ?wollte nur wissen ob das möglich wäre die pins für interupt an portd zu nutzen wärend da die getkbd() subroutine läuft die alle 20ms den port debounced sind die interupts dann nutzlos da sich ja der portzustand ändert
Getkbd macht nichts anderes als diese Function ...
Damit kann man dann jede Tastaturkombination benutzen.Code:$regfile = "8515def.dat" 'dimension a variable that receives the value of the pressed key Dim B As Byte Declare Function Keyboard()as Byte 'loop for ever Do B = Keyboard() 'die Werte von B entsprechen denen von "Getkbd()" Loop Function Keyboard Local K As Byte K = 16 'keine Taste gedrückt Portd = &B11110111 'außer Portd.3 alles auf High Ddrd = &B00000111 'Portb.0,1,2 = Ausgang, der Rest Eingang Portd = &B11110000 'Pullup aktivieren Waitus 5 '5µs warten If Pind.4 = 0 Then K = 0 If Pind.5 = 0 Then K = 4 If Pind.6 = 0 Then K = 8 If Pind.7 = 0 Then K = 12 Ddrd = &B11110000 'Portb.4,5,6,7 = Ausgang, der Rest Eingang Portd = &B00000111 'Pullup aktivieren Waitus 5 '5µs warten If Pind.0 = 0 Then K = K + 0 If Pind.1 = 0 Then K = K + 1 If Pind.2 = 0 Then K = K + 2 Keyboard = K End Function
Lesezeichen