?? search.lst
字號:
C51 COMPILER V7.20 SEARCH 11/09/2002 21:11:18 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE SEARCH
OBJECT MODULE PLACED IN Search.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SensorModule\Search.C BROWSE DEBUG OBJECTEXTEND PRINT(.\Search.lst) OBJECT(
-Search.obj)
line level source
1 /*############################################################
2 文件名稱: Search.c
3 功能 : 查表確定特定頻率代表的溫度或者濕度.分別保留一位小數
4 創建人 : Houseivan
5 創建日期: 2005-03-17
6 修改人 : Houseivan
7 修改日期: 2005-03-17
8 ############################################################*/
9
10 #include"Includes.h"
11 #include<stdlib.h>
12
13 /*檢測是否配置了傳感器監控功能*/
14 #if _DETECT_TASK > 0
15
16 /*------------------------------------------------*/
17 /*Variants define*/
18 /*############################################################
19 VarName:TempFoscGroup[]
20 Popurse:存放溫度頻率計數據
21 Used By:查找算法函數調用
22 Other :
23 溫度頻率表:-20.0 ~ 80.0 ℃
24 將震蕩頻率調節在10KHZ左右
25 增長型 Temperature:2B如:-16。5℃
26 ############################################################*/
27 extern uint code TempFoscGroup[];
28 /*############################################################
29 VarName:HumiFoscGroup
30 Popurse:存放濕度頻率計數據
31 Used By:查找算法函數調用
32 Other :
33 濕度頻率表:RH:0 ~ 100 %
34 將震蕩頻率調節在10KHZ左右
35 衰減型 Humidity:2B 如:RH56.9%
36 ############################################################*/
37
38 extern uint code HumiFoscGroup[];
39
40 /*Function define*/
41 /*############################################################
42 FuncName: uint LocateRefValue(uint RefValue,uint Values[],uchar Size);
43 Discription:查找RefValue對應的地址
44 Input: 要查找的數據、目的數組首地址、數組大小
45 Return: 返回相應的地址整數和小數部分
46 Notice: 整數部分和符號位處于uint的高字節
47 小數部分則位于uint的低字節
48 只要定位到一個最小區間即可xi->[x1,x2]
49 ############################################################*/
50 uint LocateRefValue(uint RefValue,uint Values[],uchar Size)
51 {
52 1 uchar Integer,Decimal; //整數部分由整點值確定、小數部分有偏移量確定
53 1 uchar Head,Tail,Mid; //Head(小),Tail(大)作為指針
54 1 uint Temp;
C51 COMPILER V7.20 SEARCH 11/09/2002 21:11:18 PAGE 2
55 1 if(Values[0]<Values[Size-1]) //檢測當前數據序列的單調性
56 1 {
57 2 /*表明這個序列是遞增的序列:溫度*/
58 2 Head=0;
59 2 Tail=Size-1;
60 2 if(RefValue<=Values[Head])
61 2 return _MIN_NUM;
62 2 if(RefValue>=Values[Tail])
63 2 return _MAX_NUM;
64 2 }
65 1 else
66 1 {
67 2 /*表明這是一個遞減的數字序列:濕度*/
68 2 Head=Size-1;
69 2 Tail=0;
70 2 if(RefValue<=Values[Head])
71 2 return _MAX_NUM;
72 2 if(RefValue>=Values[Tail])
73 2 return _MIN_NUM;
74 2 }
75 1
76 1 while(1)
77 1 {
78 2 Mid=(Head+Tail)/2; //Mid>=Head
79 2 if(RefValue>=Values[Mid]) //說明落在(Mid,Tail)中
80 2 Head=Mid;
81 2 else //說明落在(Head,Mid)中
82 2 Tail=Mid;
83 2 if(abs(Tail-Head)<=1) //當首尾間隔為1或0時說明已經到了一個最小區間
84 2 break; //結束查找操作
85 2 }
86 1 if(Values[0]<Values[Size-1]) //檢測當前數據序列的單調性
87 1 {
88 2 /*表明這個序列是遞增的序列:溫度*/
89 2 Integer=Head; //取出區間下限作為整數部分
90 2 }
91 1 else
92 1 {
93 2 Integer=Tail; //取出區間下限作為整數部分
94 2 }
95 1 Decimal=Values[Tail]-Values[Head]; //確定區間寬度SpWidth
96 1 Temp=(RefValue-Values[Head])
97 1 *_DECIMAL_BIT; //確定當前值對下限的偏移量Offset,10表示精確到小數點后一位
98 1 Decimal=Temp/Decimal; //確定小數點后第一位
99 1 Temp=Integer*10+Decimal; //將溫度濕度全部用0.1的倍數來表示
100 1
101 1 return Temp;
102 1 }
103
104 /*---------------------------------------------------------*/
105 #endif
106
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 401 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.20 SEARCH 11/09/2002 21:11:18 PAGE 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -