QUOTE (ILYAUL @ Mar 23 2016, 22:49)

дробная часть DS18 прекрасно ложится на таблицу
От обеих "решений" я плакалъ

. Арифметика начальной школы

CODE
#define DS18X20_FRACCONV 625 // Constant to convert the fraction bits to cel*(10^-4)
dcel = *((signed short *)&spad[0]); // LSB and MSB to short
if( dcel < 0 ) // Subzero
dcel = ((dcel*DS18X20_FRACCONV)-500)/1000;
else
dcel = ((dcel*DS18X20_FRACCONV)+500)/1000;
А тут КРЕПКО думать, а что-же оказалось в этом signed int. "Подсказка" выше дана.
QUOTE
temps = (signed int) ds18b20_temperature(&ds18b20_rom_codes[j][0]);