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ę

89C2051 i przerwania

awojcick
-
-
Posty:3
Rejestracja:1 cze 2004, o 09:34
89C2051 i przerwania

Postautor: awojcick » 12 sie 2004, o 10:02

'-------------------------------
Dim W As Bit , U As Bit , Li As Byte , S As Byte
'------------------------------
Enable Interrupts
Set Tcon.0
Set Tcon.2
Enable Int0
Disable Int1
Set W
Set U
Li = 50
Reset Sbuf
On Int0 Licznik
On Int1 Transmisja
'---------------------
Do
Loop
'----------------------
Licznik:
If P3.7 = 0 Then
If U = 1 Then
W = 0
Enable Int1
End If
Else
U = 1
End If
Return
'--------------------
Transmisja:
S = Peek(Li)
Printbin S
Incr Li
If Li > 56 then
Disable int1
U = 0
W = 1
Li =50
End If
Return
'---------------------

Witam grupowiczów narzekacie, że nikt si e o nic nie pyta, postanowiłem to
zmienić. Napisałem taki programik jak wyżej. Przerwanie Int0 co 1s, Int1
generuję przyciskiem. Wszystko wykonuje się tak jak należy z małym
wyjątkiem: pierwsze naciśnięcie przycisku P3.7 ok wystąpienie przerwań Int1
powoduje wysłanie 7 bajtów do portu szeregowego. Problem zaczyna się przy
każdym następnym naciśnięciu przycisku, otóż po naciśnięciu przycisku P3.7 w
momencie wystąpienia przerwania Int0 jest wysyłany 1 Bajt, następne są
wysyłane dopiero po wystąpieniu INT1.

GasM
-
-
Posty:92
Rejestracja:4 lut 2004, o 11:57

Postautor: GasM » 13 sie 2004, o 10:03

nie zrozumiałem opisu, ale pierwszy błąd to nie wysyłaj przez RS w przerwaniu INT.
o ile pamiętam to RS ma mniejszy priorytet od INT, a więc musi wyjść z przerwania INT żeby wykonać transmisje.

napisz tak:

dim wysylaj as bit

Transmisja:
disable INT1
set wysylaj
Return

a w głównym:

do

if wysylaj=1 then
S = Peek(Li)
Printbin S
Incr Li
If Li > 56 then
clr wysylaj
U = 0
W = 1
Li =50
End If
End If
loop

powinno chodzić

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