Also entweder:
Code:
Dim Dsid(24) As Byte
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H99 : Dsid(3) = &H4E : Dsid(4) = &H71 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H6D
'^= 1
Dsid(9) = &H10 : Dsid(10) = &H3D : Dsid(11) = &H48 : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H71
'^= 2
Dsid(17) = &H10 : Dsid(18) = &H4D : Dsid(19) = &H47 : Dsid(20) = &H71 : Dsid(21) = &H01 : Dsid(22) = &H08 : Dsid(23) = &H00 : Dsid(24) = &H86
'^= 3
Dim Sc(9) As Byte
Dim Sc2(9) As Byte
Dim T As Integer
Dim T1 As Integer
Dim I As Byte
Dim Halb As Byte
Dim Halb2 As Byte
Dim Ds1820 As Byte
Dim Ds1820_2 As Byte
Cursor Off


Do
 ' Alle angeschlossenen DS1820 zum Messen veranlassen
 1wreset
 1wwrite &HCC
 1wwrite &H44
 Waitms 750
 ' Den gewünschten Sensor auswählen
 1wverify Dsid(1)
 ' Kommando READ SCRATCHPAD
 1wwrite &HBE
 Sc(1) = 1wread(9)
 If Sc(9) = Crc8(sc(1) , 8) Then
  T = Makeint(sc(1) , Sc(2))
  ' Die Nachkommastelle entfernen
  T = T / 2
  ' Temperatur in ganzen Grad Schritten ausgeben
  Locate 1 , 1
  Lcd "T1: " ; T ;
 End If
 ' Ausgabe alle 0,75 Sekunden
 Waitms 750
'usw... für 3 Sensoren.
Wobei hier dann ab ca. 3° 30 am Display steht, wenn ich mich recht entsinne.

Oder diesen Teil:
Code:
Dim Dsid(24) As Byte
' Die Adresse meines DS1820 die ich vorher ermittelt habe
Dsid(1) = &H10 : Dsid(2) = &H99 : Dsid(3) = &H4E : Dsid(4) = &H71 : Dsid(5) = &H01 : Dsid(6) = &H08 : Dsid(7) = &H00 : Dsid(8) = &H6D
'^= 1
Dsid(9) = &H10 : Dsid(10) = &H3D : Dsid(11) = &H48 : Dsid(12) = &H71 : Dsid(13) = &H01 : Dsid(14) = &H08 : Dsid(15) = &H00 : Dsid(16) = &H71
'^= 2
Dsid(17) = &H10 : Dsid(18) = &H4D : Dsid(19) = &H47 : Dsid(20) = &H71 : Dsid(21) = &H01 : Dsid(22) = &H08 : Dsid(23) = &H00 : Dsid(24) = &H86
'^= 3
Dim Sc(9) As Byte
Dim Sc2(9) As Byte
Dim T As Integer
Dim T1 As Integer
Dim I As Byte
Dim Halb As Byte
Dim Halb2 As Byte
Dim Ds1820 As Byte
Dim Ds1820_2 As Byte
Cursor Off


Do
1wreset
  1wwrite &HCC
  1wwrite &H44
  Waitms 700
  1wreset
  1wverify Dsid(9)
  1wwrite &HBE
  Ds1820 = 1wread(9)
  Locate 4 , 1
  Lcd Ds1820
  1wreset
  Halb = Ds1820 And 1
  Locate 2 , 1
  Shift Ds1820 , Right
  If Ds1820 > 127 Then
    Lcd "-"
    Ds1820 = 256 - Ds1820
    If Halb = 1 Then Ds1820 = Ds1820 - 1
  Else
    Lcd " "
  End If
  Lcd Ds1820 ; ".";
  If Halb = 1 Then
    Lcd "5"
  Else
    Lcd "0"
  End If
  Lcd "C "
  Waitms 700
'usw...
Loop
Wobei hier dann im Negativen Bereich eine 3-stellige Zahl und keine negatvie Temperatur raus kommt...

Edit: Bild hier  
"T1" ist jetzt mal zu vernachlässigen und mit 1. Code gschrieben.
Die "Temperatur" in der zweiten Zeile ist die, die ich mit dem 2. Code programmiert habe (sie ist negativ!) und der Wert ganz unten ist "Ds1820"
Wenn er jetzt also 256 - Ds1820 rechnen würde, würde wohl auch die richtige Temperatur heraus kommen, nur scheint es mir, als würde er die If-Schleife nicht richtig ausführen; 1. rechnet er anscheinend nicht 256 - Ds1820 und 2. zeigt er auch ein keinster Weise ein "-" an