⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tem_rh.lst

📁 基于STC58RD+的SHT11高精度温度传感器的51源码
💻 LST
字号:
C51 COMPILER V7.06   TEM_RH                                                                07/22/2005 14:37:49 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEM_RH
OBJECT MODULE PLACED IN .\tem_rh.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\stc直放站\tem_rh.c OMF2 BROWSE DEBUG PRINT(.\tem_rh.lst) OBJECT(.\tem_rh
                    -.obj)

stmt level    source

   1          #include <reg52.h>
   2          //#include "param.h"
   3          typedef unsigned char INT8U;            /* 8 bit 无符号整型  */
   4          typedef unsigned int  INT16U;           /* 16 bit 无符号整型 */
   5          
   6          sbit    sck=P1^0;
   7          sbit    sda=P1^1;
   8          #define sht11_tep_test  0x03    //温度测量命令
   9          #define sht11_rh_test   0x05    //湿度测量命令
  10          
  11          //延时函数
  12          void sht11_delay(unsigned int i)
  13          {
  14   1       while(--i);
  15   1      }
  16          
  17          //SHT11传输初始化
  18          void sht11_Init()
  19          {   sda=1;                 //SDA高
  20   1          sht11_delay(5);
  21   1          sck=1;                 //SCL高
  22   1          sht11_delay(5);
  23   1          sda=0;                 //SDA低
  24   1          sht11_delay(5);
  25   1          sck=0;                 //SCL低
  26   1          sht11_delay(5);
  27   1          sck=1;                 //SCL高
  28   1          sht11_delay(5);
  29   1          sda=1;                 //SDA高
  30   1          sht11_delay(5);
  31   1          sck=0;                 //SCL低
  32   1          sht11_delay(5); 
  33   1      }
  34          //SHT11写测量命令字
  35          void sht11_wr_comd(INT8U comd_byte)
  36          {   INT8U i=0;      
  37   1          while(i<8)
  38   1               {      if((comd_byte&(0x80>>i)))
  39   2                { sda=1;
  40   3                  sht11_delay(5);
  41   3                  sck=1; 
  42   3                  sht11_delay(5);           
  43   3                } 
  44   2              else
  45   2                { sda=0;
  46   3                  sht11_delay(5);
  47   3                  sck=1;
  48   3                  sht11_delay(5); 
  49   3                }          
  50   2              i++;         
  51   2           }  
  52   1          sck=0;
  53   1          sht11_delay(5);      
  54   1      }
C51 COMPILER V7.06   TEM_RH                                                                07/22/2005 14:37:49 PAGE 2   

  55          
  56          //读SHT11应答信号
  57          bit sht11_ack()
  58          {  sck=1;
  59   1         sht11_delay(5); 
  60   1         if(sda)
  61   1            return(0);
  62   1         else
  63   1            return(1);     
  64   1      }
  65          
  66          //SHT11读两字节温湿度值
  67          INT16U sht11_rd_tr()
  68          {  INT16U dat=0;
  69   1         INT8U  i,j=2;
  70   1         while(sda);       //等待转换完毕
  71   1         while(j-->0)
  72   1               {  for (i=8;i>0;i--)
  73   2                   { 
  74   3                        sck=1;
  75   3                    sht11_delay(5);
  76   3                        dat<<=1;        
  77   3                        if(sda)
  78   3                         dat|=0x01;
  79   3                    sck=0;
  80   3                        sht11_delay(5); 
  81   3                   } 
  82   2              sda=0;
  83   2                  sht11_delay(5);
  84   2              sck=1;
  85   2              sht11_delay(5);
  86   2              sda=1;
  87   2           }
  88   1         return(dat);   
  89   1      }
  90          //SHT11复位时序
  91          void sht11_reset()
  92          {  INT8U i=10;
  93   1         sck=1;
  94   1         sht11_delay(5);
  95   1         sda=1;
  96   1         while(i-->0)
  97   1           { sck=0;
  98   2             sht11_delay(5);
  99   2             sck=1;
 100   2             sht11_delay(5);
 101   2            }  
 102   1          sck=0; 
 103   1      }
 104          //得到温湿度值
 105          
 106          INT16U  sht11_tem_rh(INT8U comd)
 107          {   INT16U dat;
 108   1      STAR:
 109   1          sht11_Init();
 110   1          sht11_wr_comd(comd);
 111   1          if(sht11_ack()!=0)
 112   1            { 
 113   2              sht11_reset();
 114   2              goto   STAR;
 115   2             }
 116   1          sht11_delay(4500);
C51 COMPILER V7.06   TEM_RH                                                                07/22/2005 14:37:49 PAGE 3   

 117   1          dat=sht11_rd_tr();
 118   1          return(dat); 
 119   1      }
 120          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    222    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
   EDATA SIZE       =   ----    ----
   HDATA SIZE       =   ----    ----
   XDATA CONST SIZE =   ----    ----
   FAR CONST SIZE   =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -