新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2020-3-14
- 在线时间
- 6 小时
|
1金钱
看时序响应是先低电平,再高电平。按这个函数,直接跳到了 while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后会再次拉高40~80us,
而高电平的状态 while (DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us 没有执行到,那时间是如何确定的呢?
//等待DHT11的回应
//返回1:未检测到DHT11的存在
//返回0:存在
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;
}
|
|