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
Lesezeichen