Zimno wypędziło mnie z lasu , czas na zabawę przy biurku . Potrzeba wymusiła stworzenie programiku obsługi klawiatury z zapisem wartości w zmiennej string i zwrócenie tej wartości do zmiennej dword.
Jeśli można napisać prościej chętnie skorzystam z podpowiedzi
Klawisz [ * ] kod 12 ...przenosi do podprogramu Zapis , po wprowadzeniu nowej wartości zapisujemy ponownie klawiszem [ * ] .
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m8def.dat"
- $crystal = 8000000
- $hwstack = 64
- $swstack = 64
- $framesize = 128
- Config Lcd = 20 * 4
- Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
- Cursor Off
- Config Kbd = Portd 'klawiatura 3x4
- '
- ' K K K X W W W W
- ' 1 2 3 1 2 3 4
- ' . . . . . . . .
- ' P P P P P P P P
- ' D D D D D D D D
- ' 0 1 2 3 4 5 6 7 pin PD.3 wolny
- Dim Klw As Byte , Pozycja As Byte
- Dim Znak As String * 1 , Wartosc As String * 10
- Dim Nowa_wart As Dword
- Skok:
- Cls
- Do
- Klw = Getkbd()
- Locate 1 , 1 : Lcd "Dec - " ; Nowa_wart ; " "
- Waitms 200
- If Klw = 12 Then : Goto Zapis : End If
- If Nowa_wart > 10000 Then : Locate 1 , 1 : Lcd " MAX wart 10000" , " " : Waitms 400 : Goto Zapis : End If
- Loop
- Zapis:
- Cls
- Locate 1 , 1 : Lcd "Nowe dane "
- Locate 2 , 1 : Lcd "Wpisz -"
- Wartosc = Space(10)
- Pozycja = 1
- Do
- Klw = Getkbd()
- If Klw <> 16 Then : Znak = Lookupstr(klw , Dta) : Pozycja = Pozycja + 1
- Insertchar Wartosc , Pozycja , Znak : Locate 2 , 8 : Lcd Wartosc ; " " : End If
- Waitms 200
- If Klw = 12 Then : Nowa_wart = Val(wartosc) : : Goto Skok : End If
- Loop
- Return
- Dta: '0.....1.....2.....3.....4.....5.....6.....7.....8.....9....10....11....12...13....14....15....16
- Data "1" , "2" , "3" , " " , "4" , "5" , "6" , "8" , "7" , "8" , "9" , " " , "*" , "0" , "# " , " " , " "
- 'Tablica zmodyfikowana na potrzeby mojej klawiatury 3x4 :-)