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