Anzeige:

Tastenfeld 3x4 Erkennung funktioniert nicht vollständig

Hier finden sie die archivierten Beiträge des alten PHPBB Forums von www.loetstelle.net

Tastenfeld 3x4 Erkennung funktioniert nicht vollständig

Von JM2807 am 24.07.2012 20:21

Ersteinmal ein herzliches Hallo an alle,

ich beschäftige mich erst seit einigen Wochen/Monaten mit der BASCOM-Programmierung (Atmega8). Ich fand den Beitrag "Kleiner Bascom AVR Kurs - 3x4 Tastenfeld" sehr interessant und kann diesen gleichzeitig für mein eigenes Projekt verwenden (Geschwindigkeitsmessgerät für Pfeile). Zur Zeit nutze ich das Buch von Roland Walter und versuche mir die Grundlagen und das Wissen anzueignen.
Da ich z.Z. meinen Urlaub geniesse, habe ich Zeit, mich intensiver mit der ganzen Thematik zu beschäftigen. Ich habe das Listing von o.g. Beitrag als Grundlage genommen und es etwas modifiziert. Für mich war es wichtig bei Verwendung des Tastenfeldes einen entsprechenden BCD-Code am Ausgang zu erreichen um dann später ein LCD anschließen zu können. Um unnötige Rückfragen zu vermeiden, habe ich das Listing unten angefügt.

Nun zu meinem Problem. Die Spalte 3 wird richtig erkannt und der entsprechende BCD Code der Tasten ausgegeben, aber bei den Spalten 1 und 2 keine Reaktion. Im Simulator funktioniert alles Bestens.
Ich wäre sehr froh, wenn ihr mir helfen könntet. Irgendwie komme ich nicht weiter und ich habe auch keine Idee, zumindest am Anfang nicht.

Nochmal vielen Dank

Jörg.
1]
'Ansteuerung Keypad 3x4
'Hardware: Atmega8 mit Versuchtsplatine
'
'Hinweis: Spalte 1-3 and PD0-2, Reihe 1-4 an PD3-7, PB0-3 Ausgang
'
'-----------------------------------------------------------------------------------
$regfile = "m8def.dat" 'ATmega8-Deklarationen
$crystal = 3686400
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 9600 'Quarz: 3,6864 MHz
'
Ddrd = Bits()
Ddrb = &HFF

Dim Keycode As Byte

Config Kbd = Portd
Do
Keycode = Getkbd()
Select Case Keycode
Case 16 : Portb = &H00
Case 0 : Portb = &H01
Case 1 : Portb = &H02
Case 2 : Portb = &H03
Case 4 : Portb = &H04
Case 5 : Portb = &H05
Case 6 : Portb = &H06
Case 8 : Portb = &H07
Case 9 : Portb = &H08
Case 10 : Portb = &H09
Case 12 : Portb = &H0A
Case 13 : Portb = &H0B
Case 14 : Portb = &H0C
End Select
Loop

End
1]

Fehler gefunden!

Von JM2807 am 24.07.2012 22:21

Das Problem hat sich erledigt. PD.0 und PD.1 waren noch durch die Serielle Schnittstelle blockiert.

Gruß Jörg

Anzeige: