Programowałem w ASM '51 i wiem coś o tym jak bardzo boli zabawa w ułamki.
Jeśli dobrze rozumiem, to z czujnika dostajesz 2 bajty danych.
Pierwszy daje temperaturę w zakresie +/- 120*C z rozdzielczością 1*C. Jeśli do tego dołożysz drugi bajt to masz rozdzielczość pomiaru 0,5*C i bezpośrednio nie da się uzyskać innych wartości ułamkowych.
W dokumentacji jest wzmianka że jeśli zrobisz kilkanaście pomiarów to możesz z nich wyliczyć temperaturę z większą rozdzielczością, co wbudowana inteligencja tego układu jest w stanie zrobić sama. Zapewne chodzi o zużycie energii przez układ i podgrzanie układu po wykonaniu kilku pomiarów.
Moim zdaniem możesz policzyć ten ułamek z rozdzielczością 0,1*C w następujący sposób:
TEMPERATURE = TEMP_READ - 0.2 (rozdzielasz temperaturę na zmienną przed przecinkiem i zmienną za przecinkiem z rozdzielczością 0,1*C)
A = (COUNT_PER_C - COUNT_REMAIN)*10
B = COUNT_PER_C
DIV AB
A sumujesz A z tym za przecinkiem, jeśli przekroczyłeś 9 to trzeba przenieść.
Na koniec wyświetlasz "przed przecinkiem" + "przecinek" + "za przecinkiem" + "*C".
No chyba że ten ułamek to pretekst do pisania biblioteki liczb zmiennoprzecinkowych
