/************************************************************************ / Funcao de tratamento de Interrupcoes de baixa prioridade /************************************************************************/ void interrupt low_priority InterrupcaoBAIXA (void) { //************************************************************* // TMR1 para Real Time Clock //************************************************************* if ((TMR1IF == 1) && (TMR1IE == 1)) { TMR1 = 0x8000; //activa o bit 15, para fazer apenas 1s de overflow TMR1IF = 0; //flag de interrupcao de TMR1 segundos++; //incrementa os segundos if (segundos == 60) //testa se passaram 60seg { segundos = 0; //limpa segundos minutos++; //incrementa os minutos if (minutos == 60) //testa se passaram 60min { minutos = 0; //limpa minutos horas++; //incrementa as horas if (horas == 24) //testa se passaram 24horas { horas = 0; //limpa as horas }//horas }//minutos }//segundos }//if ((TMR1IF == 1) && (TMR1IE == 1)) } //Configura TMR1 TMR1 = 0x8000; //inicializa o contador, periodo de 1 seg T1CON = 0b10001111; //16-bit, clock de cristal 32k externo, 1:1, liga oscilador driver, clock do pino RC0, liga TMR1 TMR1IP = 0; //baixa prioridade de interrupcao TMR1IF = 0; //Limpa Flag Overflow TMR1IE = 1; //Liga Interrupcoes TMR1