|
DS18B20 一般在开始时需要给一个低电压 DQ=0;
请问 在 DQ=0; 之前需要不需要 DQ=1?
DS18B20每次释放总线是必须要 DQ=1吗?还是DQ=1是为了下面的DQ=0做准备?
是不是只要延时够500us就算释放总线了?
参考的是这篇文章
https://bbs.eeworld.com.cn/thread-101684-1-1.html- /*
************************************ 函数:RST_DS18B20 功能:复位DS18B20,读取存在脉冲并返回 参数:无 返回:1:复位成功 ;0:复位失败 说明: 拉低总线至少480us ;可用于检测DS18B20工作是否正常 ****************************************** */ bit RST_DS18B20() { bit ret="1"; DQ=0;/*拉低总线 */ Delayxus_DS18B20(32);/*为保险起见,延时495us */ DQ=1;/*释放总线 ,DS18B20检测到上升沿后会发送存在脉冲*/ Delayxus_DS18B20(4);/*需要等待15~60us,这里延时75us后可以保证接受到的是存在脉冲(如果通信正常的话) */ ret=DQ; Delayxus_DS18B20(14);/*延时495us,让ds18b20释放总线,避免影响到下一步的操作 */ DQ=1;/*释放总线 */ !!!这一步是必须的吗? return(~ret); }
复制代码
|
|