char contador=0;
void interrupt(void)
{
if(INTCON.T0IF)
{
// Recargo timer y borro flag, entra aca cada 0.05s
TMR0 = 60;
INTCON.T0IF = 0;
contador++;
if(contador==10)
{
//Entra aca cuando pasaron 0.5s
contador=0;
GPIO ^= 0x1; // Alterno el GPIO0
}
}
// En caso de tener otra interrupcion, es solo un ejemplo
if(INTCON.GPIF)
{
}
}
void main(void)
{
GPIO=0x00;
CMCON=0x07;
TRISIO = 0xFE; // GPIO0 como salida para test
OPTION_REG = 0b11010111;// Preescaler 1:256, Preescaler asignado a TMR0, Usa el oscilador interno
TMR0 = 60;
INTCON.T0IF = 0; // Limpio flag por las dudas
INTCON.T0IE = 1; // Habilito interrupcion
INTCON.GPIE = 1; // Habilito la interrupcion del puerto
INTCON.GIE = 1; // Habilito interrupciones globales
while(1)
{
}
}