在DHT11的响应程序中,如何体现拉低、拉高40~80us

2019-08-08 11:56发布

大家好,自己在看DHT11程序时有个疑问,在DHT11的响应程序中,如何体现拉低、拉高40~80us;此外
如果果真能体现的话,说明此程序已经有了一定时间的延迟(大概有120us),那么在读0/1时,为什么还要延迟40us来读取数据的0/1,
这样会不会错过。请大家指教,谢谢

u8 DHT11_Check(void)           
{   
        u8 retry=0;
        DHT11_IO_IN();//SET INPUT         
    while (DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us
        {
                retry++;
                delay_us(1);
        }
        if(retry>=100)return 1;
        else retry=0;
    while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后会再次拉高40~80us
        {
                retry++;
                delay_us(1);
        }
        if(retry>=100)return 1;            
        return 0;
}

//从DHT11读取一个位
//返回值:1/0
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(90);//等待40us
        if(DHT11_DQ_IN)return 1;
        else return 0;               













友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。