我现在用SH79F6488驱动DHT11,数据端口是P3.6,以下是部分程序:
dht11 = 0;
Delay_1ms(20);
dht11 = 1;
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
if(dht11!=0)
{
EA=1;
return ;
}
else
{
while(dht11 == 0&&count++ < NUMBER);
if(count >= NUMBER)
{
dht11 = 1;
EA=1;
return ;
}
dhT11就是P3.6端口,开始时先拉低,延时20ms之后拉高等待40us,之后DHT11会拉低该引脚,表示传感器应答信号,现在用示波器观察却发现执行dht11 = 1;这条指令用了很长时间,在这个时间内DHT11早已应答完毕,数据都传完了,才进入微秒延时程序,请问是怎么回事?
多谢! |