一点DS18B20的小问题~~

[复制链接]
 楼主| 限量_个性。 发表于 2013-3-8 12:36 | 显示全部楼层 |阅读模式
读取温度时,把两个字节合为一个字节时,就是temp<<=8;temp=temp|a;不太明白啊 ,为什么这样写啊,高字节左移八位不就没了么,新手,问题很笨,大家勿喷啊,谢谢了 ~
ayb_ice 发表于 2013-3-8 13:34 | 显示全部楼层
左移时高8位丢弃,低8位变成高8位(实际是温度高字节),再+上低8位组成16位结果
雁舞白沙 发表于 2013-3-8 15:56 | 显示全部楼层
void ReadTempa(unsigned char *RecData)
{
    *(RecData)=0;
    *(RecData+1)=0;
    WDT();
    if(ChkTempaChip()==0x00){WriteByte(0xCC);WriteByte(0x44);WDT();DelayTempa(3000);}
    if(ChkTempaChip()==0x00){WriteByte(0xCC);WriteByte(0xBE);*(RecData)=ReadByte();*(RecData+1)=ReadByte();}
}
lzqxs89 发表于 2013-3-8 16:24 | 显示全部楼层
请阅读DS1820的数据手册哦
 楼主| 限量_个性。 发表于 2013-3-8 22:07 | 显示全部楼层
ayb_ice 发表于 2013-3-8 13:34
左移时高8位丢弃,低8位变成高8位(实际是温度高字节),再+上低8位组成16位结果 ...

哦哦~~但为什么要这样移位呢,为什么要两个低八位呢?
ayb_ice 发表于 2013-3-9 07:58 | 显示全部楼层
左移8位等于X256,
最直观的方法用联合体来完成
 楼主| 限量_个性。 发表于 2013-3-9 21:49 | 显示全部楼层
ayb_ice 发表于 2013-3-9 07:58
左移8位等于X256,
最直观的方法用联合体来完成

哦哦~有点明白了 。用联合体?可能再说清楚点。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:欢迎进入电动车版块

45

主题

1082

帖子

14

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:欢迎进入电动车版块

45

主题

1082

帖子

14

粉丝
快速回复 在线客服 返回列表 返回顶部