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

📄 filter.lst

📁 通过调节一个可变电阻得到变化的电压来模拟一个湿度度传感器
💻 LST
字号:
C51 COMPILER V8.05a   FILTER                                                               10/28/2008 10:30:07 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE FILTER
OBJECT MODULE PLACED IN filter.OBJ
COMPILER INVOKED BY: F:\Keil C51 V8\C51\BIN\C51.EXE filter.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <math.h>
   2          
   3          #define N 7
   4          int _buf[N];
   5          unsigned char _n = 0;
   6          unsigned char _ptr = 0;
   7          
   8          //限幅滤波
   9          //滤波幅度
  10          int _filter_0(int v) {
  11   1              return 0;
  12   1      }
*** WARNING C280 IN LINE 10 OF FILTER.C: 'v': unreferenced local variable
  13          
  14          //中值滤波
  15          int _filter_1(int v) {
  16   1              int tmp[N];
  17   1              unsigned char i = 0, j = 0;
  18   1              int s = 0;
  19   1              _buf[_ptr] = v;
  20   1              if (++_ptr == N) _ptr = 0;
  21   1              if (_n < N) _n++;
  22   1              for (i = 0 ; i < _n ; i++) tmp[i] = _buf[i];
  23   1              //对tmp排序(冒泡法)
  24   1              for (i = 0 ; i < _n - 1 ; i++) {
  25   2                      for (j = i + 1 ; j < _n ; j++) {
  26   3                              if (tmp[i] > tmp[j]) {
  27   4                                      s = tmp[i];
  28   4                                      tmp[i] = tmp[j];
  29   4                                      tmp[j] = s;
  30   4                              }
  31   3                      }
  32   2              }
  33   1              return tmp[_n / 2];             
  34   1      }
  35          
  36          //算术平均值滤波
  37          int _filter_2(int v) {
  38   1              return 0;
  39   1      }
*** WARNING C280 IN LINE 37 OF FILTER.C: 'v': unreferenced local variable
  40          
  41          //滑动平均值滤波
  42          int _filter_3(int v) {
  43   1              unsigned char i = 0;
  44   1              int sum = 0;
  45   1              buf[_ptr] = v;
  46   1              if (++_ptr == N) _ptr = 0;
  47   1              if (_n < N) _n++;
  48   1              for (i = 0 ; i < _n ; i++)
  49   1                      sum += buf[i];
  50   1              return sum / _n;
  51   1      }
  52          
  53          //加权滑动平均值滤波
C51 COMPILER V8.05a   FILTER                                                               10/28/2008 10:30:07 PAGE 2   

  54          //unsigned char weight[N] = {1, 1, 2, 2, 2, 2, 90};//接近于不滤波
  55          unsigned char code weight[N] = {1, 2, 2, 5, 10, 20, 60};
  56          //unsigned char weight[N] = {5, 7, 8, 12, 18, 25, 25};
  57          //unsigned char weight[N] = {14, 14, 14, 14, 14, 14, 16};//相当于不加权
  58          int _filter_4(int v) {
  59   1              unsigned char i = 0, j = 0;
  60   1              float rst = 0;
  61   1              _buf[_ptr] = v;
  62   1              if (_n < N) _n++;
  63   1              for (i = 0 ; i < _n ; i++) {
  64   2                      j = _ptr + i;
  65   2                      if (j >= _n) j -= _n;
  66   2                      rst += (float)_buf[j] / 100.0 * (float)weight[_n - 1 - i];      
  67   2              }
  68   1              if (++_ptr == N) _ptr = 0;
  69   1              return rst;
  70   1      }
  71          
  72          int filter(int v, unsigned char flt_idx) {
  73   1              switch (flt_idx) {
  74   2              case 0:
  75   2                      return v;
  76   2              case 1:
  77   2                      return _filter_0(v);//限幅
  78   2              case 2:
  79   2                      return _filter_1(v);//中值
  80   2              case 3:
  81   2                      return _filter_2(v);//算术平均
  82   2              case 4:
  83   2                      return _filter_3(v);//滑动
  84   2              case 5:
  85   2                      return _filter_4(v);//加权滑动
  86   2              default:
  87   2                      return 0;
  88   2              }
  89   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    542    ----
   CONSTANT SIZE    =      7    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      26
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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