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

📄 arithmetic.lst

📁 开发的一个温控仪完整代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   ARITHMETIC                                                            03/06/2007 20:40:54 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ARITHMETIC
OBJECT MODULE PLACED IN Arithmetic.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE Arithmetic.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "TempCtrl.h"
   2          
   3          #define NBP     (-10)
   4          #define NSP     (-2)
   5          #define ZP      2
   6          #define PSP     10
   7          
   8          void SamplingProcess()
   9          {
  10   1      
  11   1      //频率->电阻
  12   1              
  13   1              k1=TpTH0<<8;
  14   1              k1+=TpTL0;//k1:freq
  15   1      
  16   1      //FF功能
  17   1              if(FFSta)
  18   1              switch(FFSta)
  19   1              {
  20   2                      case 3000:
  21   2                              //(EPP_F100,k1);//零点漂移
  22   2                              if(k1>=Fr2Temp[0])
  23   2                              {
  24   3                                      k0=k1-Fr2Temp[0];
  25   3                              }
  26   2                              else
  27   2                              {
  28   3                                      k0=Fr2Temp[0]-k1;
  29   3                                      k0|=0x8000;
  30   3                              }
  31   2                              PassWordLock=0;
  32   2                              Write(EP_FrMin,k0);
  33   2                              PassWordLock=1;
  34   2      
  35   2                              UpdateFrZero(); //使用了k0
  36   2                              
  37   2                              AdmitFlag=5;
  38   2                              Led(k1);
  39   2                              LedBuf[0]=LedCode[C_A];
  40   2                              break;
  41   2                      case 3001:
  42   2                              if(k1>=Fr2Temp[45])
  43   2                              {
  44   3                                      k0=k1-Fr2Temp[45];
  45   3                              }
  46   2                              else
  47   2                              {
  48   3                                      k0=Fr2Temp[45]-k1;
  49   3                                      k0|=0x8000;
  50   3                              }
  51   2                              PassWordLock=0;
  52   2                              Write(EP_FrMax,k0);
  53   2                              PassWordLock=1;
  54   2      
  55   2                              UpdateFrZero();
C51 COMPILER V7.50   ARITHMETIC                                                            03/06/2007 20:40:54 PAGE 2   

  56   2                              
  57   2                              AdmitFlag=5;
  58   2                              Led(k1);
  59   2                              LedBuf[0]=LedCode[C_b];
  60   2                              break;
  61   2                      case 1000://频率显示
  62   2                              AdmitFlag=2;
  63   2                              Led(k1);
  64   2                              LedBuf[0]=LedCode[C_F];
  65   2                              break;
  66   2                      case 2000://补偿显示:100欧时
  67   2                              AdmitFlag=6;
  68   2                              k0=Read(EP_FrMin);
  69   2                              if(k0 & 0x8000)
  70   2                              {
  71   3                                      Led(k0 & 0x7fff);
  72   3                                      LedBuf[1]=LedCode[C_Fuhao];
  73   3                              }
  74   2                              else
  75   2                                      Led(FrZero);
  76   2                              LedBuf[0]=LedCode[C_c];
  77   2                              break;
  78   2                      case 2001://补偿显示:250欧时
  79   2                              AdmitFlag=6;
  80   2                              k0=Read(EP_FrMax);
  81   2                              if(k0 & 0x8000)
  82   2                              {
  83   3                                      Led(k0 & 0x7fff);
  84   3                                      LedBuf[1]=LedCode[C_Fuhao];
  85   3                              }
  86   2                              else
  87   2                                      Led(FrZero);
  88   2                              LedBuf[0]=LedCode[C_d];
  89   2                              break;
  90   2                      default:
  91   2                              AdmitFlag=1;
  92   2                              FFSta=0;
  93   2              }
  94   1      
  95   1              if(FrZero>=0)
  96   1              {
  97   2                      k0=FrZero;
  98   2                      k1=k1-k0;
  99   2              }
 100   1              else
 101   1              {
 102   2                      k0=-FrZero;
 103   2                      k1=k1+k0;
 104   2              }
 105   1      
 106   1      //k1为频率值
 107   1              
 108   1              if(k1<Fr2Temp[0])
 109   1                      k1=Fr2Temp[0];
 110   1      
 111   1              if((k1>Fr2Temp[0])&&(k1<Fr2Temp[45]))
 112   1              {
 113   2                      for(i=0;i<46;i++)//(6-1)次即可
 114   2                              if(k1<Fr2Temp[i])
 115   2                                      break;
 116   2                      i-=1;
 117   2                      x1=100.0*i+(k1-Fr2Temp[i])*100.0/(Fr2Temp[i+1]-Fr2Temp[i])+0.5;
C51 COMPILER V7.50   ARITHMETIC                                                            03/06/2007 20:40:54 PAGE 3   

 118   2              }
 119   1              else if(k1<=Fr2Temp[0])
 120   1              {
 121   2                      x1=0;
 122   2              }
 123   1              else
 124   1              {
 125   2                      LedBuf[0]=LedCode[C_o];LedBuf[1]=LedCode[C_o];
 126   2                      LedBuf[2]=LedCode[C_o];LedBuf[3]=LedCode[C_o];
 127   2                      //return;//超范围则直接返回
 128   2              }
 129   1      
 130   1              //Temperature=x1;//kf
 131   1              if(IdTimeCnt==0)
 132   1              {
 133   2                      PreTemperature=LastTemperature;
 134   2                      LastTemperature=Temperature;
 135   2                      Temperature=x1;
 136   2              
 137   2                      dError=Error;
 138   2                      Error=Setted_Temperature-Temperature;
 139   2                      dError=Error-dError;
 140   2              }
 141   1              else
 142   1              {
 143   2                      FastLastTemperature=Temperature;
 144   2                      Temperature=x1;
 145   2              }
 146   1      //显示温度

⌨️ 快捷键说明

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