uint read_temperature()
{
1:uchar a,b;
2:ds_reset();
3:ds_write_byte(0xcc);//写入跳过序列号命令字
4:ds_write_byte(0xbe);//写入读取数据令字
5:a=ds_read_byte();//读温度低8位
6: b=ds_read_byte();//读温度高8位
7:temp=b;
8:temp=temp<<8;
9:temp=temp|a;
10:temp=temp*0.0625*10+0.5;
11:return temp;
}
假设当前温度为125度。温度高8位为:0000 0111。 温度低8位为:1101 0000 。第7行代码中temp=0000 0111 。第8行代码中temp=0。第9行代码中temp=1101 0000 。第10行代码中temp=208*0.0625*10+0.5=130.5
按这样算是不对的。 请各位高手指教。:'( |