Все не могу вывести темперетуру с десятичными на 7ми сегментный индикатор с драйвером max7219.
Целые числа получилось вывести, а десятичные не получается.
Код
void show_temper()
{
unsigned int temps, drob_tmp;
unsigned char celie,drob,j;
for(j=0;j<devices;)
{
temps = (signed int) ds18b20_temperature(&ds18b20_rom_codes[j][0]);
//Присвоим переменной temp значение переменной temperature с явным указанием типа данных
if (temps >= 0){temps = ~temps+1;buf5=10;}
else{buf5=0xF;} // если число отрицательное перевести его в норм.вид // целая часть числа
// целая часть числа
drob_tmp = temps & 0x000F; // дробная часть числа с точностью 1/16 градуса
drob=(unsigned char)((drob_tmp * 10) / 16); // преобразование дробной части в формате "1/16 градуса" в десятичный формат с точностью 0,1 градуса
/*Переменные разрядов индикатора*/
buf0=15;
buf1=drob;
buf2=temps%10;
buf3=temps/10;
buf4=0xF;
j++;
}
delay_ms(750);
}
{
unsigned int temps, drob_tmp;
unsigned char celie,drob,j;
for(j=0;j<devices;)
{
temps = (signed int) ds18b20_temperature(&ds18b20_rom_codes[j][0]);
//Присвоим переменной temp значение переменной temperature с явным указанием типа данных
if (temps >= 0){temps = ~temps+1;buf5=10;}
else{buf5=0xF;} // если число отрицательное перевести его в норм.вид // целая часть числа
// целая часть числа
drob_tmp = temps & 0x000F; // дробная часть числа с точностью 1/16 градуса
drob=(unsigned char)((drob_tmp * 10) / 16); // преобразование дробной части в формате "1/16 градуса" в десятичный формат с точностью 0,1 градуса
/*Переменные разрядов индикатора*/
buf0=15;
buf1=drob;
buf2=temps%10;
buf3=temps/10;
buf4=0xF;
j++;
}
delay_ms(750);
}