Que rapidez!
Probe eso antes, y me daba un fallo, por eso pense que lo hacia mal, pero ya he trasteado y si el modificador es como tu dices.
Pero cuando realizo el codigo que te indico abajo, me aparece por ejemplo
00:000:00:25
donde 25 son los segundos, los 00 situados a su izquierda los minutos, y todo lo anterior 00:000 no se porque sale.
Ademas, el reloj atrasa una barbaridad, en 2 minutos, ya se retrasa del orden de segundos y tampoco veo el porque.
Aqui adjunto el codigo....
/*//////////////////////////////////////////////////////////////////////////////
Este programa es un reloj con formato 24 horas que se muestra en
el LCD. Para el reloj se ha utilizado el temporizador TMR0.
//////////////////////////////////////////////////////////////////////////////*/
#include <16F877A.H> /* tipo de PIC */
#include <lcd.c>
#use delay( clock = 4000000 ) /* reloj de 4 MHz */
#fuses XT,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NODEBUG,NOLVP,NOCPD
#use fast_io(B)
//#include <Rutinas.h>
char cuenta_interrupciones=0;
char segundo=0;
char minuto=0;
char hora=0;
#int_rtcc
void interrupt(void)
{
cuenta_interrupciones++; // Incrementa la variable que cuenta las
// interrupciones
if(cuenta_interrupciones==250) // Si la cuenta ha llegado a 250 ha
// pasado 1 segundo
{
cuenta_interrupciones=0;
segundo++;
}
if(segundo>59)
{
segundo=0;
minuto++;
}
if (minuto>59)
{
minuto=0;
hora++;
}
if (hora>23)
hora=0;
set_rtcc(0x06); // interrupciones y recarga el timer
}
void main( void )
{
lcd_init();
setup_counters (RTCC_INTERNAL, RTCC_DIV_16); // Programacion TMR0
set_timer0(0x06); // Carga el valor del timer0
enable_interrupts(INT_RTCC); // Habilita interrupcion TMR0
enable_interrupts(GLOBAL); // Habilita las interrupciones
while(1)
{
lcd_gotoxy(5,1); // Posiciona el cursor del LCD en dicha posicion
printf(lcd_puts,"%02d",hora);
lcd_putc(":");
printf(lcd_puts,"%02d",minuto);
lcd_putc(":");
printf(lcd_puts,"%02d",segundo);
}
}