Interrupt

N

narithota

Guest
Hej

Kan jeg bruge GOTO erklæring i interrupt rutine?

Eksempel-kode er:

# include <REG51.H>

void ex0_isr (void) afbryder 0
(

goto next;

)

void main (void)

(

IT0 = 1; / / Configure afbryder 0 for faldende kant på / INT0 (P3.2)
EX0 = 1; / / Aktiver EX0 Interrupt
EA = 1; / / Aktiver Global Interrupt Flagstatsdata

Mens (1)
(
;; / * Afbryder godt opstå i denne løkke efter at det bør Gå til næste loop * /

)NEXT while (1)

(

;;

)

)
Normalt afbryde godt opstå i en løkke efter excuting at afbryde tjenesten rutine

Igen det meget vel komme til samme loop.But min brug er afbryder bør komme i en løkke efter, at det bør Gå til næste sløjfe det er derfor, her IAM hjælp GOTO tilstand ment.

Min compiler viser braklægning fejl:INTEREX1CODE.C (14): error C233: 'NEXT': undefined label

Tak

Hilsen
Nari

 
Hi Nari,

prøv at sætte et kolon efter næste etiket
Kode:NEXT mens (1) / / <--- Her kolon ":" efter næste mangler(;;)

 
Salam,

Nej du kan ikke bruge GOTO instruktion til at springe til området uden afbryde ISR.fordi de afbryder vil være aktive for evigt vil ikke vende tilbage til ISR for korrekt slutter (for eksempel pop de gemte registre fra stakken, der er gemt dem, før håndtere dine ISR)

I stedet kan du kalde funktionen inde ISR til at gøre bestemte job og vende tilbage til ISR.

BEMÆRK: Din ISR skal være små og hurtigt som muligt, som du kan.

Farvel

 
sphinx har fuldstændig ret i dette ....

Citat:

fordi de afbryder vil være aktive for evigt vil ikke vende tilbage til ISR for korrekt slutter (for eksempel pop de gemte registre fra stakken, der er gemt dem, før håndtere dine ISR)
 
Du kan også sætte et flag inde i ISR og derefter kontrollere, om det i de vigtigste loop

Brand i Wire

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

Welcome to EDABoard.com

Sponsor

Back
Top