..Bueno, yo desde hace mucho trabajo con programas que utilizan control de tiempo, trabajando con displays de 7 segmentos y ahora con GLCD.
Para el reloj de los programas siempre he usado la interrupcion por tmr0 configurandola de tal modo q puede contar los segundos, minutos y horas casi perfecto, hay muchas cosas q pueden hacer q varie pero la diferencia con el tiempo real es muy minima, dificil de notar.
Porque no pruebas con la interrupcion de TMR0, a mi siempre me a funcionado bien (^_^).
Dejo una imagen de lo q seria el diagrama para contar segundos y minutos. Usa el calculador de tiempo en el menu "Herramientas" del Niple para configurar el TMR0, si quieres puedes ir cambiando los valores de incremento de TMR0 para que quede lo mas exacto posible, mucha suerte (^_^).