如题: STC11F32XE,单个B20
常温下偶尔会出现读到FF,但升温到60度或更高时,几乎全变为FF,降温就恢复成正常数据。
哪位遇到过?
unsigned char ReadOneChar1(void)
{
unsigned char i=0;
unsigned char dat = 0;
EA=0;
for (i=8;i>0;i--)
{
DQ1 = 0; // 给脉冲信号,在15US内完成信号采样
delay_18B20(1); //5us
dat>>=1;
DQ1 = 1; // 给脉冲信号
delay_18B20(1); //5US
if(DQ1==1)
{
dat|=0x80;
}
delay_18B20(36); //45us
DQ1 = 1; // 释放
}
EA=1;
return(dat);
}//
//写一个字节
void WriteOneChar1(unsigned char dat)
{
unsigned char i=0;
EA=0;
for (i=8; i>0; i--)
{
DQ1 = 0;
delay_18B20(7); //15us
DQ1 = dat&0x01;
delay_18B20(32); //45us
DQ1 = 1;
delay_18B20(1);
dat>>=1;
}
EA=1;
}
|