Witam wszystkich
Mam mały problem z obsługą klawiatury 4x4(jest to kit avt2503/2). Problem polega na tym, że napisałem program, który wyświetla mi jaki klawisz został wciśnięty(0-9, A-F), ale chciałbym wprowadzać konkretne liczby np.1234 oraz zapisanie tej liczby do jakiejś zmiennej i zupełnie nie wiem jak to "ugryźć" czytałem wiele na forach i tutaj, ale nie znalazłem konkretnej odpowiedzi na mój problem. Oto mój kod:
Mam mały problem z obsługą klawiatury 4x4(jest to kit avt2503/2). Problem polega na tym, że napisałem program, który wyświetla mi jaki klawisz został wciśnięty(0-9, A-F), ale chciałbym wprowadzać konkretne liczby np.1234 oraz zapisanie tej liczby do jakiejś zmiennej i zupełnie nie wiem jak to "ugryźć" czytałem wiele na forach i tutaj, ale nie znalazłem konkretnej odpowiedzi na mój problem. Oto mój kod:
$regfile = "m8def.dat"
$crystal = 16000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Rs = Portc.5 , E = Portc.4 , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0
Cls
Config Scl = Portb.0
Config Sda = Portb.1
Cursor Off
Dim Value As Byte 'wartosc odczytana z klawiatury
Dim X As Byte
Dim Valuehex As String * 2 'wartosc odczytana w hex
Dim Y As Byte
Declare Sub Sekcja1
Declare Sub Sekcja2
Declare Sub Czysc
Declare Sub Odczyt
Declare Sub Glowny
Declare Sub Czekanie
Config Pind.3 = Input
Config Pind.4 = Input 'odczyt
Config Portb.2 = Output 'dioda
Config Portb.3 = Output 'sygnalizacja zapisu do pamieci
Const Addressw = 160 'adres zapisu do pamieci
Const Addressr = 161 'adres odczytu z pamieci
Enable Int0
On Int0 Glowny
Config Int0 = Low Level
Enable Interrupts
Sub Czekanie:
Enable Interrupts
Lcd "oczekiwanie..."
End Sub
Sub Glowny:
Disable Interrupts
Cls
I2csend 112 , 255
I2csend 114 , 255
I2creceive 112 , Value
If Value <> 255 Then
Call Sekcja1
Valuehex = Hex(value)
Locate 1 , 1
Lcd Value
Wait 5
Cls
If X = 191 Then
Call Czysc
Return
End If
End If
I2creceive 114 , Value
If Value <> 255 Then
Call Sekcja2
Valuehex = Hex(value)
Locate 1 , 1
Lcd Value
Wait 5
Cls
If X = 191 Then
Call Czysc
Return
End If
End If
End Sub
Sub Sekcja1:
Disable Interrupts
Select Case Value
Case 254:
Value = 12
Case 253:
Value = 13
Case 251:
Value = 3
Case 247:
Value = 2
Case 239:
Value = 14
Case 223:
Value = 6
Case 191:
Value = 5
Case 127:
Value = 15
X = Value
End Select
End Sub
Sub Sekcja2:
Disable Interrupts
Select Case Value
Case 254:
value = 9
Case 253:
Value = 8
Case 251:
Value = 7
Case 247:
Value = 0
Case 239:
Value = 4
Case 223:
Value = 11
Case 191:
Value = 10
Case 127:
Value = 1
X = Value
End Select
End Sub
Sub Czysc:
Cls
Call Czekanie
End Sub