?? 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 + -