哪位大神给小妹我把下面用颜色加深的DHT11程序,每段详细的注释一下。实在是看不懂了。
时间:10-02
整理:3721RD
点击:
DHT11的程序
sbit DHT11 = P1^7;
uchar U8FLAG;
uchar U8count,U8temp;
uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; //分别代表高8位温度,低八位温度,高八位湿度,低八位湿度,校验和
uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
uchar shidu_shi,shidu_ge,wendu_shi,wendu_ge;
uchar U8comdata;
void COM(void)
{
uchar i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!DHT11)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;
if(DHT11)
U8temp=1;
U8FLAG=2;
while((DHT11)&&U8FLAG++);
if(U8FLAG==1)break;
U8comdata<<=1;
U8comdata|=U8temp; //0
}
}
sbit DHT11 = P1^7;
uchar U8FLAG;
uchar U8count,U8temp;
uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; //分别代表高8位温度,低八位温度,高八位湿度,低八位湿度,校验和
uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
uchar shidu_shi,shidu_ge,wendu_shi,wendu_ge;
uchar U8comdata;
void COM(void)
{
uchar i;
for(i=0;i<8;i++)
{
U8FLAG=2;
while((!DHT11)&&U8FLAG++);
Delay_10us();
Delay_10us();
Delay_10us();
U8temp=0;
if(DHT11)
U8temp=1;
U8FLAG=2;
while((DHT11)&&U8FLAG++);
if(U8FLAG==1)break;
U8comdata<<=1;
U8comdata|=U8temp; //0
}
}
void COM(void)
{
uchar i; //定义循环变量
for(i=0;i<8;i++)
{
U8FLAG=2; //定义初值
while((!DHT11)&&U8FLAG++);//等待验证为真
Delay_10us();//延迟10微妙
Delay_10us();
Delay_10us();
U8temp=0;//赋值为0
if(DHT11) //当DHT11为1
U8temp=1; // 赋值为1
U8FLAG=2;//从新赋值
while((DHT11)&&U8FLAG++); //等待验证为真
if(U8FLAG==1)break; //当U8FLAG为1时,直接跳出循环
U8comdata<<=1;//左移1位
U8comdata|=U8temp; //U8comdata与U8temp求或,从新赋值给U8comdata
}
}