DHT11例程中的小问题

2019-07-20 13:09发布

今天在看 DHT11数字温湿度传感器实验 视频时,发现例程中存在一点问题。见下边函数:

u8 DHT11_Read_Bit(void)                          
{
        u8 retry=0;
        while(DHT11_DQ_IN&&retry<100)
        {
                retry++;
                delay_us(1);
        }
        retry=0;  <----------
        while(!DHT11_DQ_IN&&retry<100)
        {
                retry++;
                delay_us(1);
        }
        delay_us(40);
        if(DHT11_DQ_IN)return 1;
        else return 0;                  
}

上边箭头处标出的程序是有问题的地方,这个函数中并未像DHT11_Check(那样在跳出循环后对retry的值进行判断和进一步处理(视频中讲到此处时也觉得顿了一下,之后绕过去了)。更加健壮的程序应为:
if(retry>=100)
    return 0xFF;
下边的while循环下边的语句也要如此判断。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。