关于ds18b20读操作的问题

2019-07-18 12:02发布

//*******read************
unsigned char read1820(void)
{
unsigned char i,bi;
unsigned char tmp;
DQ = 1; _nop_(); //准备读;
for(i=0;i<8;i++)
{
DQ=0; //
_nop_(); //主机拉低总线1us;
DQ = 1; //主机释放总线到高电平,从机开始放置数据;
delay_us(2); //延时9us等待数据稳定;
_nop_();
bi=DQ; //总机在12us处读取数据,从最低位开始;
tmp=(tmp>>1)|(bi<<7);//将tmp右移一位然后或上左移七位的bi;


delay_us(30); //延时55us;
DQ = 1; _nop_(); //恢复总线为高电平;
}
return tmp; }
在这里 tmp=(tmp>>1)|(bi<<7);中不是很理解 假如ds18b20要发送原始数据为01011101的温度值 那么在它放在总线上的数据顺序应该是反过来的10111010 那么通过怎么操作结束后返回的值tmp又为01011101啊? 请各位大神详细说明下 谢谢了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
武力戡乱
1楼-- · 2019-07-18 16:56
 精彩回答 2  元偷偷看……
wx1992
2楼-- · 2019-07-18 19:35
武力戡乱 发表于 2015-6-3 14:14
tmp>>1
这句不是解决了吗!

谢谢 已经解决了!
武力戡乱
3楼-- · 2019-07-18 23:26
wx1992 发表于 2015-6-4 21:18
谢谢 已经解决了!

哦?我说的对吧!
wx1992
4楼-- · 2019-07-19 03:03
武力戡乱 发表于 2015-6-4 22:30
哦?我说的对吧!

嗯嗯 主要是没有搞清楚这个指令的具体操作含义
武力戡乱
5楼-- · 2019-07-19 04:34
wx1992 发表于 2015-6-5 08:41
嗯嗯 主要是没有搞清楚这个指令的具体操作含义

一周热门 更多>