OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5364|回复: 2

DHT11程序里flag++是什么作用

[复制链接]

13

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2017-2-8
在线时间
28 小时
发表于 2017-5-11 17:44:27 | 显示全部楼层 |阅读模式
1金钱
#include <reg52.h>
//----------------------------------------------//
//----------------IO口定义区--------------------//
//----------------------------------------------//
sbit  P2_0  =P2^0 ;
//----------------------------------------------//
//----------------定义区--------------------//
//----------------------------------------------//
unsigned char  U8FLAG=0,U8temp=0;
unsigned char U8T_data_H=0,U8T_data_L=0,U8RH_data_H=0,U8RH_data_L=0,U8checkdata=0;
unsigned char str[5];
  void Delay2(unsigned int j)
    {     unsigned int i;
        for(;j>0;j--)
       {   
       for(i=0;i<150;i++);
       }
    }
  void Delay_10us(void)
    {     
       unsigned  i;
       for(i=16;i>0;i--) ;
   
    }
unsigned char COM(void)
      {
     
            unsigned chari,U8comdata ;
         
       for(i=0;i<8;i++)     
        {
      
            U8FLAG=2;
        while((!P2_0)&&U8FLAG++);
           Delay_10us();
           Delay_10us();
           Delay_10us();
           U8temp=0;
         if(P2_0)U8temp=1;
           U8FLAG=2;
        while((P2_0)&&U8FLAG++);
        //超时则跳出for循环      
         if(U8FLAG==1)break;
        //判断数据位是0还是1   
           
       // 如果高电平高过预定0高电平值则数据位为 1
         
          U8comdata<<=1;
           U8comdata|=U8temp;        //0
         }//rof
      return  U8comdata  ;
    }
    //--------------------------------
    //-----湿度读取子程序------------
    //--------------------------------
    //----以下变量均为全局变量--------
    //----温度高8位== U8T_data_H------
    //----温度低8位== U8T_data_L------
    //----湿度高8位== U8RH_data_H-----
    //----湿度低8位== U8RH_data_L-----
    //----校验 8位 == U8checkdata-----
    //----调用相关子程序如下----------
    //---- Delay();, Delay_10us();,COM();
    //--------------------------------
void RH(void)
{
unsigned char U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
      //主机拉低18ms
       P2_0=0;
       Delay2(180);
       P2_0=1;
     //总线由上拉电阻拉高 主机延时20us
       Delay_10us();
       Delay_10us();
       Delay_10us();
       Delay_10us();
     //主机设为输入 判断从机响应信号
       P2_0=1;
     //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行   
       if(!P2_0)       //T !   
       {
       U8FLAG=2;
     //判断从机是否发出 80us 的低电平响应信号是否结束     
      while((!P2_0)&&U8FLAG++);
       U8FLAG=2;
     //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
      while((P2_0)&&U8FLAG++);
     //数据接收状态      
      U8RH_data_H_temp= COM();
      U8RH_data_L_temp= COM();
     
      U8T_data_H_temp=COM();
      U8T_data_L_temp=COM();
      U8checkdata_temp=COM();
       P2_0=1;
     //数据校验
     
      U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
      if(U8temp==U8checkdata_temp)
       {
          U8RH_data_H=U8RH_data_H_temp;
          U8RH_data_L=U8RH_data_L_temp;
        U8T_data_H=U8T_data_H_temp;
          U8T_data_L=U8T_data_L_temp;
          U8checkdata=U8checkdata_temp;
       }//fi
       }//fi
    }
   
//----------------------------------------------
//main()功能描述: AT89C51  22.1184MHz    串口发
//送温湿度数据,波特率 9600
//----------------------------------------------
void main()
{
    Delay2(1);         //延时100US(22.1184M晶振)
    while(1)
    {  
      //------------------------
       //调用温湿度读取子程序
       RH();
       //串口显示程序
       str[0]=U8RH_data_H;
       str[1]=U8RH_data_L;
       str[2]=U8T_data_H;
       str[3]=U8T_data_L;
       str[4]=U8checkdata;
        
       //读取模块数据周期不易小于 2S
       Delay2(20000);
    }
   
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165359
金钱
165359
注册时间
2010-12-1
在线时间
2110 小时
发表于 2017-5-11 18:47:50 | 显示全部楼层
回复

使用道具 举报

18

主题

155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3887
金钱
3887
注册时间
2016-7-8
在线时间
818 小时
发表于 2017-7-21 13:18:51 | 显示全部楼层
应该是起到延时的作用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-12-23 04:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表