搜索
bottom↓
回复: 2

DS18B20写0和写时序问题

[复制链接]

出0入0汤圆

发表于 2012-5-17 13:21:11 | 显示全部楼层 |阅读模式
DS18B20写0和写1应该是两个不同过程
为什么有程序写:
/*************ds18b20写一个字节****************/
void WriteOneChar(uchar dat)
{
        unsigned char i=0;
        for (i=8; i>0; i--)
        {
                  DQ = 0;
                DQ = dat&0x01;
                    delay_18B20(5);
                DQ = 1;
                    dat>>=1;
        }
}

/***************************************/
有的写成:
//写数据的一个字节,满足写1和写0的时隙要求
void WrByte(uchar b)
{
uint i;
uchar j;
bit btmp;
for(j=1;j<=8;j++)
{
  btmp = b&0x01;
  b = b>>1;
  if (btmp)
  {
   //写1
   DQ = 0;
   i++;i++; // 延时,使得15us以内拉高
   DQ = 1;
   i = 8;
   while(i>0) i--; // 整个写1时隙不低于60us
  }
  else
  {
   //写0
   DQ = 0;   
   i = 8;
   while(i>0) i--; // 保持低在60us到120us之间
   DQ = 1;
   i++;
   i++;
  }
}
}
了不知道那个事正确理解?要是按照使用手册应该是第二种使用正确
为什么好多写成第一种方式,该怎么解释第一种呢?


阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-5-17 17:34:33 | 显示全部楼层
第一种啊,因为  DQ = dat&0x01;
它时0的话那前面本来就是0的啊,只要延时就可以了,如果是1那DQ就是1了啊

出0入0汤圆

发表于 2012-5-17 17:35:46 | 显示全部楼层
不过要注意延时,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 02:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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