Thanks EarlyBird2, I did figure that part out. In the code that the 'Kid' supplied, I could not get it to work until I remarked the SignC=Negative portion.
The code below works, but I have not tried for negative numbers yet..... Could you explain why?
Thanks and Regards,
Steve
Code:
ReadDS18S20:' Works, mostly.....------------------------------------------------
owout Tsensor,1,[$CC, $44] 'Send Start Temperature Conversion command
owout Tsensor,1,[$CC, $BE] 'Send Read Temperature command
owin Tsensor,0,[STR dq\9] 'Retrieve all 9 bytes of data
RawTemp.Byte0 = dq[0]
RawTemp.byte1 = dq[1]
if RawTemp.8 = 1 then 'Check if temperature is a negative reading
SignC = Negative
RawTemp.lowbyte = RawTemp.lowbyte ^ 255 'Invert data
else
SignC = Positive
endif
dummy = RawTemp.0 'Store the half degree indicator bit
TempC = ((RawTemp.lowbyte) >> 1) * 100 'Divide raw data by 2 to give real temperature
TempC = TempC + (dummy * 50) 'Add the half degree is present
' if SignC = Negative then 'Only proceed if temperature is negative - doesnt work for F, fine for C
' if TempC => 1770 then
' SignF = Negative
' TempF = (TempC + 5000) * 900
' TempF = div32 500
' TempF = TempF - 12200
' return
' else
' SignF = Positive
' TempF = (TempC + 5000) * 900
' TempF = div32 500
' TempF = 12200 - TempF
' return
' endif
' endif
SignF = Positive 'Sign is +
TempF = ((TempC * 18) / 10) + 3200 'Convert from C to F
return
Bookmarks