$regfile = "m8def.dat"
$crystal = 11059200
$baud = 115200

'1WIRE _________________________________________________________________________
Config 1wire = Portd.5
Declare Function Decigrades(byval Sc(9) As Byte) As Integer
Dim Temp1 As Integer
Dim Temp2 As Integer
Dim Temp3 As Integer
Dim Temp4 As Integer
Dim Sc(9) As Byte
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim Dsid3(8) As Byte
Dim Dsid4(8) As Byte
Dim E As Byte
Dim W As Word
W = 1wirecount()


Dsid1(1) = 1wsearchfirst()                                  'Znajd kolejny czujnik podpięty do portu
Dsid2(1) = 1wsearchnext()
Dsid3(1) = 1wsearchnext()
Dsid4(1) = 1wsearchnext()

'(
'1
Dsid1(1) = &H10
Dsid1(2) = &HF3
Dsid1(3) = &H72
Dsid1(4) = &H9E
Dsid1(5) = &H01
Dsid1(6) = &H08
Dsid1(7) = &H00
Dsid1(8) = &H17
'2
Dsid2(1) = &H10
Dsid2(2) = &H47
Dsid2(3) = &HA0
Dsid2(4) = &H7A
Dsid2(5) = &H01
Dsid2(6) = &H08
Dsid2(7) = &H00
Dsid2(8) = &H56
'3
Dsid3(1) = &H10
Dsid3(2) = &H8E
Dsid3(3) = &HA9
Dsid3(4) = &H9E
Dsid3(5) = &H01
Dsid3(6) = &H08
Dsid3(7) = &H00
Dsid3(8) = &HEB
'4
Dsid4(1) = &H10
Dsid4(2) = &H2C
Dsid4(3) = &HCC
Dsid4(4) = &H7A
Dsid4(5) = &H01
Dsid4(6) = &H08
Dsid4(7) = &H00
Dsid4(8) = &H5D
')

Do

1wreset
1wwrite &HCC
1wwrite &H44
Waitms 200
'---------------------------------
1wreset
1wverify Dsid1(1)
1wwrite , &HBE
Sc(1) = 1wread(9)
  If Err = 0 Then
     Temp1 = 0
     If Sc(9) = Crc8(sc(1) , 8) Then
         Temp1 = Decigrades(sc(9))
         Print "Temp1:" ; Temp1
     End If
     Else
         Print "Temp1:Error"
End If
'---------------------------------
1wreset
1wverify Dsid2(1)
1wwrite , &HBE
Sc(1) = 1wread(9)
  If Err = 0 Then
     Temp2 = 0
     If Sc(9) = Crc8(sc(1) , 8) Then
         Temp2 = Decigrades(sc(9))
         Print "Temp2:" ; Temp2
     End If
     Else
         Print "Temp2:Error"
End If
'---------------------------------
1wreset
1wverify Dsid3(1)
1wwrite , &HBE
Sc(1) = 1wread(9)
  If Err = 0 Then
     Temp3 = 0
     If Sc(9) = Crc8(sc(1) , 8) Then
         Temp3 = Decigrades(sc(9))
         Print "Temp3:" ; Temp3
     End If
     Else
         Print "Temp3:Error"
End If
'---------------------------------
1wreset
1wverify Dsid4(1)
1wwrite , &HBE
Sc(1) = 1wread(9)
  If Err = 0 Then
     Temp4 = 0
     If Sc(9) = Crc8(sc(1) , 8) Then
         Temp4 = Decigrades(sc(9))
         Print "Temp4:" ; Temp4
     End If
     Else
         Print "Temp4:Error"
End If
'---------------------------------

Wait 1
Loop


'1WIRE_DECIGRADES_______________________________________________________________
Function Decigrades(byval Sc(9) As Byte)
Dim Tmp As Byte , T As Integer , T1 As Integer
 Tmp = Sc(1) And 1
 If Tmp = 1 Then Decr Sc(1)
 T = Makeint(sc(1) , Sc(2))
 T = T * 50
 T = T - 25
 T1 = Sc(8) - Sc(7)
 T1 = T1 * 100
 T1 = T1 / Sc(8)
 T = T + T1
 Decigrades = T / 10
  Decigrades = Decigrades / 10
End Function