打印

DS18B20 初始化时序问题(祝大家新年快乐)

[复制链接]
2102|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
锵锵人行|  楼主 | 2008-1-1 12:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
晶振12MHZ  左右 


void Delay(unsigned int num)
{
  while( --num ) ;
}

/*初始化ds1820                                      */
/*******************************************************************/
4.Init_DS18B20(void)
{  
     DQ = 1 ;      //DQ复位
     Delay(8) ;    //稍做延时

     DQ = 0 ;      //单片机将DQ拉低
     Delay(90) ;   //精确延时 大于 480us

1.     DQ = 1 ;       //拉高总线
     Delay(8) ;

     presence = DQ ;    //如果=0则初始化成功 =1则初始化失败
 2.    Delay(100) ;
     DQ = 1 ; 
     
     return(presence) ; //返回信号,0=presence,1= no presence
}
 问题:在1处拉高后 时序图上说等待15~60US    为什么程序上是 Delay(8)
       约为80us     在2处延迟了 Delay(100)   约为1000us  而时序上要求是60~204us   
      我都蒙了   

相关帖子

沙发
fsaok| | 2008-1-1 13:16 | 只看该作者

从480 到960us

使用特权

评论回复
板凳
锵锵人行|  楼主 | 2008-1-1 15:08 | 只看该作者

从480 到960us 是什么意思

使用特权

评论回复
地板
古道热肠| | 2008-1-2 12:48 | 只看该作者

这个时序得看汇编指令进行精确计算

用软件仿真查看汇编占用机器周期长度,再做调整。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

120

帖子

0

粉丝