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

zibi11
-
-
Posty:27
Rejestracja:20 paź 2003, o 17:16
Lokalizacja:net
klawiatura impulsowo

Postautor: zibi11 » 10 lis 2003, o 16:28

Witajcie Mam małego plisa :oops:

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

Awatar użytkownika
gruszek
-
-
Posty:178
Rejestracja:20 lis 2003, o 13:31
Lokalizacja:bytom

ech ech...

Postautor: gruszek » 21 lis 2003, o 16:40

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!

zibi11
-
-
Posty:27
Rejestracja:20 paź 2003, o 17:16
Lokalizacja:net

Postautor: zibi11 » 23 lis 2003, o 11:14

dzięki

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 61 gości