Hola al parecer algo se me olvida, pero porque al simular este programa nunca logro entrar a las interrupciones de baja prioridad y solo puedo a la de alta , pero si presiono el boton de INT1 o INT2 , y despues quiero entrar a INT0 la interrupcion entra ahi pero ya no sale nunca
#define Leds PORTD
#define Conf_l TRISD
void config_Puertos(void);
void config_INTs(void);
void tarea_principal(void);
void tarea1(void);
void tarea2(void);
void tarea3(void);
void ISR_H(void);
void ISR_L(void);
///////////////////////////////////////////////////////////7
#pragma code prioridad_alta = 0X08
void high_vector (void)
{
_asm
goto ISR_H
_endasm
}
#pragma code
#pragma interrupt ISR_H
void ISR_H(void)
{
char conta=0;
if (INTCONbits.INT0IF==1)
{
while(conta<5)
{tarea1();conta++;Delay10KTCYx(30);
}
INTCONbits.INT0IF=0;
}
conta=0;
}
//////////////////////////////////////////////////////////////
#pragma code prioridad_baja = 0X0018
void low_vector (void)
{
_asm
goto ISR_L
_endasm
}
#pragma code
#pragma interruptlow ISR_L
void ISR_L(void){
if (INTCON3bits.INT2IF==1)
{char cont=0;
INTCON3bits.INT2IF=0;
while(cont<5)
{
tarea2();
cont++;Delay10KTCYx(30);
}
}
}
/////////////////////////////////////////////////////////////////////////
void main(void)
{
config_Puertos();
config_INTs();
INTCONbits.GIE=1;//permiso para interrumpir alta prioridad
while(1)
{
tarea_principal();
}
}
void config_Puertos(void)
{
ADCON1=0xff;
TRISD=0x00;
TRISBbits.TRISB0=1;
TRISBbits.TRISB2=1;
}
void config_INTs(void)
{
// INT0 de alta prioridad
INTCONbits.INT0IF=0;//Borra la bandera
INTCONbits.INT0IE=1;//PERmiso
INTCON2bits.INTEDG0=0;//Flanco de alta prioridad
//INT1 de baja prioridad
INTCON3bits.INT1IF=0;
INTCON3bits.INT1IE=1;
INTCON3bits.INT1IP=0;
INTCON2bits.INTEDG1=0;
//INT2 de baja prioridad
INTCON3bits.INT2IF=0;
INTCON3bits.INT2IE=1;
INTCON3bits.INT2IP=0;
INTCON2bits.INTEDG2=0;
}
void tarea_principal(void)
{
PORTD=0b11111111;
}
////////////////////////////////////
void tarea1(void)
{
PORTD=0b00000001;
}
///////////////////////////////////
void tarea2(void)
{
PORTD=0b00000010;
}
//////////////////////////////////
void tarea3(void)
{
PORTD=0b00000011;
}