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

[复制链接]
2543|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

粉丝
快速回复 在线客服 返回列表 返回顶部