Hallo Düsentrieb,
hiermit
Rom(1) = 1wread(1)
liest du genau 1 Byte ein. Das Vorzeichen steht aber im zweiten Byte.
Außerdem läuft das hier
Tempdifv = 16 - Rom(7)
ins Leere, weil rom(7) nicht eingelesen wird und daher immer 0 ist.
Ändere das mal so ab:
Rom(1) = 1wread(9)
Damit liest du alle Bytes ein, die der Sensor zur Verfügung stellt.
Deine Umrechnung scheint mir etwas "seltsam" zu sein. Schau doch noch einmal in das Datenblatt.