microcom:
No, no es necesario leer todos los datos. Puedes leer por separado la fecha y por otro la hora.
Yo en el
Programa de Test rtc.c que escribí puse lo siguiente:
// Set date for -> 5 Agosto 2006 Viernes
// Set time for -> 02:50:00
// printf("Set Date & Time to ...\r\n");
// ds1307_set_date_time(5,8,6,5,2,50,00);
con coincidía con la fecha y hora en que iba a ejecutar por primera vez el programa con el ds1307 conectado y programé el PIC en ese momento justo.

Al hacerlo por primera y única vez fije la fecha y hora del ds1307 en ese momento. Después comenté estas líneas y reprogramé el PIC. A partir de ese momento ya me dediqué a leer el ds1307 y no lo reprogramo más, está en hora y no le hace falta. Cuando desconecto el PIC el ds1307 sigue con su batería funcionando y al volver a dar corriente al PIC y leer el ds1307 todo es correcto y éste sigue en hora.
El tema de ajustar la hora con pulsadores no lo he hecho pero imagino que deberia setear unas variables con lo valores a enviar de fecha y hora y enviarlos justo en el momento que desee con la función anterior de ds1307_set_date_time()
Por supuesto hablando siempre en C y con el driver que contruí.