看到一個例程,這里DS18B20的高低字節相加得到16位的整型數,但是,為什么要將高字節強制轉換成int型,然后再加低字節,難道不是低字節轉換成int型嗎,求大佬指教。/* 讀取DS18B20轉換的溫度值,返回值-表示是否讀取成功 */
bit Get18B20Temp(int *temp)
{
bit ack;
uchar LSB, MSB; //16bit溫度值的低字節和高字節
ack = Get18B20Ack(); //執行總線復位,并獲取18B20應答
if(ack == 0) //如18B20正確應答,則讀取溫度值
{
Write18B20(0xCC); //跳過ROM操作
Write18B20(0xBE); //發送讀命令
LSB = Read18B20(); //讀溫度值的低字節
MSB = Read18B20(); //讀溫度值的高字節
*temp = ((int)MSB << 8) + LSB; //合成為16bit整型數
}
return ~ack; //ack==0表示操作應答,所以返回值為其取反值
}
|