
Originally Posted by
jcleaver
the osc is correct dont know why it did not show caps
tried going with 4 still read low
? what changes in math
TEMP = ((TEMP*9/5)+32 ) is what i am using
thanks for the inputs
have not found any samples using owin with this chip
Ok, try this:
Code:
@ DEVICE pic16F877A, HS_OSC
@ DEVICE pic16F877A, WDT_ON
@ DEVICE pic16F877A, PWRT_ON
@ DEVICE pic16F877A, BOD_ON
@ DEVICE pic16F877A, MCLR_on
@ DEVICE pic16F877A, LVP_OFF
@ DEVICE pic16F877A, CPD_OFF
@ DEVICE pic16F877A, PROTECT_OFF
define osc 20
define loader_used 1
define lcd_dreg portd
define lcd_dbit 4
define lcd_rsreg portd
define lcd_rsbit 2
define lcd_ereg portd
define lcd_ebit 3
define lcd_lines 2
define lcd_bits 4
define lcd_commandus 2000
define lcd_dataus 50
command var byte:i var byte:temp var word:dq var porta.5:dq_dir var trisa.5
adcon1=255:porta=255:portb=0:trisa=255:trisb=0:cmcon=7
Lcdout $fe,1,"Temp in degrees C"
mainloop: Gosub init1820:command=$cc:Gosub write1820:command=$44
Gosub write1820:Pause 2000:Gosub init1820:command=$cc:Gosub write1820
Pause 2000:command=$be:Gosub write1820:Gosub read1820:TEMP=((TEMP*9/5)+32)
Lcdout $fe,1,dec(temp>>1),".",dec(temp.0*5)," degrees C":Goto mainloop
init1820: Low DQ:Pauseus 500:DQ_DIR=1:Pauseus 100
If DQ=1 Then Lcdout $fe,1,"DS1820 not present":Pause 500:Goto mainloop
Pauseus 400:Return
write1820: For i=0 to 7:low dq
If command.0[temp] = 0 Then
Pauseus 60:DQ_DIR = 1
Else
@ nop
DQ_DIR = 1:Pauseus 60
Endif
Next i:Return
read1820: For i=0 to 15:low dq
@ nop
dq_dir=1:temp.0[i]=1:if dq=0 then temp.0[i]=0
pauseus60:next i:return
End
Bookmarks