本帖最后由 1dddd 于 2021-7-23 18:20 编辑
首先感谢进来看的朋友,表示感谢。 作为一名新手,在写DHT11发送串口的时候温度和湿度显示出错,所以特意来向您们请教的
请问 我这个读取DHT11时序的哪里出错了吗?
void Dht11_Star(void)
{
DATE = 0;
Delay20ms();
DATE = 1;
Delay30us();
}
char Dht11_Check(void)
{
uint t = 0;
while(DATE)
{
t++;
_nop_();
if(t>4000)
{
return -1;
}
}
t=0;
while(!DATE)
{
t++;
_nop_();
if(t>100)
return -2;
}
t=0;
while(DATE)
{
t++;
_nop_();
if(t>100)
return -3;
}
return 0;
}
char Dht11_Read(void)
{
uint i,t=0;
uchar temp=0;
for(i=0;i<8;i++)
{
while(!DATE)
{
t++;
_nop_();
if(t>60)
return -1;
}
Delay40us();
temp <<= 1;
if(DATE)
{
t=0;
temp |= 0x80;
while(DATE)
{
t++;
_nop_();
if(t>80)
return -1;
}
}
}
return temp;
}
|