Hallo Andreas,
Ich habe mir das mal angesehen und etwas vereinfacht.
Ich hoffe durch die Kommentare, verstehst du jetzt, warum die Spalten auf "0" gesetzt werden müssen.
Code:
Ddrd = &B10000100
Portd = &HFF
'bei den Eingängen Pullup's ein und Ausgänge auf high
Dim Spalte As Byte
Dim Zeile As Byte
Dim Taste As Byte
'Jetzt sind alle Portpins "1". Wenn eine Taste gedrückt wird passiert nichts!
Do
For Spalte = 0 To 1
'Deshalb wird jetzt jeweils 1 Spalte "0" gesetzt
If Spalte = 0 Then Reset Portd.2
If Spalte = 1 Then Reset Portd.7
For Zeile = 3 To 6
Select Case Zeile
'ist jetzt eine Taste gedrückt,wird der entsprechende Eingang auch "0"
Case 3 : If Pind.3 = 0 Then Taste = Spalte + 1
'Portd.2=0 und Pind.3=0 => Taste1 / Portd.7=0 und Pind.3=0 => Taste2
Case 4 : If Pind.4 = 0 Then Taste = Spalte + 3
'Portd.2=0 und Pind.4=0 => Taste3 / Portd.7=0 und Pind.4=0 => Taste4
Case 5 : If Pind.5 = 0 Then Taste = Spalte + 5
Case 6 : If Pind.6 = 0 Then Taste = Spalte + 7
End Select
Next
Portd = &HFF
Next
Locate 1 , 1
Lcd "Taste " ; Taste ; " gedrueckt"
Loop
End
Lesezeichen