Witajcie Mam małego plisa
mam pytanie
zrobiłem klawiature natrycową na 2 pcf
zrobiłem sobie proste menu 3 klawisze
enter up i cancel sterowane 1dynką
pytanie jest takie
Sub Sekcja1
If Value1 = 253 Then
Enter = 1
End If
If Value1 = 251 Then
Down = 1
End If
idzie o to że po naciśnięciu klawisza np enter matrycy
stan jedynki jest cały czas zapaniętywany
i program zachowuje się jakbym cały czas trzymał enter przechodzi
po jednym kliknięciu całe menu
chodzi o to żeby klawisze działały impulsowo
jak zwykłe przyciski
$regfile = "8515def.dat"
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config Lcd = 24 * 2
Cursor Off Noblink
Config Sda = Porta.1
Config Scl = Porta.0
Dim Value1 As Byte
Dim Value2 As Byte
Declare Sub Sekcja1
Declare Sub Sekcja2
Dim Enter As Byte
Dim Down As Byte
Dim Cancel As Byte
Dim Napis_1_linia As String * 20
Dim Napis_2_linia As String * 20
Const Podmenu1 = " Podmenu 1"
Const Podmenu2 = " Podmenu 2"
Const Podmenu3 = " Podmenu 3"
Const Podmenu4 = " Podmenu 4"
Declare Sub Menu
Declare Sub Podmenu_1
Declare Sub Podmenu_2
Declare Sub Podmenu_3
Declare Sub Podmenu_4
Declare Sub Podmenu_5
Do
I2csend 112 , 255
I2csend 114 , 255
I2creceive 113 , Value1
If Value1 <> 255 Then
Call Sekcja1
End If
I2creceive 115 , Value1
If Value1 <> 255 Then :
Call Sekcja2
End If
Xx:
Cls
Lcd "Program Główny"
Waitms 300
If Enter = 1 Then
Gosub Podmenu_1
End If
Loop
Sub Podmenu_1
Do
Yy:
Cls
Lcd Podmenu1 ; "--dawaj"
Lowerline
Lcd Podmenu2
Waitms 300
If Down = 1 Then
Gosub Podmenu_4
End If
If Enter = 1 Then
Gosub Podmenu_3
End If
If Cancel = 1 Then
Goto Xx
End If
Loop
End Sub
Sub Podmenu_3
Do
Cls
Lcd "jestes w pod3"
Waitms 300
If Cancel = 1 Then
Goto Yy
End If
Loop
End Sub
Sub Podmenu_4
Do
Cls
Lcd Podmenu2 ; "--dawaj"
Lowerline
Lcd Podmenu1
Waitms 300
If Enter = 1 Then
Gosub Podmenu_5
End If
If Cancel = 1 Then
Goto Yy
End If
Loop
End Sub
Sub Podmenu_5
Do
Cls
Lcd "jestes w pod5"
Waitms 300
If Cancel = 1 Then
Goto Yy
End If
Loop
End Sub
Sub Sekcja1
If Value1 = 254 Then
Value1 = 1
End If
If Value1 = 253 Then
Enter = 1
End If
If Value1 = 251 Then
Down = 1
End If
If Value1 = 247 Then
Cancel = 1
End If
If Value1 = 239 Then
Value1 = 4
End If
If Value1 = 223 Then
Value1 = 5
End If
If Value1 = 191 Then
Value1 = 6
End If
If Value1 = 127 Then
Value1 = 1
End If
End Sub
Sub Sekcja2:
If Value1 = 254 Then
Value1 = 2
End If
If Value1 = 253 Then
Value1 = 3
End If
If Value1 = 251 Then
Value1 = 10
End If
If Value1 = 247 Then
Value1 = 11
End If
If Value1 = 239 Then
Value1 = 12
End If
If Value1 = 223 Then
Value1 = 13
End If
If Value1 = 191 Then
Value1 = 14
End If
If Value1 = 127 Then
Value1 = 15
End If
End Sub
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięklawiatura impulsowo
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
ech ech...
glowny problem tkwi w tym ze jak sprawdzi klawisze to robi potem cala mase rzeczy i nie sprawdza w tym czasie co sie z nimi dzieje.
ale to i tak moze dzialac pod wrunkiem, ze zmienisz tu:
Sub Sekcja1
If Value1 = 254 Then
Value1 = 1
End If
If Value1 = 253 Then
Enter = 1
End If
If Value1 = 251 Then
Down = 1
End If
If Value1 = 247 Then
Cancel = 1
End If
przyjmijmy ze program dojechal do sekcji_1 i bylo enter=1
jak za drudim razem dojedzie a klawisz byl cancel=1
to jest nastepny blad bo wychodzi ze enter=1 i cancel=1
powinno byc tak:
if value 1=253 then
enter=1
cancel=0
costam=0
inny1=0
jakistam=0
end if
zeby reszte zerowal.
to bylo po pierwsze.
po drugie:
po kazdej procedurze sprawdzaj klawiert - moze troche spowolni program ale bedzie dobrze reagowalo na nacisniecia i jak wcisniesz klawisz to bedzie sie tyczyl jednej procedury a u ciebie jest tak ze w zmiennej siedzi 1 i wszystkie procedury co ja sprawdzaja mysla ze jest nacisniety klawisz
po trzecie (najwazniessze):
! ! ! ! ! ROB KOMETAZE ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
pomozesz sobie i innym ;]
pozdrawiam!
ale to i tak moze dzialac pod wrunkiem, ze zmienisz tu:
Sub Sekcja1
If Value1 = 254 Then
Value1 = 1
End If
If Value1 = 253 Then
Enter = 1
End If
If Value1 = 251 Then
Down = 1
End If
If Value1 = 247 Then
Cancel = 1
End If
przyjmijmy ze program dojechal do sekcji_1 i bylo enter=1
jak za drudim razem dojedzie a klawisz byl cancel=1
to jest nastepny blad bo wychodzi ze enter=1 i cancel=1
powinno byc tak:
if value 1=253 then
enter=1
cancel=0
costam=0
inny1=0
jakistam=0
end if
zeby reszte zerowal.
to bylo po pierwsze.
po drugie:
po kazdej procedurze sprawdzaj klawiert - moze troche spowolni program ale bedzie dobrze reagowalo na nacisniecia i jak wcisniesz klawisz to bedzie sie tyczyl jednej procedury a u ciebie jest tak ze w zmiennej siedzi 1 i wszystkie procedury co ja sprawdzaja mysla ze jest nacisniety klawisz
po trzecie (najwazniessze):
! ! ! ! ! ROB KOMETAZE ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
pomozesz sobie i innym ;]
pozdrawiam!
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 68 gości