野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13405|回复: 4

在做DHT11实验,可是看不懂这段代码,想了好久都想不明白,求大神指教

[复制链接]
发表于 2015-5-6 12:16:34 | 显示全部楼层 |阅读模式
//μè′yDHT11μÄ»Øó|
//·μ»Ø1:Î′¼ì2aμ½DHT11μÄ′æÔú
//·μ»Ø0:′æÔú
u8 DHT11_Check(void)           
{   
        u8 retry=0;
        DHT11_IO_IN();//SET INPUT         
    while (DHT11_DQ_IN&&retry<100)//DHT11&#187;áà-μí40~80us
        {
                retry++;
                SysTickDelay(1);
//                delay_us(1);
        };         
        if(retry>=100)return 1;
        else retry=0;
    while (!DHT11_DQ_IN&&retry<100)//DHT11à-μíoó&#187;á&#212;ù′&#206;à-&#184;&#223;40~80us
        {
                retry++;
                SysTickDelay(1);
//                delay_us(1);
        };
        if(retry>=100)return 1;            
        return 0;
}

回复

使用道具 举报

发表于 2015-5-6 13:13:39 | 显示全部楼层
配合调用库函数看
回复 支持 反对

使用道具 举报

发表于 2015-5-6 14:02:34 | 显示全部楼层
这是检测DHT11是否存在的函数。输出一个高电平,如果DHT11在线,DHT11会返回一个脉冲。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-6 19:09:47 | 显示全部楼层
yinhao 发表于 2015-5-6 14:02
这是检测DHT11是否存在的函数。输出一个高电平,如果DHT11在线,DHT11会返回一个脉冲。

(DHT11_DQ_IN&&retry<100)的逻辑是怎样的呢?还请详细地说一下,麻烦了!
回复 支持 反对

使用道具 举报

发表于 2015-5-6 21:55:24 | 显示全部楼层
retry++;   是一个简单的延时效果。   
DHT11_DQ_IN  应该是读某个引脚,自己看宏定义。
如果读到低电平,或者超市了则跳出循环。

主机拉高引脚,等待DHT11拉低再拉高,作为响应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-28 21:24 , Processed in 0.036096 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表