你可以参见我以前写的18B20的程序,这个程序可以检测到18B20是否在线上。并且去掉(跳过)了750ms的转换时间,几乎无等待。
博客地址是:http://blog.sina.com.cn/u/2050455692
欢迎提宝贵建议!
//*******************************************************************************
//函数功能:11us延时
//输入参数:t :延时长度,单位11us
//输出参数:无
//*******************************************************************************
void _delay(UINT t){ //11us
for(;t>0;t--);
}
//*******************************************************************************
//函数功能:DS18B20复位操作函数
//输入参数:无
//输出参数:为1说明器件不存在,为0说明器件存在
//*******************************************************************************
UCHAR _DS18B20Reset(void){
DQ = 1;
_delay(1);
DQ = 0;
_delay(50);
DQ = 1;
_delay(10);
if(!DQ) {
_delay(50);
return 0;
}
else {
return 1;
}
}
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。