Hola tengo un problema quiero hacer funcionar este IC RTC DS1307 con un pic 16f887 y una pantalla lcd solo quiero mostrar la hora en la pantalla pero no se que esta mal en mi programa si alguien me pudiera dar una mano, en la pantalla solo sale: TIME 0:0:0 y no cambia los segundos ayuda porfa, gracias.
unsigned short bcdtoshort(unsigned short bcd){
unsigned short lv,hv;
lv=bcd&0x0f;
hv=(bcd>>4)&0x0f;
return lv+hv*10;
}
void main() {
unsigned short seg,min,hor;
char time[6];
ANSEL=0;ANSELH=0;
TRISB.B1=0;
PORTB.B1=0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TIME ");
I2C1_Init(100000);
Delay_ms(50);
I2C1_Start();
I2C1_Wr(0xd0);
I2C1_Wr(0);//direccion de memoria "segundos"
I2C1_Wr(0);//segundos
I2C1_Wr(0);//minutos
I2C1_Wr(0);//hora
I2C1_Wr(0);//dia de la semana
I2C1_Wr(0);//fechas
I2C1_Wr(0);//meses
I2C1_Wr(0);//años
I2C1_Wr(0x10);//control,habilita SQWE
I2C1_Stop();
Delay_ms(50);
while(1){
I2C1_Start();
I2C1_Wr(0xd0);
I2C1_Wr(0);
I2C1_Repeated_Start();
I2C1_Wr(0xd1);
seg=I2C1_Rd(1);//lee segundos
min=I2C1_Rd(1);//lee minutos
hor=I2C1_Rd(0);//lee horas
I2C1_Stop();
Delay_ms(50);
time[0]=bcdtoshort(hor)+48;
time[1]=':';
time[2]=bcdtoshort(min)+48;
time[3]=':';
time[4]=bcdtoshort(seg)+48;
time[5]=0;
Lcd_out(1,6,time);
Delay_ms(100);
}
}