Hello DynamoBen.
Thank you for reply. I need to adapt code written for Basic Stamp 2p24 module.
I’d like to program PIC16F84A – 04/P to display voltage and temperature on Hitachi 44780 style display. I tried to download this program directly to PIC Basic PRO complier, but it gives error messages. As I’m just started with this product and I need little help, please. Can you correct following code?
'************************************************* ***************
'* Name : UNTITLED.BAS *
'* Author : [VLADIMIR] *
'* Notice : Copyright (c) 2006 [None] *
'* : All Rights Reserved *
'* Date : 7/30/2006 *
'* Version : 1.0 *
'* Notes : *
'* : *
'************************************************* ***************
' File...... DS2436.BS2
' Purpose... Reads information from a Dallas DS2436
'
' {$STAMP BS2p}
' {$PBASIC 2.5}
'
' -----[ Program Description ]--------------------------------------------------
' This program is based on the PSK_DS1822.bsp sample program in the
' BASIC Stamp 2p24 Professional Starter Kit (.pdf) document. Thank you Parallax!
'
' Program output is via DEBUG and looks like:
'
' DS2436 DATA
' Voltage: 4.8v (01 E3)
' Temperature: 25°C (19 10)
' counter = 18
'
' -----[ Revision History ]-----------------------------------------------------
'
' -----[ I/O Definitions ]------------------------------------------------------
'
OWpin CON 1
' -----[ Constants ]------------------------------------------------------------
'
' 1-Wire Support
'
ReadROM CON $33 ' read ID, serial num, CRC
MatchROM CON $55 ' look for specific device
SkipROM CON $CC ' skip rom (one device)
SearchROM CON $F0 ' search
OW_FERst CON %0001 ' Front-End Reset
OW_BERst CON %0010 ' Back-End Reset
OW_BitMode CON %0100
OW_HighSpd CON %1000
' DS2346 control
'
ConvertV CON $B4 ' convert the voltage
ConvertT CON $D2 ' convert the temperature
ReadRegister CON $B2 ' read page 4 and page 5 of DS2436
NoDevice CON %11 ' no device present
DegSym CON 176
' -----[ Variables ]------------------------------------------------------------
'
voltage VAR Word
vLo VAR voltage.BYTE0
vHi VAR voltage.BYTE1
temp VAR Word
tLo VAR temp.BYTE0
tHi VAR temp.BYTE1
counter VAR Word
romData VAR Word(8)
devCheck VAR Word
' -----[ EEPROM Data ]----------------------------------------------------------
'
' -----[ Initialization ]-------------------------------------------------------
'
Initialize:
DEBUG CLS
PAUSE 250 ' allow DEBUG screen to open
counter = 0
'
GOSUB Device_Check ' look for device
IF (devCheck <> NoDevice) THEN Main
No_Device_Found:
DEBUG CLS,"No 1-wire device present.", CR
DEBUG "-- Insert device and re-start."
END
' -----[ Main Code ]------------------------------------------------------------
'
Main:
DEBUG HOME, "DS2436 Data"
counter = counter + 1 ' count number of conversions
GOSUB Get_Volt ' voltage conversion
GOSUB Get_Temp ' temperature conversion
testValue1: ' voltage = $01E3 ' uncomment to test without DS2436
testValue2: ' temp = $1910 ' uncomment to test without DS2436
DEBUG CR, "Voltage: ",DEC voltage/100, ".", DEC1 voltage/10,"v (", HEX2 vHi, " ", HEX2 vLo, ")"
DEBUG CR, "Temperature: ",DEC tHi, DegSym, "C (", HEX2 tHi, " ", HEX2 tLo, ")"
DEBUG CR, DEC ? counter
PAUSE 500 ' delay for a bit....
GOTO Main
END
' -----[ Subroutines ]----------------------------------------------------------
'
'DS2436 Page 4 Memory is read using the Read_Registers [$B2] command
'addr purpose
' $60 Temp LSB (decimal degrees C)
' $61 Temp MSB (integer degrees C)
' $62 status (BIT0 shows T conversion status, Bit 3 shows V status)
' $63 status
' $77 Voltage LSB
' $78 Voltage MSB
Get_Volt:
OWOUT OWpin,OW_FERst,[SkipROM,ConvertV] ' send voltage conversion command
PAUSE 15 ' give it some time (could wait until bit3 at $62 equals 0)
OWOUT OWpin,OW_FERst,[SkipROM,ReadRegister, $77] ' lo byte voltage
OWIN OWpin,OW_BERst,[vLo]
OWOUT OWpin,OW_FERst,[SkipROM,ReadRegister, $78] ' hi byte voltage
OWIN OWpin,OW_BERst,[vHi]
RETURN
Get_Temp:
OWOUT OWpin,OW_FERst,[SkipROM,ConvertT] ' send voltage conversion command
PAUSE 15 ' give it some time (could wait until bit1 at $62 equals 0)
OWOUT OWpin,OW_FERst,[SkipROM,ReadRegister, $60] ' lo byte temp
OWIN OWpin,OW_BERst,[tLo]
OWOUT OWpin,OW_FERst,[SkipROM,ReadRegister, $61] ' hi byte temp
OWIN OWpin,OW_BERst,[tHi]
RETURN
' This subroutine checks to see if any 1-Wire devices are present on the
' bus. It does NOT search for ROM codes
Device_Check:
devCheck = 0
OWOUT OWpin,OW_FERst,[SearchROM] ' reset and start search
OWIN OWpin,OW_BitMode,[devCheck.BIT1,devCheck.BIT0]
RETURN
Thank you in advance
Vladimir
Bookmarks