微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机检测不到DS18b20存在脉冲

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灯亮的情况来检测错误)


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top