funciona muy bien, la interrupcion es externa int0, int1 o int2 (18f452)
no confundas la habilitacion de la interrupcion con la seleccion del flaco
activo, no es lo mismo.
por ejemplo
/*****rutinas de atencion a las interrupciones: *****/
#INT_EXT
void irq_modo(void){
//antirebotes
delayantirebotes();
modo = modo + 0x01;
if(modo>0x02){
modo = 0x00;
}
}
#INT_EXT1
void irq_mas(void){
//antirebotes
delayantirebotes();
if(modo = 0x02){
notabase = notabase + 1;
if(notabase>453){
notabase = 453;
}
}
}
#INT_EXT2
void irq_menos(void){
//antirebotes
delayantirebotes();
if(modo = 0x02){
notabase = notabase - 1;
if(notabase<427){
notabase = 427;
}
}
}
//*********************programa principal**********************/
// programa principal
void main(void){
//inicializamos pic
inipic();
//inicializamos variables
modo = 0x02;
notabase = 440;
//inicializamos lcd
inilcd();
/***********habilitamos interrupcion********************/
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
enable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT2);
/*********seleccionamos flaco activo *************/
ext_int_edge(0, H_TO_L);
ext_int_edge(1, H_TO_L);
ext_int_edge(2, H_TO_L);
dios mio hasta funciona
![Rebotado Rebotado]()
![Rebotado Rebotado]()
![Rebotado Rebotado]()
![Rebotado Rebotado]()