原子哥,DS18B20 的程序中,有一处好像不正确吗:
short Ds18b20GetTemp(void)
{
u8 temp;
u8 TL,TH;
short tem;
Ds18b20Start (); // ds1820 start convert
Ds18b20Rst();
Ds18b20Check();
Ds18b20WriteByte(0xcc);// skip rom
Ds18b20WriteByte(0xbe);// convert
TL=Ds18b20ReadByte(); // LSB
TH=Ds18b20ReadByte(); // MSB
if(TH>7)
{
TH=~TH;
TL=~TL;
TL+=1;
temp=0;//温度为负
}else temp=1;//温度为正
tem=TH; //获得高八位
tem<<=8;
tem+=TL;//获得底八位
tem=(short)((float)tem*0.625);//转换
if(temp)return tem; //返回温度值
else return -tem;
}
如上红 {MOD}标注,是不是应该+1呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>