externer interrupt 8051

S

Simone Winkler

Guest
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 <80c552.h>
#include <lcd.h>

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 <simone.winkler@gmx.at> 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 <80c552.h>
: #include <lcd.h>

: 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
http://www.phaedsys.demon.co.uk/chris/8051/8051interupts.htm
Sag uns bitte, was genau du bezwecken willst.


: LG
: Simone
 
In article <r0EUc.14645$N77.607632@news.xtra.co.nz>,
"Simone Winkler" <simone.winkler@gmx.at> writes:
void interrupt ex0_isr (void)
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
 

Welcome to EDABoard.com

Sponsor

Back
Top