ext-int-Problem med c51

O

onde

Guest
Hei,

Jeg prøvde følgende Programm:

# pragma INTVECTOR (0x8000)
#
include <reg517.h>

void ex0_isr (void) avbruddsordrelinje 0
(
P4 = 255;
)

void main (void)
(
IT0 = 0;
EX0 = 1; / / Enable EX0 Interrupt
EAL = 1;
P4 = 0;

mens (1)
(
)
)

Problemet er at det Programm kommer aldri P4 = 255;
Før jeg prøvde forskjellige tidtaker-avbruddsordrelinje programms, de er alle fungerer bra, så jeg tror uVision 2 er riktig konfigurert.

Noen ideer?

onde

 
hei,

Jeg vet ikke de 517 HW, allikevel ....

1) Er tidtakeren Running?

2) Er TCON register konfigurert?(Gate - C / T - TR ecc. Ecc.)
Sist endret av crono
20. februar 2004 0:49, endret 1 gang totalt

 
hei, jeg tror du kan se etter tilsvarende montering koden for å se om kompilatoren riktig kompilerer c kildekoden du skrevet.

 
Ooops

Beklager, du mener eksterne avbruddsordrelinje av pin, Jeg var galt .....

Allikevel må du sette

EA = 1;

For å aktivere avbryter .....

 
Åpenbare, problemet er fordi undervisningen

# pragma INTVECTOR (0x8000)

vil sette avbruddsordrelinje handler på location 0x8003 (i stedet for 0x0003, hvor avbruddsordrelinje behandlingsprogram for ExtInt0 forventes)

CSEG AT 08003H
LJMP ex0_isr

ex0_isr:
MOV P4, # 0xFF
RETI

Så, når det ytre avbruddsordrelinje er trigered den procesor vil IKKE funnet sted 0x0003 en avbruddsordrelinje handler (viktigste ikke funnet en reti instruksjon å fortsette normal drift) som vil gjøre prosessoren til å utføre wathever vil finnes på denne plasseringen.
Resultatet er krasjet av systemet!

Slik corect dette bruk

# pragma INTVECTOR (0x0000)

 

Welcome to EDABoard.com

Sponsor

Back
Top