Подключил по TWI к ATmega64A часы реального времени DS1307. Взял готовые функции чтения и записи минут и часов (работают). А вот с AM/PM никак. Вот код чтения и записи минут и часов. Также приложил адреса и значения битов (PM-high).
Код
DS1307Read(0x01,&temp); // Чтение регистра минут
minute = (((temp & 0xF0) >> 4)*10)+(temp & 0x0F);

temp = ((minute/10) << 4)|(minute%10);
DS1307Write(0x01, temp); //Запись регистра минут


DS1307Read(0x02,&temp); // Чтение регистра часов
hour = (((temp & 0x10) >> 4)*10)+(temp & 0x0F);

temp = 1<<6;//12часовой формат
temp|=((hour/10) << 4)|(hour%10);    
DS1307Write(0x02, temp);


Как считать и записать AM/PM, как это с часами и минутами?