|
void ds_reset(void)
{
ds=1;
_nop_(); //1us
ds=0;
TempDelay(80); //当总线停留在低电平超过480us,总线上所以器件都将被复位,这里//延时约530us总线停留在低电平超过480μs,总线上的所有器件都
//将被复位。
_nop_();
ds=1; //产生复位脉冲后,微处理器释放总线,让总线处于空闲状态,原因查//18b20中文资料
TempDelay(5); //释放总线后,以便从机18b20通过拉低总线来指示其是否在线,
//存在检测高电平时间:15~60us, 所以延时44us,进行 1-wire presence //detect(单线存在检测)
_nop_();
_nop_();
_nop_();
if(ds==0)
flag=1; //detect 18b20 success
else
flag=0; //detect 18b20 fail
TempDelay(20); //存在检测低电平时间:60~240us,所以延时约140us
_nop_();
_nop_();
ds=1; //再次拉高总线,让总线处于空闲状态
}
ds为单片机控制口,
该初始化程序无返回值,要是在引用该初始化程序,单片机或是DS18B20是怎么知道初始化成功的呢?
希望有明白的,给讲一讲!谢谢 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|