externer interrupt 8051

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

Reply to
Simone Winkler
Loading thread data ...

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

Reply to
Peter Heitzer

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
Reply to
Gernot Fink

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.