Os pongo aquí el menu que hize para configurar mis programillas por si os es de utilidad:
#byte pb =0xF81
#bit t_ok =pb.0 // RB0, pin21
#bit t_mas =pb.1 // RB1, pin22
#bit t_mns =pb.2 // RB2, pin23
#byte intcon =0xFF2
#byte intcon3 =0xFF0
#bit intf =intcon.1
#bit intf1 =intcon3.0
#bit intf2 =intcon3.1
#INT_EXT
menu()
{
disable_interrupts(GLOBAL);
disable_interrupts(INT_EXT);
disable_interrupts(INT_EXT1);
disable_interrupts(INT_EXT2);
delay_ms(300);
testado=0;
lcd_putc("f");
lcd_gotoxy(1,1);
lcd_putc("1 OPCION1");
lcd_gotoxy(1,2);
lcd_putc("2 OPCION2");
lcd_gotoxy(1,3);
lcd_putc("3 OPCION3");
lcd_gotoxy(1,4);
lcd_putc("OPCION :");
for(i=0;i!=255;i++)
{
delay_ms(20);
lcd_gotoxy(11,4);
printf(lcd_putc,"%u",testado);
if (!t_ok){delay_ms(300); break;}
else if (!t_mas){i=0; delay_ms(300); testado++; if(testado>3){testado=0;};}
else if (!t_mns){i=0; delay_ms(300); testado--; if(testado==255){testado=3;};}
};
if(testado==0)
{
intf=0; intf1=0; intf2=0;
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
enable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT2);
lcd_putc("f");
break;
}
else if(testado==1){OPCION1(); lcd_putc("f");}
else if(testado==2){OPCION2(); lcd_putc("f");}
else if(testado==3){OPCION3(); lcd_putc("f");}
}
En mi caso utilizo un 18F2520 y me interesa que las interrupciones se activen al pulsar las teclas que están en el puertoB... supongo q no hay problemas para entender como funciona... ocupa bastante poco en rom y el código se queda "limpito"
un saludo!