Hola, estoy empezando a trabajar en ccs con interrupciones,por Rb0 y por rb4-rb7. Hice un programa sencillo que cambie el tiempo de parpadeo de 4 leds conectados al puerto a y un solo pulsador conectado a RB7. He simulado el programa paso a paso y cuando se activa la interrupción, el programa queda dentro de la interrupción del puerto y no sale y no puedo darme cuenta donde esta el error. Hice este mismo programa con la interrupción por RB0 y el programa funciona, cuando al programa quiero agregarle la interrupción de RB4-RB7 y trabajar con las dos, no hay forma que funcione, así que decidi realizar la rutina de RB4-Rb7 por separado. Si alguien tiene idea de donde esta el error agradecería que me avise. Gracias.
Aquí esta el código:
#include <16f873a.h>
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(b)
short cont=0;
long tiempo=1000;
//LLAMADA FUNCION INTERRUPCION
#INT_RB
void IntPortB4_7() // Solo esta conectado RB7-no es necesario identificar que pin fue el que cambio
{
if(cont==0)
{
cont=1;
tiempo=200;
}
else
{
cont=0;
tiempo=1000;
}
}
void main(void)
{
set_tris_a (0b00000000);
set_tris_b (0b11111110);
enable_interrupts(int_rb); //activar interrupcion rb4:7
enable_interrupts(GLOBAL); //activar interrupciones
for(;
{
delay_ms(tiempo);
output_a(255);
delay_ms(tiempo);
output_a(0);
}
}