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

📄 meansure.lst

📁 用于测定温度和湿度值
💻 LST
字号:
C51 COMPILER V7.06   MEANSURE                                                              11/19/2007 13:45:29 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MEANSURE
OBJECT MODULE PLACED IN Meansure.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Meansure.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <Meansure.h>
   2          sbit P00=P0^0;
   3          sbit P01=P0^1;
   4          //启动传输
   5          void s_transstart()
   6          {
   7   1        unsigned char i=9;
   8   1        while(i--<0)
   9   1        {
  10   2        P01=1;
  11   2        P01=0;
  12   2        }
  13   1        P01=1;P00=0;
  14   1        P01=0;P00=1;
  15   1        P01=1;P00=0;
  16   1      }
  17          
  18          //写字节数据
  19          char s_write_byte(unsigned char value)
  20          {
  21   1                unsigned char i,error=0;
  22   1                for (i=0x80;i>0;i/=2)
  23   1                {
  24   2                      if (i & value) DATA=1;
  25   2                              else 
  26   2                                      DATA=0;
  27   2                      SCK=1;
  28   2                      ; ; ; 
  29   2                      SCK=0;
  30   2              }
  31   1                      DATA=1;
  32   1                      SCK=1;
  33   1                      error=DATA;
  34   1                      SCK=0;
  35   1                      return error;
  36   1          }
  37          //读字节数据
  38          char s_read_byte (unsigned char ack)
  39          {
  40   1               unsigned char i,val=0;
  41   1               DATA=1;
  42   1              for (i=0x80;i>0;i/=2)
  43   1              {
  44   2                      SCK=1;
  45   2                      if(DATA) val=(val | i);
  46   2                      SCK=0;
  47   2              }
  48   1              DATA=!ack;
  49   1              SCK=1;
  50   1              ; ; ;
  51   1              SCK=0;
  52   1              DATA=1;
  53   1              return val;
  54   1        }
  55          //读状态寄存器
C51 COMPILER V7.06   MEANSURE                                                              11/19/2007 13:45:29 PAGE 2   

  56          char s_read_statusreg(unsigned char *p_value,unsigned char *p_checksum)
  57          {
  58   1               unsigned char error=0;
  59   1               s_transstart();
  60   1               error=s_write_byte(ACK);
  61   1               *p_value=s_read_byte(ACK);
  62   1               *p_checksum=s_read_byte(noACK);
  63   1               return error;
  64   1      }
  65          //写状态寄存器
  66          char s_write_statusreg(unsigned char *p_value)
  67          {
  68   1               unsigned char error=0;
  69   1               s_transstart();
  70   1               error+=s_write_byte(STATUS_REG_R);
  71   1               error+=s_write_byte(*p_value);
  72   1               return error;
  73   1      }
  74          //读温湿度数据
  75          char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)
  76          {
  77   1               unsigned char error=0;
  78   1               unsigned int i;
  79   1               s_transstart();
  80   1              switch(mode)
  81   1              {
  82   2                 case TEMP:error+=s_write_byte(MEASURE_TEMP);break;
  83   2                 case HUMI:error+=s_write_byte(MEASURE_HUMI);break;
  84   2                 default:break;
  85   2              }
  86   1      for (i=0;i<65535;i++) if(DATA==0) break;
  87   1              if (DATA) error+=1;
  88   1              *(p_value)=s_read_byte(SCK);
  89   1              *(p_value+1)=s_read_byte(SCK);
  90   1              *p_checksum=s_read_byte(SCK);
  91   1              return error;
  92   1      }
  93          
  94          //温湿度值标度变换及温度补偿
  95          void calc_sth15(float *p_humidity,float *p_temperature)
  96          { 
  97   1              const float c1=-4.0;
  98   1              const float c2=0.0405;
  99   1              const float c3=-0.0000028;
 100   1              const float t1=-0.01;
 101   1              const float t2=0.00008;
 102   1              float rh=*p_humidity;
 103   1              float t=*p_temperature;
 104   1                float rh_lin;
 105   1                float th_ture;
 106   1                float t_c;
 107   1                t_c=t*0.01-40;
 108   1                rh_lin=c3*rh*rh+c2*rh+c1;
 109   1                th_ture=(t_c-25)*(t1+t2*rh)+rh_lin;
 110   1                *p_temperature=t_c;
 111   1                *p_humidity=th_ture;
 112   1      }
 113          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    632    ----
C51 COMPILER V7.06   MEANSURE                                                              11/19/2007 13:45:29 PAGE 3   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      60
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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