externer interrupt 8051

Aug 18, 2004 2 Replies

Hallo,



plage mich immer noch mit dem 8051er... ;-) (ja, ich muß den verwenden, leider *grml*)



Habe ein kleines Testprogramm für externe Interrupts das nicht funktioniert :-|



#include #include



unsigned char ex0_isr_counter = 0;



void interrupt ex0_isr (void) {



P3b.B3=FALSE; }


void main (void) {



/*----------------------------------------------- Configure INT0 (external interrupt 0) to generate an interrupt on the falling-edge of /INT0 (P3.2). Enable the EX0 interrupt and then enable the global interrupt flag.



-----------------------------------------------*/ IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2) EX0 = 1; // Enable EX0 Interrupt EA = 1; // Enable Global Interrupt Flag



while (1) { } }



Hat jemand eine Idee, warum???? *nixmehrversteh*



Ich hab eine Ziffer hinter dem keyword "interrupt" entfernt, weil der compiler gemault hat... ist die vielelicht schuld dran? Für was ist diese Ziffer?



LG Simone


Simone Winkler wrote: : Hallo,

: plage mich immer noch mit dem 8051er... ;-) (ja, ich muß den verwenden, : leider *grml*)

: Habe ein kleines Testprogramm für externe Interrupts das nicht funktioniert : :-|

: #include : #include

: unsigned char ex0_isr_counter = 0;

: void interrupt ex0_isr (void) : {

: P3b.B3=FALSE; : }

: void main (void) : {

: /*----------------------------------------------- : Configure INT0 (external interrupt 0) to generate : an interrupt on the falling-edge of /INT0 (P3.2). : Enable the EX0 interrupt and then enable the : global interrupt flag. : -----------------------------------------------*/ : IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2) : EX0 = 1; // Enable EX0 Interrupt : EA = 1; // Enable Global Interrupt Flag

: while (1) : { : } : }

: Hat jemand eine Idee, warum???? *nixmehrversteh*

: Ich hab eine Ziffer hinter dem keyword "interrupt" entfernt, weil der : compiler gemault hat... ist die vielelicht schuld dran? Für was ist diese : Ziffer? Die gibt an, welchen der Interupts (der 8051 hat mehrere davom) du verwenden willst. Der Compiler kann ja nicht ahnen, daß du EX0 (Vektor Adresse 03) verwenden willst, nur weil du die ISR ex0_isr nennst. Welchen Compiler verwendest du? Ich nehme an SDCC, denn der Keil Compiler versteht die Ziffer laut Beispiel auf

formatting link
Sag uns bitte, was genau du bezwecken willst.

: LG : Simone

Unter sdcc deklariert man einen interrupt so wobei die 0 die Vektornummer angibt. 0=erster vektor eben ex0

void iex0 (void) interrupt 0 { }

MFG Gernot

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required