Ya me di cuenta donde esta mi error... me estaba desfasando por un pulso era por eso que solamente el primer dato me llegaba bien. Si ya leí la hoja de datos del ds1302 y estoy usando el modo burts tanto para escribir como para leer los datos jejeje
Bueno ya corregido las funciones para la lectura de la RAM del reloj quedan así:
Escritura de un byte:
//Funcion que escribe una Byte en el DS1302
void write_byte(unsigned char Byte)
{
unsigned char i;
TrisIO=0;
for (i=0;i<=7;++i)
{
IO=Byte&0x01;
Byte>>=1;
SCLK=1;
SCLK=0;
}
}
Escritura de 8 bytes en la Memoria RAM del reloj (Ojo pueden ser hasta 31 bytes):
void write_ds1302_ram(unsigned char Dato_1,unsigned char Dato_2,unsigned char Dato_3,unsigned char Dato_4,unsigned char Dato_5,unsigned char Dato_6,unsigned char Dato_7,unsigned char Dato_8)
{
RST=1;
write_byte(0xFE);
write_byte(Dato_1);
write_byte(Dato_2);
write_byte(Dato_3);
write_byte(Dato_4);
write_byte(Dato_5);
write_byte(Dato_6);
write_byte(Dato_7);
write_byte(Dato_8);
RST=0;
}
Lectura de un Byte:
unsigned char read_only_ds1302(void)
{
unsigned char i,Data;
TrisIO=1;
Data=0;
for(i=0;i<=6;i++)
{
if(IO==1)
{
Data += 0x80;
}
Data>>=1;
SCLK=1;
SCLK=0;
}
SCLK=1;
SCLK=0;
return(Data);
}
Lectura de 8 bytes en la Memoria RAM del reloj (Ojo pueden ser hasta 31 bytes):
void read_ds1302_ram(void)
{
unsigned char Dato_1,Dato_2,Dato_3,Dato_4,Dato_5,Dato_6,Dato_7,Dato_8;
char cadena[10];
RST=1;
write_byte(0xFF);
Dato_1=read_only_ds1302();
Dato_2=read_only_ds1302();
Dato_3=read_only_ds1302();
Dato_4=read_only_ds1302();
Dato_5=read_only_ds1302();
Dato_6=read_only_ds1302();
Dato_7=read_only_ds1302();
Dato_8=read_only_ds1302();
RST=0;
WriteLCD(" d1=",4);
itoa(Dato_1,cadena);
putsUART(cadena);
WriteLCD(" d2=",4);
itoa(Dato_2,cadena);
putsUART(cadena);
WriteLCD(" d3=",4);
itoa(Dato_3,cadena);
putsUART(cadena);
WriteLCD(" d4=",4);
itoa(Dato_4,cadena);
putsUART(cadena);
WriteLCD(" d5=",4);
itoa(Dato_5,cadena);
putsUART(cadena);
WriteLCD(" d6=",4);
itoa(Dato_6,cadena);
putsUART(cadena);
WriteLCD(" d7=",4);
itoa(Dato_7,cadena);
putsUART(cadena);
WriteLCD(" d8=",4);
itoa(Dato_8,cadena);
putsUART(cadena);
Delay_ms(1000);
}