Una duda sobre interrupción externa INTRB0

Hola a todos, estoy haciendo un programa donde casi todo lo que hace el PIC16LF876A es a través del pin RB0,mi pregunta es si dentro de la interrupción externa puedo manejar variables globales para hacer comparaciones lógicas porque ya lo probé así y no funciona. Del otro modo, no uso la variable global y todo funciona bien, ademas de que compilo ambos programas sin ningún error, simplemente no me muestra nada en el puerto C si uso variables globales dentro de la interrupción. Aquí les va el fragmento del código:

Código:
int_EXT
unsigned int8 c=0; //variable global
void  EXT_isr(void)

++c;                      //incremento la variable global en cada interrupción
if (c<=150)             //si esa condición se cumple el if se ejecuta
  else                     //si no hace otra cosa, pero en ambos casos mando  
                            //datos al puerto C
if(c<255){
 
Última edición por un moderador:
Si fuera el compilador C18 de microchip, te diría que para usar una variable global dentro de una rutina de interrupción hay que declararla como "volatile":

volatile unsigned char c=0;

A lo mejor para ese compilador hay una declaración similar.
Saludos
 
Atrás
Arriba