ds18b20 F4是不是有误啊?

2019-07-20 19:14发布

short DS18B20_Get_Temp(void)
{
    u8 temp;
    u8 TL,TH;
          short tem;
    DS18B20_Start ();                  
    DS18B20_Rst();
    DS18B20_Check();         
    DS18B20_Write_Byte(0xcc);
    DS18B20_Write_Byte(0xbe);
    TL=DS18B20_Read_Byte();
    TH=DS18B20_Read_Byte();  
    if(TH>7)
    {
        TH=~TH;
        TL=~TL;
        temp=0;  
    }else temp=1;           
    tem=TH;
    tem<<=8;   
    tem+=TL;
    tem=(double)tem*0.625;   
        if(temp)return tem;
        else return -tem;   
}
当温度值为负的时候,不是说要将TH TL取反加一在乘0.625吗?咋没体现这一步呢?没看明白

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