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 ....

kpw
-
-
Posty:15
Rejestracja:4 wrz 2003, o 12:56
Problem z przerwaniami ....

Postautor: kpw » 20 gru 2003, o 23:55

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

kpw
-
-
Posty:15
Rejestracja:4 wrz 2003, o 12:56

Postautor: kpw » 22 gru 2003, o 18:19

Nieaktualne !!!
Sam sobie poradzilem!

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 73 gości