|
|
給你改一下,節(jié)約一個(gè)char,看懂就明白了:
bit Get18B20Temp(int *temp)
{
bit ack;
uchar LSB; //16bit溫度值的低字節(jié)
ack = Get18B20Ack(); //執(zhí)行總線復(fù)位,并獲取18B20應(yīng)答
if(ack == 0) //如18B20正確應(yīng)答,則讀取溫度值
{
Write18B20(0xCC); //跳過ROM操作
Write18B20(0xBE); //發(fā)送讀命令
LSB = Read18B20(); //讀溫度值的低字節(jié)
*temp= Read18B20(); //讀溫度值的高字節(jié)
*temp<<=8;
*temp += LSB; //合成為16bit整型數(shù)
或者不改, *temp = ((int)MSB << 8) + LSB;
執(zhí)行步驟解釋:
((int)MSB ------0000 0000 mmmm mmmm
<< 8 ----------mmmm mmmm 0000 0000,如沒有上步則為 0000 0000,mmmm mmmm全沒了
+ LSB----------mmmm mmmm LLLL LLLL |
|