OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6328|回复: 8

在DHT11实验中有一个问题

[复制链接]

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
发表于 2013-9-25 13:22:20 | 显示全部楼层 |阅读模式
在DHT11实验中下面的代码不是很能理解,比如注释//DHT11会拉低40~80us这一行,此时是计算DHT11_DQ_IN被拉低的时间,也就是DHT11_DQ_IN=0时循环,但是
while (DHT11_DQ_IN&&retry<100)在DHT11_DQ_IN=0时直接就跳出来了啊,根本起不到循环计数作用啊,下面拉高的也是一个情况,求原子哥指教


等待DHT11的回应
//返回1:未检测到DHT11的存在
//返回0:存在
u8 DHT11_Check(void)   
{   
u8 retry=0;
DHT11_IO_IN();//SET INPUT
//return 0;  
    while (DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us
{
retry++;
delay_us(1);
};  
if(retry>=100)return 1; //DQ变为 0 时跳出循环
else retry=0;


    while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后会再次拉高40~80us
{
retry++;
delay_us(1); //返回1:未检测到DHT11的存在
}; //返回1:未检测到DHT11的存在
if(retry>=100)return 1;     //返回1:未检测到DHT11的存在
return 0; //返回1:未检测到DHT11的存在
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
 楼主| 发表于 2013-9-25 20:07:42 | 显示全部楼层
回复【楼主位】fk1174:
---------------------------------
坐等大神
回复 支持 反对

使用道具 举报

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
 楼主| 发表于 2013-9-25 20:40:11 | 显示全部楼层
快来人啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-25 22:16:54 | 显示全部楼层
循不循环,是根据DHT11_DQ_IN来确定的!
而DHT11_DQ_IN,完全是由DHT11控制,所以有可能循环,也有可能不循环,但是你不能说这个retry就一定不会++。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
 楼主| 发表于 2013-9-25 23:17:54 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我的意思是while (DHT11_DQ_IN&&retry<100)这个循环执行时DHT11_DQ_IN应该是1吧,所以感觉原子哥的注释DHT11会拉低40~80us欠妥,我感觉应该是等待拉低40~80us(现在DHT11_DQ_IN是高还没到低),而不是会拉低(让人感觉现在DHT11_DQ_IN是低)
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-26 01:11:34 | 显示全部楼层
回复【5楼】fk1174:
---------------------------------
你可以按你的思路写代码,能用就OK了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
 楼主| 发表于 2013-9-26 16:46:55 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
谢谢原子哥的指导!!!
回复 支持 反对

使用道具 举报

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
 楼主| 发表于 2013-9-26 16:48:03 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
还有一个问题我的jtag下载寄存器版本的程序时出错怎么回事
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-26 22:37:50 | 显示全部楼层
回复【8楼】fk1174:
---------------------------------
报什么错
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 13:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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