找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机18b20写字节函数,求分析

[复制链接]
跳转到指定楼层
楼主
ID:603310 发表于 2019-8-24 12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
18b20写字节函数
两种程序,为什么程序A能正常执行获取到正常温度值,而B不可以?替换B程序后单片机获取不到18b20的值!有什么区别吗?
A

for(i=0;i<8;i++)
{
P37=0;
_nop_();
P37=dat&0x01;
延迟;
P37=1;
dat=dat>>1;
}
延迟;
B

for(i=0;i<8;i++)
{
P37=0;
_nop_();
P37=(dat>>i)&0x01;
延迟;
P37=1;
}
延迟;
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:277550 发表于 2019-8-24 22:36 | 只看该作者
什么类型的单片机,把延时校准了
回复

使用道具 举报

板凳
ID:235200 发表于 2019-8-25 00:15 | 只看该作者
程序A是把dat中的8位数据依次传到P37引脚上,dat数据传送的顺序是D0位至D7位,P37=0 P37=1产生传送脉冲,这样符合一线制传送原理,而程序B中P37=(dat>>i)&0x01; dat先右移1位再进行数据传送,这样dat中的数据传送顺序是D1-D7,最后传送1位是0,与需要传送的数据不相符,如果是传送采集温度命令,造成命令均是错误的,所以读不到温度值.
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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