void RH(void) 
{ 
     
          //主机拉低18ms  
          DHT_OUT; 
           DHT_CLR; 
           delay_ms(18); 
           DHT_SET; 
         //总线由上拉电阻拉高 主机延时20us 
          Delay_US(10); 
           Delay_US(10); 
         //主机设为输入 判断从机响应信号  
           DHT_SET; 
         //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行           
           DHT_IN; 
           if(!DHT_R)                    
           { 
             U8FLAG=2; 
             //判断从机是否发出 80us 的低电平响应信号是否结束          
              while((!DHT_R)&&U8FLAG++); 
             U8FLAG=2; 
              //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态 
              while((DHT_R)&&U8FLAG++); 
               //数据接收状态                  
              COM(); 
              U8RH_data_H_temp=U8comdata; 
              COM(); 
              U8RH_data_L_temp=U8comdata; 
              COM(); 
              U8T_data_H_temp=U8comdata; 
              COM(); 
              U8T_data_L_temp=U8comdata; 
             COM(); 
               U8checkdata_temp=U8comdata; 
             DHT_OUT; 
             DHT_SET; 
             //数据校验  
          
           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_H、 U8RH_data_L、 U8T_data_H、 U8T_data_L数据都为0 
                     U8RH_data_L=U8RH_data_L_temp; 
                  U8T_data_H=U8T_data_H_temp; 
                     U8T_data_L=U8T_data_L_temp; 
                     U8checkdata=U8checkdata_temp; 
           } 
           } 
 
} |   
     
  
 |