ext-int-Problemes amb el C51

O

onde

Guest
Hola,

Acabo d'intentar Programm la següent:

# Pragma IntVector (0x8000)
# Include <reg517.h>

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

void main (void)
(
IT0 = 0;
EX0 = 1 / / Habilita EX0 d'interrupció
EAL = 1;
P4 = 0;

while (1)
(
)
)

El problema és que la Programm mai arriba P4 = 255;
Abans que em van tractar diferents temporitzador d'interrupció Programms, tots estan treballant bé, així que crec que uVision 2 està configurat correctament.

Algunes idees??

onde

 
hola,

No sé les 517 HW, de tota manera ....

1) s'està executant el temporitzador?

2) El registre TCON configurat?(Porta - C / T - ACC TR. Ecc.)
Last edited by crono el 19 febrer 2004 23:49, editat 1 cop en total

 
Hola, crec que pot buscar el codi de muntatge corresponents per veure si el compilador correctament compilar el codi font C vostè per escrit.

 
Ooops

Perdona, Et refereixes a interrupció externa per pin, jo estava equivocat .....

En qualsevol cas, ha d'establir

EA = 1;

per tal que les interrupcions .....

 
Òbviament, el problema es deu al fet que la instrucció

# Pragma IntVector (0x8000)

posarà al seu controlador d'interrupcions en la posició 0x8003 (en lloc de 0x0003, on el controlador d'interrupcions per ExtInt0 seria d'esperar)

CSEG AT 08003H
Ex0_isr LJMP

ex0_isr:
MOV P4, # 0xFF
Reti

Així doncs, quan la interrupció externa és trigered, l'Procesor no es troba en el lloc 0x0003 un gestor d'interrupcions (el més important no es troba una instrucció reti per continuar un funcionament suau), el que farà que el seu processador per executar wathever instruccions es troben en aquest lloc.
El resultat és la caiguda del sistema!!

Per aquest ús corect

# Pragma IntVector (0x0000)

 

Welcome to EDABoard.com

Sponsor

Back
Top