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

📄 main.lst

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


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

stmt level    source

   1          #include <main.h>
   2          #include <Adjust.h>
   3          #include <ISR.h>
   4          #include <Meansure.h>
   5          #include <math.h>
   6          sbit P00=P0^0;
   7          sbit P01=P0^1;
   8          sbit P02=P0^2;
   9          sbit P03=P0^3;
  10          sbit P04=P0^4;
  11          sbit P05=P0^5;
  12          sbit P06=P0^6;
  13          sbit P07=P0^7;
  14          sbit P27=P2^7;
  15          void Reset();
  16          char timer_trik,up_warn_T=100,low_warn_T=0,up_warn_H=100,low_warn_H=0;
  17          unsigned int disp_val1=0,disp_val2=0;
  18          /******************************************/
  19          //程序名:void delay()
  20          //功能:延时程序
  21          //作者:唐立军
  22          //时间:2007.11.15
  23          /******************************************/
  24          void delay()
  25          {
  26   1              unsigned char del1,del2;
  27   1              for(del1=0;del1<96;del1++)
  28   1                      for(del2=0;del2<255;del2++);
  29   1      }
  30          /******************************************/
  31          //程序名:void Getkey()
  32          //功能:获取键值程序
  33          //作者:唐立军
  34          //时间:2007.11.15
  35          /******************************************/
  36          unsigned char Getkey()
  37          {       
  38   1              unsigned char temp1,temp2;
  39   1              temp1 = P2;
  40   1              temp1 = temp1 & 0x1f;
  41   1              if(temp1==0)
  42   1                              return 0;
  43   1              else
  44   1              {
  45   2                              delay();
  46   2                              temp2 = P2;
  47   2                              temp2 = temp2&0x3f;
  48   2                              if(temp1 == temp2)
  49   2                                      return(temp2);
  50   2              }
  51   1      
  52   1      }
  53          /******************************************/
  54          //程序名:timer0_initialize(void)
  55          //功能:定时器0初始化程序
C51 COMPILER V7.06   MAIN                                                                  11/19/2007 13:50:12 PAGE 2   

  56          //作者:唐立军
  57          //时间:2007.11.15
  58          /******************************************/
  59          static void timer0_initialize(void)
  60          {
  61   1              EA = 0;
  62   1              timer_trik = 0;
  63   1              TR0 = 0;
  64   1              TMOD &= 0xf0;
  65   1              TMOD |=0x01;
  66   1              TL0 = (TIME0_COUNT&0xff);
  67   1              TH0 = (TIME0_COUNT>>8);
  68   1              PT0 = 0;
  69   1              ET0 = 1;
  70   1              TR0 = 1;
  71   1              EA = 1;
  72   1      }
  73          
  74          /******************************************/
  75          //程序名:
  76          //功能:
  77          //作者:唐立军
  78          //时间:2007.11.15
  79          /******************************************/
  80          void main()
  81          {
  82   1              unsigned char c=0;
  83   1              unsigned char key,flag=0;
  84   1          unsigned char *p_value1,  *p_checksum1;
  85   1              unsigned char *p_value2,  *p_checksum2;
  86   1              float *p_humidity,*p_temperature,temp1,temp2;
  87   1              timer0_initialize();
  88   1              while(1)
  89   1              {
  90   2              key = Getkey();
  91   2              switch(key)                                                     
  92   2              {
  93   3                      case KEY1:
  94   3                              flag++;
  95   3                              if(flag>4)
  96   3                              flag=0;                 
  97   3                      break;
  98   3                      case KEY2:
  99   3                      break;
 100   3                      case KEY3:
 101   3                      break;
 102   3                      case KEY4:
 103   3                      switch(flag)
 104   3                      {
 105   4                              case 1:T_warn_UP();
 106   4                              break;
 107   4                              case 2:T_warn_LOW();
 108   4                              break;
 109   4                              case 3:H_warn_UP();
 110   4                              break;
 111   4                              case 4:H_warn_LOW();
 112   4                              break;
 113   4                              default:
 114   4                              break;                                                          
 115   4                      }
 116   3                      break;
 117   3                      case KEY5: 
C51 COMPILER V7.06   MAIN                                                                  11/19/2007 13:50:12 PAGE 3   

 118   3                               if(++c==2)
 119   3                               {
 120   4                               Reset();
 121   4                               c=0;
 122   4                      //       P02 = 1;P03 = 1;P04 = 1;P05 = 1;P06 = 1;P27=0;         //复位LED灯亮
 123   4                               }
 124   3                      break;
 125   3                      default:
 126   3                      break;
 127   3              }
 128   2              switch(flag)
 129   2                              {
 130   3                                      case 0: P02 = 0;P03 = 1;P04 = 1;P05 = 1;P06 = 1;P27=1;          //指示显示温度和湿度LED灯亮
 131   3                                                      break;
 132   3                                      case 1:
 133   3                                                      P02 = 1;P03 = 0;P04 = 1;P05 = 1;P06 = 1;P27=1;          //指示设定温度上限LED灯亮
 134   3                                                      break;
 135   3                                      case 2:
 136   3                                                      P02 = 1;P03 = 1;P04 = 0;P05 = 1;P06 = 1;P27=1;          //指示设定温度下限LED灯亮
 137   3                                                      break;
 138   3                                      case 3:
 139   3                                                      P02 = 1;P03 = 1;P04 = 1;P05 = 0;P06 = 1;P27=1;          //指示设定湿度上限LED灯亮
 140   3                                                      break;
 141   3                                      case 4:
 142   3                                                      P02 = 1;P03 = 1;P04 = 1;P05 = 1;P06 = 0;P27=1;          //指示设定湿度下限LED灯亮
 143   3                                                      break;                                                                          
 144   3                                  default:
 145   3                                      break;
 146   3                              }
 147   2              
 148   2              }
 149   1              s_measure(p_value1, p_checksum1, TEMP);         //测量温度
 150   1              s_measure(p_value2, p_checksum2, HUMI);         //测量湿度
 151   1              *p_temperature = (float)(*p_value1+(*(p_value1+1)&0x01)*256+(*(p_value1+1)&0x02)*512+(*(p_value1+1)&0x04)
             -*1024+(*(p_value1+1)&0x08)*2048
 152   1                                              +(*(p_value1+1)&0x10)*4096+(*(p_value1+1)&0x20)*8192);          //14位温度数据转换为浮点型
 153   1              *p_humidity = (float)(*p_value1+(*(p_value1+1)&0x01)*256+(*(p_value1+1)&0x02)*512+(*(p_value1+1)&0x04)*10
             -24+(*(p_value1+1)&0x08)*2048);        //12位湿度数据转换为浮点型                              
 154   1              calc_sth15( p_humidity, p_temperature);                 //温度和湿度的标度变换
 155   1              
 156   1              temp1 = *p_temperature;
 157   1              temp2 = *p_humidity;
 158   1      
 159   1              temp1=fabs(temp1);  //取样获取的浮点数转成绝对值
 160   1              disp_val1=(int)(temp1*100); //小数点标志point置1。
 161   1              temp2=fabs(temp2);  //取样获取的浮点数转成绝对值
 162   1              disp_val2=(int)(temp2*100); //小数点标志point置1。
 163   1              if((disp_val1*100>up_warn_T|disp_val1*100<low_warn_T|disp_val2*100>up_warn_H|disp_val2*100<low_warn_H)) /
             -/报警判断
 164   1                                                      P07=1;                  //开始报警
 165   1      
 166   1      }
 167          /******************************************/
 168          //程序名:Reset()
 169          //功能:报警复位
 170          //作者:唐立军
 171          //时间:2007.11.15
 172          /******************************************/
 173          
 174          void Reset()            
 175          {
 176   1              P07=0;                          //报警停止
C51 COMPILER V7.06   MAIN                                                                  11/19/2007 13:50:12 PAGE 4   

 177   1              up_warn_T=100;          //将温度上下限设为100,0
 178   1              low_warn_T=0;
 179   1              up_warn_H=100;          //将湿度上下限设为100,0
 180   1              low_warn_H=0;
 181   1      }
 182          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    237    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9      28
   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 + -