Hola y saludo desde mexico
tal ves deberias a probar y modificar incluye esto en tu programa
#INCLUDE <18F4550.h>
#FUSES PLL3, CPUDIV1, USBDIV, HSPLL, NOFCMEN, NOWDT, NOPROTECT, NOIESO, PUT
#FUSES NOBROWNOUT, VREGEN, NOWDT, NOSTVREN, NOLVP, NODEBUG, NOPROTECT, NOCPB
#FUSES NOXINST, NOWRT, NOEBTRB, MCLR, NOLPT1OSC, NOPBADEN, STVREN, NODEBUG
#USE DELAY(CLOCK = 48MHZ)
#USE RS232(BAUD = 9600, XMIT = PIN_A0,RCV = PIN_A1)
#DEFINE DEBUG
//REGISTROS UTILIZADOS PARA LA COMUNICACION CON EL DS1307
//-------------------------------------------------------
BYTE SEC,MIN,HRS,DAY,MONTH,YEAR,DOW;
Ahora en el main
DS1307_INIT(); // INICIALIZAR DS1307
DS1307_SET_DATE_TIME(01,01,13,1,12,00,00); // AJUSTA LA FECHA A -> 11 DE JULIO DEL 2013 JUEVES
// AJUSTA LA HORA A -> 12:0:0
WHILE(TRUE)
{
DS1307_GET_DATE(DAY,MONTH,YEAR,DOW); // LEE EL DIA, EL MES, EL AÑO Y DOW
DS1307_GET_TIME(HRS,MIN,SEC); // LEE LA HORA, LOS MINUTOS Y LOS SEGUNDOS
ESCRIBE_HORA(); // VISUALIZA LA HORA EN LCD
IF(!INPUT(PIN_D0)) {
AJUSTA_HORA();
}
DELAY_MS(100);
}
///
Lo siguiente es tomado de la libreria que viene default en ccs compiler
void ds1307_get_date(BYTE &day, BYTE &mth, BYTE &year, BYTE &dow)
{
i2c_start();
i2c_write(0xD0);
i2c_write(0x03); // Start at REG 3 - Day of week
i2c_start();
i2c_write(0xD1);
dow = bcd2bin(i2c_read() & 0x7f); // REG 3
day = bcd2bin(i2c_read() & 0x3f); // REG 4
mth = bcd2bin(i2c_read() & 0x1f); // REG 5
year = bcd2bin(i2c_read(0)); // REG 6
i2c_stop();
}
void ds1307_get_time(BYTE &hr, BYTE &min, BYTE &sec)
{
i2c_start();
i2c_write(0xD0);
i2c_write(0x00); // Start at REG 0 - Seconds
i2c_start();
i2c_write(0xD1);
sec = bcd2bin(i2c_read() & 0x7f);
min = bcd2bin(i2c_read() & 0x7f);
hr = bcd2bin(i2c_read(0) & 0x3f);
i2c_stop();
}