/*--- Global clock ---*/
unsigned char seconds;
unsigned char minutes;
unsigned char hours;
/*--- Initialise Timer 1 ---*/
static void init_timer1(void)
{
T1CON = 0x30; /* Prescale 1:8 */
TMR1IF = 0;
TMR1IE = 1;
TMR1ON = 1;
seconds = 0;
minutes = 0;
hours = 0;
}
/*--- Interrupt vector ---*/
void interrupt isr(void)
{
static unsigned char five_mS = 0;
if(TMR1IF)
{
five_mS++;
if(five_mS >= 200){
seconds++;
five_mS = 0;
}
if(seconds >= 60){
seconds = 0;
minutes++;
}
if(minutes >= 60){
minutes = 0;
hours++;
}
TMR1ON = 0; /* Pre-load Timer 1 for 5mS interrupt frequency */
TMR1H = 0xfd;
TMR1L = 0x94;
TMR1ON = 1;
TMR1IF = 0;
}
}
/*--- End of File ---*/