Segun se visualicen los digitos puedes programarlo de una manera o de otra, supongo que se incrementa de 1 en 1 hasta llegar a 9999 por lo tanto la forma mejor que veo es mediante interrupciones, yo hice algo igual con interrupciones. La formula de desbordamiento del timer0 para er 16F84 es:
Temporizacion = Tcm · Prescaler · (256-Carga TMR0)
Tcm= 4 · 1/f ; f=frecuencia del oscilador
.
.
.
declaracion constante_minuto=160 ;en caso que desbordemos el tmr0 cada 0.5s
declaracion contador_minuto=0
funcion interrupcion
if(contador_minuto=constante_minuto)
->Si, actualiza indices, contador_minuto=0
->No, contador_minuto++
carga tmr0
fin interrupcion
programa
.
.
.
fin programa
Mediante la formula saca la maxima temporizacion que puede soportar el timer0 y apartir de ahi puedes utilizar una instruccion tipo if y un flag para ver si ha pasado un minuto como requieres, es decir, puedes obtener una temporizacion de 0,5 s (cada 0.5s se llamaria a la funcion de interrupcion) cuando entre en la funcion de interrupcion, se encontrara con el if(contador_minuto>constante_minuto), si es mayor es que ya es un minuto por lo tanto entra en la funcion y actualiza indices, si no es mayor no entra en funcion del if y carga de nuevo el tmr0 y actualiza flag de contador_minuto y sale de la funcion de interrupcion para volver al programa. La constante_minuto debe cargarse acorde a las veces que tiene que entrar en la funcion de interrupcion, si hemos dicho que el tmr0 se desborda cada 0,5s quiere decir que entrando 2 veces en la interrupcion habran transcurrido 1s, si 1min tiene 60s tendra que entrar en la interrupcion 120 veces para actualizar indices cada minuto. Parece algo lioso pero programando es facil. Suerte y a programar!!!