C51 COMPILER V9.54   DHT11                                                                 02/17/2022 16:20:58 PAGE 1   


C51 COMPILER V9.54, COMPILATION OF MODULE DHT11
OBJECT MODULE PLACED IN .\Objects\dht11.obj
COMPILER INVOKED BY: C:\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          
   5          void dht11_Delay32us(void)    //@11.0592MHz
   6          {
   7   1        unsigned char i;
   8   1      
   9   1        i = 12;
  10   1        while (--i);
  11   1      }
  12          void dht11_Delay20ms(void)    //@11.0592MHz
  13          {
  14   1        unsigned char i, j;
  15   1      
  16   1        i = 36;
  17   1        j = 217;
  18   1        do
  19   1        {
  20   2          while (--j);
  21   2        } while (--i);
  22   1      }
  23          void dht11_Delay50us(void)    //@11.0592MHz
  24          {
  25   1        unsigned char i;
  26   1      
  27   1        _nop_();
  28   1        i = 20;
  29   1        while (--i);
  30   1      }
  31          
  32          
  33          unsigned char dht11_read_byte(void)
  34          {
  35   1          unsigned char r_val = 0; 
  36   1          unsigned char t_count = 0; //��ʱ������ֹ��ʱ��
  37   1          unsigned char i;
  38   1          
  39   1          for(i = 0 ; i < 8 ; i++)
  40   1          {
  41   2              t_count = 0;
  42   2            
  43   2              //�͵�ƽ50us��ʼһ������λ��ȡ��
  44   2              while( !DHT11_PIN )
  45   2              {
  46   3                    _nop_();
  47   3                    t_count++;
  48   3                    if(t_count > 250) //��ʱ��
  49   3                        return 100;
  50   3              } 
  51   2              t_count = 0;
  52   2                                   
  53   2              dht11_Delay32us();  //32us
  54   2              
C51 COMPILER V9.54   DHT11                                                                 02/17/2022 16:20:58 PAGE 2   

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

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    367    ----
   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)