main.lst
来自「本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.」· LST 代码 · 共 122 行
LST
122 行
C51 COMPILER V7.01 MAIN 06/14/2004 19:30:06 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //**********************************************************************
2 //功能 : 定点滤波程序
3 //作者 : lihj
4 //创建日期 : 2004-06-13
5 //版本 : V1.0
6 //修改记录 :
7 //***********************************************************************
8 #include "math.h"
9
10 //系统参数配置
11 #define TS 5 //信号采样周期定义,单位是100ms
12 #define TF 20 //滤波时间常数定义,单位是100ms
13 #define DOT_BITS 8 //滤波过程中的放大倍数(定点数小数位数)
14
15 //全局变量定义
16 int g_nPreInput; //上一周期的采样值
17
18 //内部函数声明
19 int Filter(int); //滤波函数
20
21 //外部函数声明
22 int Sample(void); //信号采样接口函数
23 void HardIni(void); //硬件初始化接口
24
25 //主循环
26 void main(void)
27 {
28 1 int CurSigVal; //当前信号值
29 1 int i;
30 1
31 1 //硬件初始化
32 1 HardIni();
33 1
34 1 //全局变量初始化
35 1 g_nPreInput = 0;
36 1
37 1 while(1)
38 1 {
39 2 CurSigVal = Filter(Sample()); //采样并滤波
40 2 for(i=0;i<20000;i++); //待机一段时间后,开始下一循环
41 2 }
42 1 }
43
44 //一阶惯性滤波
45 //最差情况下,12MHz晶振,需要0.27ms
46 int Filter(int CurInput)
47 {
48 1 int t;
49 1 int temp;
50 1 int input;
51 1
52 1 input = CurInput<<DOT_BITS;
53 1
54 1 //如果信号没有改变,则直接返回
55 1 if(g_nPreInput == input)
C51 COMPILER V7.01 MAIN 06/14/2004 19:30:06 PAGE 2
56 1 {
57 2 return CurInput;
58 2 }
59 1
60 1 //对信号进行限幅,输入值不能超过32767/(TS<<DOT_BITS)
61 1 if(CurInput > (32767/(TS<<DOT_BITS)))
62 1 {
63 2 CurInput = 32767/(TS<<DOT_BITS);
64 2
65 2 //可以进行越限报警
66 2 //......
67 2 }
68 1
69 1 //已经逼进最终值时的处理
70 1 temp = (CurInput<<DOT_BITS)-g_nPreInput;
71 1 if(abs(temp)*TS < (TS+TF))
72 1 {
73 2 g_nPreInput = input;
74 2 return CurInput;
75 2 }
76 1
77 1 //滤波计算
78 1 //保存本周期的计算值
79 1 g_nPreInput = g_nPreInput + (temp*TS)/(TS+TF);
80 1
81 1 t = g_nPreInput>>DOT_BITS;
82 1
83 1 return t;
84 1 }
85
86 //硬件初始化接口
87 void HardIni(void)
88 {
89 1
90 1 }
91
92 //信号采样接口
93 int Sample(void)
94 {
95 1 return 20;
96 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 162 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?