u16 dht11_read_bit(void)
{
while (DHT11_IN == RESET);
delay_us(40);
if (DHT11_IN == SET)
{
while (DHT11_IN == SET);
return 1;
}
else
{
return 0;
}
}
u16 dht11_read_byte(void)
{
u16 i;
u16 data = 0;
for (i = 0; i < 8; i++)
{
data <<= 1;
data |= dht11_read_bit();
}
return data;
}
u16 dht11_read_data(u8 buffer[5])
{
u16 i = 0;
dht11_reset();
if (dht11_scan() == RESET)
{
//检测到DHT11响应
while (dht11_scan() == RESET);
while (dht11_scan() == SET);
for (i = 0; i < 5; i++)
{
buffer[ i] = dht11_read_byte();[ i]
}