Przerwanie

N

narithota

Guest
Cześć

Czy mogę używać GOTO oświadczenie, w przerwanie rutyny?

Przykładowy kod jest:

# include <REG51.H>

void ex0_isr (skreślony) przerywają 0
(

NASTĘPNE goto;

)

void main (void)

(

IT0 = 1 / / Konfiguracja przerwać 0 dla wchodzących na krawędzi / INT0 (P3.2)
EX0 = 1 / / Włącz EX0 Interrupt
EA = 1 / / Włącza Globalną Interrupt państwa bandery

While (1)
(
;; / * Przerwanie również wystąpić w tej pętli po tym należy Idź do następnej iteracji * /

)NASTĘPNE while (1)

(

;;

)

)
Zwykle przerywa również wystąpić w jednej pętli po excuting przerwania usługi rutynowe

Znowu dojść do samego loop.But moje użytkowanie jest przerwanie powinny pochodzić z jednej pętli po tym należy Idź do następnej iteracji, że jest, dlaczego tu iam pomocą GOTO nego państwa.

Mój kompilator pokazuje odłogowania o błędzie:INTEREX1CODE.C (14): C233 o błędzie: "NEXT": undefined etykiety

Dzięki

Pozdrowienia
Nari

 
Hi Nari,

spróbuj umieścić okrężnicy po etykiecie obok
Kod:NASTĘPNE while (1) / / <--- tu dwukropek ':' po następnym brakuje(;;)

 
Salam,

Nie, nie możesz użyć GOTO instrukcji, aby przejść do obszaru poza przerwania ISR.bo przerwanie będzie działać zawsze nie wróci na ISR dla prawidłowego zakończenia (np. pop zapisane rejestry ze stosu, które przechowywane je przed obsługiwac ISR)

Zamiast tego można wywołać funkcji wewnątrz ISR wykonać pewne zadanie i powrócić do ISR.

UWAGA: ISR muszą być małe i najszybciej jak to tylko możliwe.

Cześć

 
sfinks ma absolutną rację w tym ....

Cytat:

bo przerwanie będzie działać zawsze nie wróci na ISR dla prawidłowego zakończenia (np. pop zapisane rejestry ze stosu, które przechowywane je przed obsługiwac ISR)
 
Można również ustawić flagę wewnątrz ISR, a następnie sprawdzić go w pętli

Fire in the Wire

<img src="http://www.edaboard.com/images/smiles/icon_idea.gif" alt="Idea" border="0" />
 

Welcome to EDABoard.com

Sponsor

Back
Top