微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 哪位大神给小妹我把下面用颜色加深的DHT11程序,每段详细的注释一下。实在是看不懂了。

哪位大神给小妹我把下面用颜色加深的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     
        }
}

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
        }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top