mam klawiaturke x-y i próbuję z niej z czytywać stan wszystko wygląda nawet ok z jednym małym szkopułem klawisze 2 i 3 dają ta sama wartość
Kod: Zaznacz cały
$regfile = "m32def.dat"
$crystal = 3686400
$hwstack = 128
$swstack = 128
$framesize = 64
Dim Klawisz As Byte , A As Byte
Czerwona Alias Portc.7
Masa Alias Portc.5
Elektromagnes Alias Portc.4
Kolumna3 Alias Portd.7
Kolumna1 Alias Portd.5
Kolumna2 Alias Portd.2
Wiersz1 Alias Pind.1
Wiersz2 Alias Pind.3
Wiersz3 Alias Pind.4
Wiersz4 Alias Pind.6
Config Pind.7 = Output
Config Pind.5 = Output
Config Pind.2 = Output
Config Pind.1 = Input
Config Pind.3 = Input
Config Pind.4 = Input
Config Pind.6 = Input
Config Pinc.5 = Output
Config Pinc.7 = Output
Portd = &B11111110
Set Masa
Wait 1
Reset Masa
Do
Klawisz = 16
Set Kolumna1
If Wiersz1 = 1 Then
Klawisz = 1
Elseif Wiersz2 = 1 Then
Klawisz = 4
Elseif Wiersz3 = 1 Then
Klawisz = 7
Elseif Wiersz4 = 1 Then
Klawisz = 10
Else
End If
Reset Kolumna1
Set Kolumna2
If Wiersz1 = 1 Then
Klawisz = 2
Elseif Wiersz2 = 1 Then
Klawisz = 5
Elseif Wiersz3 = 1 Then
Klawisz = 8
Elseif Wiersz4 = 1 Then
Klawisz = 0
Else
End If
Reset Kolumna2
Set Kolumna3
If Wiersz1 = 1 Then
Klawisz = 3
Elseif Wiersz2 = 1 Then
Klawisz = 6
Elseif Wiersz3 = 1 Then
Klawisz = 9
Elseif Wiersz4 = 1 Then
Klawisz = 11
Else
End If
Reset Kolumna3
If Klawisz <> 16 Then
For A = 1 To Klawisz
Set Masa
Waitms 500
Reset Masa
Waitms 500
Next A
End If
Loop
na PCB linie podpięte do "wierszy" są podciągnięte 10k do masy
dodam tylko ze jak sprawdzam każdą kolumnę z osobna wszystko jest ok