DS18B20 auf Atmega8

skorpi08:
Wie mach ichs mit x-tel Grad?
Dass mit raw*625L zeigt nicht richtige Werte an.

Das ist dann ja auch ein "long", die Zahlen sind extrem gross, und der Variablentyp long hat ebenfalls 4 Bytes.

So müßte es gehen in Zehntelgrad (mit Abrundung der Hundertstel):

holdingRegs[CELSIUS] = raw*625L/1000;  // Zwischenrechnung ist long, Ergebnis passt in int

Mit *625 bekommst Du zehntausendstel Grad, geteilt durch 1000 sind es dann zehntel Grad.
Und in zehntelgrad angegeben ist die Temperatur dann so klein, dass Du den Wert problemlos auf einen int zuweisen kannst, ohne dass ein Zahlenüberlauf auftritt.