📄 float_main.lst
字号:
C51 COMPILER V7.01 FLOAT_MAIN 06/14/2004 19:37:41 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE FLOAT_MAIN
OBJECT MODULE PLACED IN float_main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE float_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
14 //全局变量定义
15 float g_fPreInput; //上一周期的采样值
16 float g_fQ; //滤波因子
17
18 //内部函数声明
19 float Filter(float); //滤波函数
20
21 //外部函数声明
22 float Sample(void); //信号采样接口函数
23 void HardIni(void); //硬件初始化接口
24
25 //主循环
26 void main(void)
27 {
28 1 float CurSigVal; //当前信号值
29 1 int i;
30 1
31 1 //硬件初始化
32 1 HardIni();
33 1
34 1 //全局变量初始化
35 1 g_fPreInput = 0;
36 1 g_fQ = (float)TS/(TF+TS);
37 1
38 1 while(1)
39 1 {
40 2 CurSigVal = Filter(Sample()); //采样并滤波
41 2 for(i=0;i<20000;i++); //待机一段时间后,开始下一循环
42 2 }
43 1 }
44
45 //一阶惯性滤波
46 //滤波耗时:
47 float Filter(float CurInput)
48 {
49 1 float t;
50 1
51 1 //如果信号没有改变,则直接返回
52 1 if(g_fPreInput == CurInput)
53 1 {
54 2 return CurInput; //信号没有改变直接返回
55 2 }
C51 COMPILER V7.01 FLOAT_MAIN 06/14/2004 19:37:41 PAGE 2
56 1
57 1 //滤波精度处理
58 1 if(CurInput < 0.000001)
59 1 {
60 2 CurInput = 0;
61 2 }
62 1
63 1 //已经逼进最终值时的处理
64 1 if(fabs(CurInput - g_fPreInput) < 0.000001)
65 1 {
66 2 g_fPreInput = CurInput;
67 2 return(CurInput);
68 2 }
69 1
70 1 //滤波
71 1 t = g_fPreInput + (CurInput- g_fPreInput )*g_fQ;
72 1 g_fPreInput = t; //保存本周期的计算值
73 1
74 1 return t;
75 1 }
76
77 //硬件初始化接口
78 void HardIni(void)
79 {
80 1
81 1 }
82
83 //信号采样接口
84 float Sample(void)
85 {
86 1 return 1.0;
87 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 232 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 12
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 + -