求教430单片机读取DHT11温湿度传感器的值,为什么不对呢?

#include<msp430x54x.h>
#define uchar unsigned char
#define uint unsigned int
#define DATA_IN P1DIR |= BIT2; //P1REN |=BIT2;
#define DATA_OUT P1DIR &=~BIT2; //P1REN |=BIT2;
#define S_DATA_H P1OUT |= BIT2;
#define S_DATA_L P1OUT &=~BIT2;
#define G_DATA P1IN&0X04
uchar value;
void main(void)
{uchar x;
uchar j,i,temp=0;
WDTCTL=WDTPW+WDTHOLD;
DATA_OUT;
S_DATA_H;

while(1)
{
S_DATA_L;
__delay_cycles(1800); //>18ms
S_DATA_H;
__delay_cycles(50);
DATA_IN;
while(G_DATA!=0); //等待从机拉高
__delay_cycles(65); //80us
for(j=5;j>0;j++)
{
for(i=8;i>0;i--)
{
value<<=1;

while(G_DATA==0); //等待从机数据
temp=0; //短,0
__delay_cycles(40); //40us
while(G_DATA!=0)
temp=1; //长,1
value |=temp;
__delay_cycles(50); //40us
}
}
}
}

程序的问题,主要是延时时间,不准确时结果肯定不对。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-05
请问楼主解决问题没?我也需要一份DHT11的程序,用的是MSP430F149,希望楼主能帮个忙。感激不尽~
相似回答