51单片机检测不到DS18b20存在脉冲
时间:10-02
整理:3721RD
点击:
直接上代码
char init_DS18B20(void)
{
char rt = 0;
DQ = 1;
_nop_();
DQ = 0; //reset pulse
delay_us(148); //490us //这里延迟600微秒都试过,还是没有检测到存在脉冲
DQ = 1;
#pragma asm //在65微秒内循环检测存在脉冲的下降沿
MOV a, #19
LOOP_DETECT_PRESENCE_PULSE_START:
JNB DQ, PRESENCE_PULSE_START_DETECTED
DEC A
JNZ LOOP_DETECT_PRESENCE_PULSE_START
PRESENCE_START_NOT_DETECT:
MOV P1, #1 //没有在65us内检测到则led只有最低1位不亮,老是在这里退出了
MOV R7, #1
RET
PRESENCE_PULSE_START_DETECTED:
#pragma endasm
while (!DQ); //等待脉冲结束
return 0;
}
请问为什么老是检测不到DS18B20,不论延迟480微秒还是500甚至600微秒都没有检测到下降沿(通过led灯亮的情况来检测错误)
char init_DS18B20(void)
{
char rt = 0;
DQ = 1;
_nop_();
DQ = 0; //reset pulse
delay_us(148); //490us //这里延迟600微秒都试过,还是没有检测到存在脉冲
DQ = 1;
#pragma asm //在65微秒内循环检测存在脉冲的下降沿
MOV a, #19
LOOP_DETECT_PRESENCE_PULSE_START:
JNB DQ, PRESENCE_PULSE_START_DETECTED
DEC A
JNZ LOOP_DETECT_PRESENCE_PULSE_START
PRESENCE_START_NOT_DETECT:
MOV P1, #1 //没有在65us内检测到则led只有最低1位不亮,老是在这里退出了
MOV R7, #1
RET
PRESENCE_PULSE_START_DETECTED:
#pragma endasm
while (!DQ); //等待脉冲结束
return 0;
}
请问为什么老是检测不到DS18B20,不论延迟480微秒还是500甚至600微秒都没有检测到下降沿(通过led灯亮的情况来检测错误)