原子哥,DS18B20程序有问题

2019-07-20 23:42发布

原子哥,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呢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。