// REG_MIN - регистр минут в DS1307
// REG_SEC - регистр секунд в DS1307
// SHIFT_SEC - ячейка в памяти, в которой хранится текущий сдвиг секунд
if (SHIFT_SEC > 59)
{
if (REG_SEC>1 & REG_SEC<59 & REG_MIN>1 & REG_MIN<59)
{
REG_MIN=REG_MIN+1; // или REG_MIN=REG_MIN-1 в зависимости от направления ухода секунд
SHIFT_SEC=SHIFT_SEC-60;
}
}
Теперь понятно? Никаких апдейтов "часов, дней, месяцев, годов" при корректировке секунд-минут НЕ ТРЕБУЕТСЯ, это будет делать сама микросхема DS1307. И календарь ваш никаких проблем не создает и это вторичная задача.