#include <16f628.h>                    // Selecciona el PIC
#fuses XT,NOWDT,NOPROTECT,PUT,BROWNOUT // Opciones de configuración
#use delay(clock=4000000)              // Velocidad del Cristal : 4 Mhz

byte const NInts=30;                   // Numero de interrupciones para 1 Segundo

// VARIABLES GLOBALES

char C_Ints=0;                         // Contador de Interrupciones ocurridas
char Flag=0;                           // Flag que cambia cada NInts interrupciones


#int_RTCC                              // Interrupción por desbordamiento
RTCC_isr() {                           // del TIMER0 RTCC

  if(C_Ints > NInts){                  // Si las ints ocurridas > ints para 1 Seg.

    if(Flag==0){
      Flag=1;
    }
    else{
      Flag=0;
    }
    C_Ints=0;                          // Reinicializo Contador de Ints
  }
  ++C_Ints;                            // Incremento el número de interrupciones
}                                      // Ocurridas



void main(void) {

  setup_counters(RTCC_INTERNAL,RTCC_DIV_128);// TIMER0: Clock Interno, Presescaler 128
  setup_timer_1(T1_DISABLED);                // para una RTCC cada 33.3 milisegundos
  setup_timer_2(T2_DISABLED,0,1);            // -> 1 Segundo = 30 RTCC
  setup_comparator(NC_NC_NC_NC);
  setup_vref(FALSE);
  enable_interrupts(INT_RTCC);               // Habilito Interrupción RTCC
  enable_interrupts(global);                 // Habilito Interrupciones



  do{ // Bucle infinito

    if(Flag==K){}
    else
    {                                        // si ha cambiado Flag ...

      // AQUI HAGO LO QUE DESEE CADA 1 SEGUNDO
      k=Flag;                                // Guardo estado anterior de Flag
    }

  }While(TRUE);
}

