dht11.c
dht11.c
:
#include "dht11.h"
#include "delay.h"
void DHT11_Rst ( void ) {
/* 复位DHT11 */
DHT11_IO_OUT(); /* SET OUTPUT */
DHT11_DQ_OUT = 0; /* 拉低DQ */
delay_ms ( 20 ); /* 拉低至少18ms */
DHT11_DQ_OUT = 1; /* DQ = 1 */
delay_us ( 30 ); /* 主机拉高20至40us */
}
u8 DHT11_Check ( void ) {
/* 等待DHT11的回应,返回0表示DHT11存在,返回1表示不存在 */
u8 retry = 0;
DHT11_IO_IN(); /* SET INPUT */
while ( DHT11_DQ_IN && retry < 100 ) {
/* DHT11会拉低40至80us */
retry++;
delay_us ( 1 );
};
if ( retry >= 100 ) {
return 1;
} else {
retry = 0;
}
while ( !DHT11_DQ_IN && retry < 100 ) {
/* DHT11拉低后会再次拉高40至80us */
retry++;
delay_us ( 1 );
};