Das ist ein Code den ich getestet habe... Aber vom Aufbau ist es der gleich wie der den ich geschrieben habe. Berehnung ist anders.


Code:
$regfile = "m32def.dat"
$crystal = 8000000

Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.4 , Db7 = Portd.3 , E = Portb.7 , Rs = Portb.6
Config Lcd = 16 * 2
Config Lcdbus = 4
Cursor Off
Cls

Config 1wire = Portc.5

Dim T As Integer
Dim T1 As Integer
Dim T2 As Integer
Dim T3 As Integer
Dim T4 As String * 10
Dim T5 As String * 10
Dim T6 As Single
Dim T7 As Single
Dim Id1(8) As Byte
Dim Id2(8) As Byte
Dim Ar1(9) As Byte
Dim Ar2(9) As Byte
Dim I As Byte , Tmp As Byte , Tmp2 As Byte

Dim 1t As Integer
Dim 1t1 As Integer
Dim 1t2 As Integer
Dim 1t3 As Integer
Dim 1t4 As String * 10
Dim 1t5 As String * 10
Dim 1t6 As Single
Dim 1t7 As Single
Dim Id3(8) As Byte
Dim Id4(8) As Byte
Dim 1ar1(9) As Byte
Dim 1ar2(9) As Byte
Dim 1i As Byte , 1tmp As Byte , 1tmp2 As Byte

Id1(1) = 1wsearchfirst()
Id2(1) = 1wsearchnext()
Id3(1) = 1wsearchnext()
Id4(1) = 1wsearchnext()

Print "Print Id1(1)"
Print ""
Print Id1(1)
Print Id1(2)
Print Id1(3)
Print Id1(4)
Print Id1(5)
Print Id1(6)
Print Id1(7)
Print Id1(8)
Print ""



Do
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &H44

Waitms 300
1wreset
1wwrite &H55
1wwrite Id1(1) , 8
1wwrite &HBE
Ar1(1) = 1wread(9)

If Ar1(9) = Crc8(ar1(1) , 8) Then

   Print "CRC i.o"

Else

   Print "CRC Error"


End If

Print ""

1wreset
      Tmp = Ar1(1) And 1
      If Tmp = 1 Then Decr Ar1(1)
      T = Makeint(ar1(1) , Ar1(2))
      T = T * 50
      T = T - 25
      T1 = Ar1(8) - Ar1(7)
      T1 = T1 * 100
      T1 = T1 / Ar1(8)
      T = T + T1
      T = T / 10
      T6 = T / 10
      T4 = Fusing(t6 , "#.#")

Waitms 500
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wwrite &H44

Waitms 300
1wreset
1wwrite &H55
1wwrite Id2(1) , 8
1wwrite &HBE
Ar2(1) = 1wread(9)
1wreset
      Tmp2 = Ar2(1) And 1
      If Tmp2 = 1 Then Decr Ar2(1)
      T2 = Makeint(ar2(1) , Ar2(2))
      T2 = T2 * 50
      T2 = T2 - 25
      T3 = Ar2(8) - Ar2(7)
      T3 = T3 * 100
      T3 = T3 / Ar2(8)
      T2 = T2 + T3
      T2 = T2 / 10
      T7 = T2 / 10
      T5 = Fusing(t7 , "#.#")



1wreset
1wwrite &H55
1wwrite Id3(1) , 8
1wwrite &H44

Waitms 300
1wreset
1wwrite &H55
1wwrite Id3(1) , 8
1wwrite &HBE
1ar1(1) = 1wread(9)
1wreset
      1tmp = 1ar1(1) And 1
      If 1tmp = 1 Then Decr 1ar1(1)
      1t = Makeint(1ar1(1) , 1ar1(2))
      1t = 1t * 50
      1t = 1t - 25
      1t1 = 1ar1(8) - 1ar1(7)
      1t1 = 1t1 * 100
      1t1 = 1t1 / 1ar1(8)
      1t = 1t + 1t1
      1t = 1t / 10
      1t6 = 1t / 10
      1t4 = Fusing(1t6 , "#.#")

Waitms 500
1wreset
1wwrite &H55
1wwrite Id4(1) , 8
1wwrite &H44

Waitms 300
1wreset
1wwrite &H55
1wwrite Id4(1) , 8
1wwrite &HBE
1ar2(1) = 1wread(9)
1wreset
      1tmp2 = 1ar2(1) And 1
      If 1tmp2 = 1 Then Decr 1ar2(1)
      1t2 = Makeint(1ar2(1) , 1ar2(2))
      1t2 = 1t2 * 50
      1t2 = 1t2 - 25
      1t3 = 1ar2(8) - 1ar2(7)
      1t3 = 1t3 * 100
      1t3 = 1t3 / 1ar2(8)
      1t2 = 1t2 + 1t3
      1t2 = 1t2 / 10
      1t7 = 1t2 / 10
      1t5 = Fusing(1t7 , "#.#")

Locate 1 , 1 : Lcd "T1:" ; T4
Locate 1 , 10 : Lcd "T2:" ; T5
Locate 2 , 1 : Lcd "T3:" ; 1t4
Locate 2 , 10 : Lcd "T4:" ; 1t5

Waitms 500

Loop
End
Ich habe wegen der CRC prüfung geguckt aber das ist ja nur zur kontrolle ob die Daten richtig übertragen wurden. So verstehe ich es.

Ich müssen iwie gucken von welchen Sensor die Daten gekommen sind.

Muss auch sagen das ich noch sehr neu auf dem Gebiet bin! Aber gbe mir größte mühne auch alle zu verstehen was auf dem 1WireBuss passiert.

Mfg
Sascha