symbol DB18S20_skip_rom = $CC
symbol DB18S20_convert_T = $44
symbol DB18S20_read_T = $BE
read_temps: 'reads all the temps, called every second
'read the result of the last conversion at least 750mS ago
'uses bit mapping of w0 and b0, b1
owout HI_hw_temp, %1, (DB18S20_skip_rom, DB18S20_read_T)
owin HI_hw_temp, 0, (b0, b1)
call convert_raw_temp_to_tenths_deg
W_hw_temp = W_temp_deg 'save for use
'----
owout HI_ret_temp, %1, (DB18S20_skip_rom, DB18S20_read_T)
owin HI_ret_temp, 0, (b0, b1)
call convert_raw_temp_to_tenths_deg
W_ret_temp = W_temp_deg 'save for use
'---
owout HI_ext_temp, %1, (DB18S20_skip_rom, DB18S20_read_T)
owin HI_ext_temp, 0, (b0, b1)
call convert_raw_temp_to_tenths_deg
W_ext_temp = W_temp_deg 'save for use
'----
owout HI_go_temp, %1, (DB18S20_skip_rom, DB18S20_read_T)
owin HI_go_temp, 0, (b0, b1)
call convert_raw_temp_to_tenths_deg
W_go_temp = W_temp_deg 'save for use
init_read_temps: 'start the conversion process for next time
owout HI_hw_temp, DB18S20_mode, (DB18S20_skip_rom, DB18S20_convert_T)
owout HI_ret_temp, DB18S20_mode, (DB18S20_skip_rom, DB18S20_convert_T)
owout HI_ext_temp, DB18S20_mode, (DB18S20_skip_rom, DB18S20_convert_T)
owout HI_go_temp, DB18S20_mode, (DB18S20_skip_rom, DB18S20_convert_T)
return
convert_raw_temp_to_tenths_deg:
'deal with negative temps - if bit 15 = 1
if W_temp_deg BIT 15 SET then 'deal with negative temps
W_temp_deg = 0
endif
W_temp_deg = W_temp_deg * 25/40 'convert raw DS18B20 readings to 1/10 deg
B_temp_dec_deg = W_temp_deg // 10
return