找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3592|回复: 5
打印 上一主题 下一主题
收起左侧

ds18b20 的程序分析

[复制链接]
楼主
ID:149988 发表于 2017-8-22 08:38 | 显示全部楼层

RE: ds18b20 的程序分析

temp_16_bit=temp_16_bit+temp_H*16+temp_L/16;          ///   这以下
temp_16_bit=temp_16_bit*100;
temp_16_bit=temp_16_bit+((temp_L&0x0f)*10/16)*10;     ///
temp_16_bit=temp_16_bit+(temp_L&0x0f)*100/16%10;      ///这以上
return (u16)(temp_16_bit);

如果上5个语句是同一个程序中连续的5个语句,那么:
因为:temp_16_bit=100、
temp_H=ds18b20_read_one_char();//读取温度高八位、
temp_L=ds18b20_read_one_char();//读取温度低八位。
所以:temp_16_bit=temp_16_bit+temp_H*16+temp_L/16; ///这以下。
可以写为:
temp_16_bit=100+(读取温度高八位*16)+(读取温度低八位/16); 本语句的意思是:将temp_16_bit本身的值100  加上  读取温度高八位乘以16  再加上  读取温度低八位除以16  后存于  temp_16_bit中。
temp_16_bit=temp_16_bit*100; 本语句的意思是:将上式temp_16_bit取得的新值再乘上100,并存于temp_16_bit中。
temp_16_bit=temp_16_bit+((temp_L&0x0f)*10/16)*10; ///  该语句中 temp_L&0x0f意思是:读取温度低八位数同0x0f相与,其意义是保留  读取温度低八位数中低四位。屏蔽掉高四位。将相与后的新数先乘以10再除以16,最后加上temp_16_bit中的值,再存入temp_16_bit中去。
temp_16_bit=temp_16_bit+(temp_L&0x0f)*100/16%10; ///这以上。该语句同上一句意识相同,只是多了个%10,%10的意思是:取余数的意思,就是将(temp_L&0x0f)*100/16结果除10,取其余数。最后加上temp_16_bit中值再存入temp_16_bit中去。





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表