problem med tempbivare och picbasicpro
Postat: 27 januari 2005, 21:19:56
Jag har progblem med att läsa av 2st ds18B20 tempgivare med en pic16F870 och picbasicpro. Jag har kopplat båda givarna till samma pinne på pic:en. Men när jag använder det här programmet så låser sig pic:en om jag har båda tempgivarna monterade men om jag tar bort en så läser han av den andra men aldrig när båda sitter där vad kan vara felet jag använder ca 12 m cat5 kabel till varje tempgivare
DEFINE OSC 8
ADCON1 = 7
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 5
TRISB = %11111111
TRISC = %11111111
DQ VAR PortC.0
Stat VAR BIT
S1 Var byte
S2 Var byte
S3 Var byte
A VAR WORD
B VAR WORD
start:
S1 = $E5
S2 = $93
S3 = $1E
gosub Temp
A=B
S1 = $86
S2 = $81
S3 = $7B
gosub Temp
A=A >> 3
B=B >> 3
Lcdout $fe, 1
Lcdout dec (A >> 1),".",dec(A.0 * 5)
Lcdout $fe, $C0
Lcdout dec (B >> 1),".",dec(B.0 * 5)
pause 2000
goto start
Temp:
OWOUT DQ, 1, [$55,$28,S1,S2,$79,$00,$00,$00,S3,$44]
W1:
OWIN DQ, 4, [Stat]' Check for still busy converting1
IF Stat = 0 THEN W1' Still busy?, then loop
OWOUT DQ, 1,[$55,$28,S1,S2,$79,$00,$00,$00,S3,$BE]
OWIN DQ, 2, [B.LOWBYTE,B.HIGHBYTE]' Read two bytes, then end communications
Return
DEFINE OSC 8
ADCON1 = 7
DEFINE LCD_EREG PORTA
DEFINE LCD_EBIT 5
TRISB = %11111111
TRISC = %11111111
DQ VAR PortC.0
Stat VAR BIT
S1 Var byte
S2 Var byte
S3 Var byte
A VAR WORD
B VAR WORD
start:
S1 = $E5
S2 = $93
S3 = $1E
gosub Temp
A=B
S1 = $86
S2 = $81
S3 = $7B
gosub Temp
A=A >> 3
B=B >> 3
Lcdout $fe, 1
Lcdout dec (A >> 1),".",dec(A.0 * 5)
Lcdout $fe, $C0
Lcdout dec (B >> 1),".",dec(B.0 * 5)
pause 2000
goto start
Temp:
OWOUT DQ, 1, [$55,$28,S1,S2,$79,$00,$00,$00,S3,$44]
W1:
OWIN DQ, 4, [Stat]' Check for still busy converting1
IF Stat = 0 THEN W1' Still busy?, then loop
OWOUT DQ, 1,[$55,$28,S1,S2,$79,$00,$00,$00,S3,$BE]
OWIN DQ, 2, [B.LOWBYTE,B.HIGHBYTE]' Read two bytes, then end communications
Return