Boa noite caros colegas de fórum, já li as postagens de outros colegas sobre o DS1307, vi um tutorial que um colega tbm postou mas não há meio de funcionar um exemplo que estou tentando montar, peço os colegas que já programaram para dar uma olhada no código abaixo e me apontar o detalhe que esta faltando ou que cometi de errado.
O DS esta ligado ao pic e um lcd a hora que mando exibir as informações da hora, minuto, segundo no display ele mostra mas fica tudo travado
ex: 31:63:27
os segundos, minutos não atualizam.
Quem puder de dar uma ajuda, agradeço.
Obrigado
Segue o código abaixo:
#use i2c(Master,sda=PIN_c4,scl=PIN_c3, SLOW, RESTART_WDT, FORCE_HW)
//-------------------------------------------------------------------------------------
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*CONFIGURAÇÕES DO MICROCONTROLADOR *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void main()
{
char sec;
char min;
char hrs;
char day;
char date;
char month;
char yr;
set_tris_a(0b11111111);
set_tris_b(0b00000000);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b00000000);
porta=0x00;
portb=0x00;
portc=0x00;
portd=0x00;
porte=0x00;
inicializa_lcd();
relogio();
i2c_start();
i2c_write(0xD0);
i2c_write(0);
i2c_write(0x56);
i2c_write(0x34);
i2c_write(0x12);
i2c_write(0x01);
i2c_write(0x26);
i2c_write(0x01);
i2c_write(0x07);
i2c_write(0x10);
i2c_stop();
delay_ms(10);
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*LOOP PRINCIPAL *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
while(true)
{
RESTART_WDT();
i2c_start();
i2c_write(0xD0);
i2c_write(0);
i2c_start();
i2c_write(0xD1);
sec = i2c_read();
min = i2c_read();
hrs = i2c_read();
day = i2c_read();
date= i2c_read();
month= i2c_read();
yr= i2c_read(0);
i2c_stop(); ;
comando_lcd(0xc0);
printf(escreve_lcd, "\%i:\%02d:\%02d", hrs, min, sec);
delay_ms(1000);
}
}