Em mới mua con DHT11 mà chưa biết viết code thế nào. Mọi ngừoi xem giúp em cái code này nó sai ở đâu mà code vision cứ báo "mất dấu ("
PHP Code:
#define DHT_DATA_IN PINB.0
#define DHT_DATA_OUT PORTB.0
#define DHT_DDR_DATA DDRB.0
#define DDROUT 1
#define DDRIN 0
uint8_t DHT_GetTemHumi (uint8_t *tem,uint8_t *humi)
{
uint8_t buffer[5]={0,0,0,0,0};
uint8_t ii,i,checksum;
DHT_DDR_DATA=DDROUT; // set la cong ra
DHT_DATA_OUT=1;
delay_us(60);
DHT_DATA_OUT=0;
delay_ms(25); // it nhat 18ms
DHT_DATA_OUT=1;
DHT_DDR_DATA=DDRIN;
delay_us(60);
if(DHT_DATA_IN)return DHT_ER ;
else while(!(DHT_DATA_IN)); //Doi DaTa len 1
delay_us(60);
if(!DHT_DATA_IN)return DHT_ER;
else while((DHT_DATA_IN)); //Doi Data ve 0
//Bat dau doc du lieu
for(i=0;i<5;i++)
{
for(ii=0;ii<8;ii++)
{
while((!DHT_DATA_IN));//Doi Data len 1
delay_us(50);
if(DHT_DATA_IN)
{
buffer[i]|=(1<<(7-ii));
while((DHT_DATA_IN));//Doi Data xuong 0
}
}
}
//Tinh toan check sum
checksum=buffer[0]+buffer[1]+buffer[2]+buffer[3];
//Kiem tra check sum
if((checksum)!=buffer[4])return DHT_ER;
//Lay du lieu
*tem = buffer[2];
*humi = buffer[0];
return DHT_OK;
}
Comment