Jak wylacze przerwania to funkcja getkey dziala poprawnie, z przerwaniami nie wprowadza do zmiennej nowej wartosci.
WHY?
$regfile = "m128def.dat"
$crystal = 14745600
$baud = 19200
Config Timer1 = Timer , Prescale = 64
Enable Interrupts
Enable Timer1
On Timer1 Sectic 'co 1 sek
Config Lcd = 16 * 2
Config Lcdmode = Port
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , Rs = Portc.4 , E = Portc.5
Config Kbd = Porta , Debounce = 100 , Delay = 400
Config Pind.4 = Output
Buzzer Alias Portd.4
Dim B As Byte
Dim Key As Byte
Dim V As Byte
Dim X As Byte
Dim Y As Byte
Dim Z As Byte
Declare Sub Getkey(_data As Byte , Byval _limes As Byte , Byval _select As Byte)
b = 10
Buzzer = 1
Cls
main:
Key = 0
Locate 1 , 1
Lcd B
Do
Locate 1 , 1
Call Getkey(b , 24 , 0)
Loop Until Key = 15 Or Key = 12
Goto Main
sectic:
Timer1 = 3036
Buzzer = 0
Waitus 10
Buzzer = 1
Return
Sub Getkey(_data , _limes , _select)
'odzielenie dzisatek i jednosci do osobnych bajtow
Y = _data / 10 'dziesiatki
Z = Y * 10
Z = _data - Z 'jednosci
V = _limes / 10
X = V * 10
X = _limes - X
Cursor Blink
If V = 0 And _select = 1 Then Goto Midle_getkey
If Key = 15 Or Key = 12 Then Goto End_getkey
Do
Key = Getkbd()
Key = Lookup(key , Keydata)
Loop Until Key <= V Or Key = 15 Or Key = 14 Or Key = 12
If Key <= V Then Y = Key
Lcd Y
Midle_getkey:
If Key = 15 Or Key = 12 Then Goto End_getkey
If Y = V Then
Do
Key = Getkbd()
Key = Lookup(key , Keydata)
Loop Until Key <= X Or Key = 15 Or Key = 14 Or Key = 12
Else
Do
Key = Getkbd()
Key = Lookup(key , Keydata)
Loop Until Key <= 9 Or Key = 15 Or Key = 14 Or Key = 12
End If
If Key <= 9 Then Z = Key
Lcd Z
End_getkey:
_data = Z
Z = Y * 10
_data = _data + Z
Cursor Noblink
End Sub
Keydata:
Data 1 , 2 , 3 , 10 , 4 , 5 , 6 , 11 , 7 , 8 , 9 , 12 , 13 , 0 , 14 , 15 , 16
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ęProblem z przerwaniami ....
Moderatorzy:Jacek Bogusz, robertw, k.pawliczak, Moderatorzy
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 51 gości