C51 COMPILER V9.60.0.0   DHT11                                                             02/21/2022 21:12:49 PAGE 1   


C51 COMPILER V9.60.0.0, COMPILATION OF MODULE DHT11
OBJECT MODULE PLACED IN .\Objects\dht11.obj
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE dht11.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\Listings\dht
                    -11.lst) TABS(2) OBJECT(.\Objects\dht11.obj)

line level    source

   1          #include "dht11.h"
   2          
   3          
   4          void dht11_Delay32us(void)    //@11.0592MHz
   5          {
   6   1        unsigned char i;
   7   1      
   8   1        i = 12;
   9   1        while (--i);
  10   1      }
  11          void dht11_Delay20ms(void)    //@11.0592MHz
  12          {
  13   1        unsigned char i, j;
  14   1      
  15   1        i = 36;
  16   1        j = 217;
  17   1        do
  18   1        {
  19   2          while (--j);
  20   2        } while (--i);
  21   1      }
  22          void dht11_Delay50us(void)    //@11.0592MHz
  23          {
  24   1        unsigned char i;
  25   1      
  26   1        _nop_();
  27   1        i = 20;
  28   1        while (--i);
  29   1      }
  30          
  31          
  32          unsigned char dht11_read_byte(void)
  33          {
  34   1          unsigned char r_val = 0; 
  35   1          unsigned char t_count = 0; //��ʱ������ֹ��ʱ��
  36   1          unsigned char i;
  37   1          
  38   1          for(i = 0 ; i < 8 ; i++)
  39   1          {
  40   2              t_count = 0;
  41   2            
  42   2              //�͵�ƽ50us��ʼһ������λ��ȡ��
  43   2              while( !DHT11_PIN )
  44   2              {
  45   3                    _nop_();
  46   3                    t_count++;
  47   3                    if(t_count > 250) //��ʱ��
  48   3                        return 100;
  49   3              } 
  50   2              t_count = 0;
  51   2                                   
  52   2              dht11_Delay32us();  //32us
  53   2              
  54   2              //�ߵ�ƽ26~28us��ʾ'0',70us��ʾ'1'
C51 COMPILER V9.60.0.0   DHT11                                                             02/21/2022 21:12:49 PAGE 2   

  55   2              if( DHT11_PIN == 1 )
  56   2              {      
  57   3                  r_val <<= 1;
  58   3                  r_val |= 1;
  59   3              }
  60   2              else
  61   2              {
  62   3                  r_val <<= 1;
  63   3                  continue;
  64   3              }
  65   2                     
  66   2              //�ȴ�DHT11�������������      
  67   2              while( DHT11_PIN == 1)
  68   2              {
  69   3                 _nop_();
  70   3                  t_count++;
  71   3                  if(t_count>250)
  72   3                  {
  73   4                      return 100;
  74   4                  }
  75   3              }            
  76   2          }
  77   1          return r_val;  
  78   1      }
  79          
  80          
  81          char dht11_value(unsigned char *temp , unsigned char *humi , unsigned char flag)
  82          {
  83   1           unsigned char t_count = 0; //��ʱ����
  84   1           unsigned char h_i = 0 , h_f = 0;
  85   1           unsigned char t_i = 0 , t_f = 0;
  86   1           unsigned char check_sum = 0;
  87   1           
  88   1           DHT11_PIN_OUT();
  89   1           DHT11_PIN_L();  //����͵�ƽ��
  90   1           
  91   1           //�͵�ƽ����ʱ��������18ms;
  92   1           dht11_Delay20ms(); //20ms;
  93   1           
  94   1           DHT11_PIN_H();  //���������ź�,�ߵ�ƽ��
  95   1           
  96   1           //�����ȴ�20us~40us����ȡDHT11��Ӧ�����
  97   1          dht11_Delay32us();
  98   1           
  99   1           DHT11_PIN_IN();
 100   1           if(DHT11_PIN == 0) //��ȷ����Ӧ�����
 101   1           {        
 102   2                  while( !DHT11_PIN )
 103   2                  {
 104   3                       _nop_();
 105   3                        t_count++;
 106   3                  
 107   3                        if(t_count > 250) //��ʱ��
 108   3                          return -1;
 109   3                  }   
 110   2                  
 111   2                  t_count = 0;
 112   2                  
 113   2                 dht11_Delay50us(); //DHT11������Ӧ��������������80us;
 114   2                  while( DHT11_PIN ); //�ȴ����գ�
 115   2                  {
 116   3                       _nop_();
C51 COMPILER V9.60.0.0   DHT11                                                             02/21/2022 21:12:49 PAGE 3   

 117   3                        t_count++;
 118   3                  
 119   3                        if(t_count > 250) //��ʱ��
 120   3                           return -1;
 121   3                  }  
 122   2                  EA=0;
 123   2                  h_i = dht11_read_byte(); //ʪ���������֣�
 124   2                  h_f = dht11_read_byte(); //ʪ��С�����֣�
 125   2                  t_i = dht11_read_byte(); //�¶��������֣�
 126   2                  t_f = dht11_read_byte(); //�¶�С�����֣�
 127   2                  check_sum = dht11_read_byte(); //У��ͣ�  
 128   2                  EA=1;  
 129   2                  //У�����ȷ������ʪ���������ֻ�ȡ��ȷ����ʾ��ȡ�ɹ���
 130   2                  if(check_sum == ( h_i + h_f + t_i + t_f ) || (h_i != 100 && t_i != 100) )
 131   2                  {            
 132   3                        if(flag == DHT11_STRING)
 133   3                        {
 134   4                            temp[0] = t_i/10+0x30;
 135   4                            temp[1] = t_i%10+0x30;
 136   4                            humi[0] = h_i/10+0x30;
 137   4                            humi[1] = h_i%10+0x30;
 138   4                        }
 139   3                        else 
 140   3                        {
 141   4                            if(t_i<=50&&h_i<95)
 142   4                            {
 143   5                            *temp = t_i;
 144   5                            *humi = h_i;
 145   5                            }
 146   4                        }                                                       
 147   3                  }
 148   2                  else
 149   2                  {          
 150   3      //                if(flag == DHT11_STRING)
 151   3      //                {
 152   3      //                    temp[0] = '0';
 153   3      //                    temp[1] = '0';
 154   3      //                    humi[0] = '0';
 155   3      //                    humi[1] = '0';
 156   3      //                }
 157   3      //                else 
 158   3      //                {
 159   3      //                    *temp = 0;
 160   3      //                    *humi = 0;
 161   3      //                }     
 162   3          
 163   3                      return -1;
 164   3                  }
 165   2           }
 166   1           else
 167   1           {
 168   2      //           if(flag == DHT11_STRING)
 169   2      //            {
 170   2      //                temp[0] = '0';
 171   2      //                temp[1] = '0';
 172   2      //                humi[0] = '0';
 173   2      //                humi[1] = '0';
 174   2      //            }
 175   2      //            else 
 176   2      //            {
 177   2      //                *temp = 0;
 178   2      //                *humi = 0;
C51 COMPILER V9.60.0.0   DHT11                                                             02/21/2022 21:12:49 PAGE 4   

 179   2      //            }     
 180   2      
 181   2                  return -1; 
 182   2           }     
 183   1           return 0;
 184   1      }
 185          
 186          
 187          
 188          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    401    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)