если я правильно перевел датасшит то в регистре 0х11 хранится целая часть температуры и знак (8 байт знак температуры, остальные семь целая часть температуры), в регистре 0х12 в 7 и 8 байте хранится дробная часть температуры с разрешением 0.25.
к примеру
0х11 = 0b00011001
0x12 = 0b0100000
в итоге имеем знак температуры 0 т.е. +
температура 0b 0011001 01 (0b0011001=25)(0b01=1; 1*0,25=0,25)
в итоге температура +25.25 градусов
про отрицательную температуру в даташите нислова
может ктото уже работал с этой DS3231 и поправит меня может я в чемто ошибаюсь и неправильно понял датасшит?
привожу кусок кода вывода температуры
Код: Выделить всё
void ds3231_temperature(void)
{
unsigned char temp;
temp=rtc_read(0x11);
LCD_Goto(13,2);
if (temp & 0b10000000)
{
LCD_WriteData('-');
}
else {
LCD_WriteData('+');
};
lcd_out(temp&0b01111111);
LCD_WriteData('.');
temp=rtc_read(0x12);
lcd_out(((temp&0b11000000)>>6)*25);
}