calc.lst
来自「本文件提供各种驱动程序和汇编代码,包括温度芯片驱动等等.」· LST 代码 · 共 235 行
LST
235 行
C51 COMPILER V7.01 CALC 06/20/2004 22:31:27 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE CALC
OBJECT MODULE PLACED IN calc.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE calc.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //**********************************************************************
2 //功能 : 二分法查表程序
3 //作者 : lihj
4 //创建日期 : 2004-06-20
5 //版本 : V1.0
6 //修改记录 :
7 //***********************************************************************
8 #define TMP_STEP 10 //温度放大倍数
9
10 //电阻值放大100倍
11 //PT100阻值--温度表;
12 code unsigned int PT100[501]=
13 {
14 //1852,1938,2025,2111,2197, //pt100,table from -200to 0
15 //2283,2368,2454,2539,2624,
16 //2710,2795,2880,2964,3049,
17 //3134,3218,3302,3386,3470,
18 //3554,3638,3722,3805,3889,
19 3972,4056,4139,4222,4305,
20 4388,4470,4553,4636,4718,
21 4800,4883,4965,5047,5129,
22 5211,5293,5375,5456,5538,
23 5619,5701,5782,5863,5944,
24 6026,6107,6188,6268,6349,
25 6430,6511,6591,6672,6752,
26 6833,6913,6993,7073,7153,
27 7233,7313,7393,7473,7553,
28 7633,7712,7792,7872,7951,
29 8031,8110,8189,8269,8348,
30 8427,8506,8585,8664,8743,
31 8822,8901,8980,9059,9137,
32 9216,9295,9373,9452,9530,
33 9609,9687,9765,9844,9922,
34
35 10000,10078,10156,10234,10312, //pt100,table from 0to 850
36 10390,10468,10546,10624,10702,
37 10779,10857,10935,11012,11090,
38 11167,11245,11322,11400,11477,
39 11554,11631,11708,11786,11863,
40 11940,12017,12094,12171,12247,
41 12324,12401,12478,12554,12631,
42 12708,12784,12861,12937,13013,
43 13090,13166,13242,13318,13395,
44 13471,13547,13623,13699,13775,
45 13851,13926,14002,14078,14154,
46 14229,14305,14380,14456,14531,
47 14607,14682,14757,14833,14908,
48 14983,15058,15133,15208,15283,
49 15358,15433,15508,15583,15658,
50 15733,15807,15882,15956,16031,
51 16105,16180,16254,16329,16403,
52 16477,16551,16626,16700,16774,
53 16848,16922,16996,17070,17143,
54 17217,17291,17365,17438,17512,
55 17586,17659,17733,17806,17879,
C51 COMPILER V7.01 CALC 06/20/2004 22:31:27 PAGE 2
56 17953,18026,18099,18172,18246,
57 18319,18392,18465,18538,18611,
58 18684,18756,18829,18902,18975,
59 19047,19120,19192,19265,19337,
60 19410,19482,19555,19627,19699,
61 19771,19843,19915,19987,20059,
62 20131,20203,20275,20347,20419,
63 20490,20562,20634,20705,20777,
64 20848,20920,20991,21063,21134,
65 21205,21276,21348,21419,21490,
66 21561,21632,21703,21774,21844,
67 21915,21986,22057,22127,22198,
68 22268,22339,22409,22480,22550,
69 22621,22691,22761,22831,22902,
70 22972,23042,23112,23182,23252,
71 23321,23391,23461,23531,23600,
72 23670,23740,23809,23879,23948,
73 24018,24087,24156,24226,24295,
74 24364,24433,24502,24571,24640,
75 24709,24778,24847,24916,24985,
76 25053,25122,25191,25259,25328,
77 25396,25465,25533,25601,25670,
78 25738,25806,25874,25942,26010,
79 26078,26146,26214,26282,26350,
80 26418,26486,26553,26621,26689,
81 26756,26824,26891,26959,27026,
82 27093,27161,27228,27295,27362,
83 27429,27496,27563,27630,27697,
84 27764,27831,27898,27964,28031,
85 28098,28164,28231,28297,28364,
86 28430,28497,28563,28629,28695,
87 28762,28828,28894,28960,29026,
88 29092,29158,29224,29289,29355,
89 29421,29486,29552,29618,29683,
90 29749,29814,29880,29945,30010,
91 30075,30141,30206,30271,30336,
92 30401,30466,30531,30596,30661,
93 30725,30790,30855,30920,30984,
94 31049,31113,31178,31242,31306,
95 31371,31435,31499,31564,31628,
96 31692,31756,31820,31884,31948,
97 32012,32075,32139,32203,32267,
98 32330,32394,32457,32521,32584,
99 32648,32711,32774,32838,32901,
100 32964,33027,33090,33153,33216,
101 33279,33342,33405,33468,33530,
102 33593,33656,33718,33781,33844,
103 33906,33969,34031,34093,34156,
104 34218,34280,34342,34404,34466,
105 34528,34590,34652,34714,34776,
106 34838,34899,34961,35023,35084,
107 35146,35208,35269,35330,35392,
108 35453,35514,35576,35637,35698,
109 35759,35820,35881,35942,36003,
110 36064,36125,36185,36246,36307,
111 36367,36428,36489,36549,36610,
112 36670,36730,36791,36851,36911,
113 36971,37031,37091,37151,37211,
114 37271,37331,37391,37451,37511,
115 37570,37630,37690,37749,37809,
116 37868,37928,37987,38046,38106,
117 38165,38224,38283,38342,38401,
C51 COMPILER V7.01 CALC 06/20/2004 22:31:27 PAGE 3
118 38460,38519,38578,38637,38696,
119 38755,38814,38872,38931,38990,
120 39048
121 };
122
123 //Cu-50
124 //温度范围:-50~150
125 code unsigned int Rcu[101]=
126 {
127 3924,3967,4010,4054,4097,
128 4140,4183,4227,4269,4312,
129 4355,4398,4441,4484,4527,
130 4570,4613,4656,4699,4742,
131 4785,4828,4871,4914,4957,
132 5000,5043,5086,5128,5171,
133 5214,5257,5300,5343,5386,
134 5428,5471,5514,5557,5600,
135 5642,5685,5728,5771,5814,
136 5856,5899,5942,5985,6027,
137 6070,6113,6156,6198,6241,
138 6284,6327,6370,6412,6455,
139 6498,6541,6583,6626,6669,
140 6712,6754,6797,6840,6883,
141 6926,6968,7011,7054,7097,
142 7140,7183,7225,7268,7311,
143 7354,7397,7440,7483,7526,
144 7568,7611,7654,7697,7740,
145 7783,7826,7869,7912,7955,
146 7998,8041,8084,8127,8170,
147 8213
148 };
149
150 //函数功能:通过查表计算温度值
151 //输入参数:<r_value> :电阻值,放大100倍
152 // <pTable> :温度-电阻值表格(ITS-90)指针
153 // <length> : 表格大小
154 // <down_lim> :温度量程下限
155 // <up_lim> :温度量程上限
156 //输出参数:温度值,放大10倍
157 int CacTemp(unsigned int r_value, unsigned int *pTable, unsigned int length, int down_lim,int up_lim)
158 {
159 1 int temp,j=0;
160 1 unsigned int k1,k2;
161 1 unsigned char k;
162 1
163 1 //电阻值限幅
164 1 if(r_value <= *pTable)
165 1 {
166 2 return down_lim*TMP_STEP;
167 2 }
168 1 else if(r_value >= *(pTable+length-1))
169 1 {
170 2 return up_lim*TMP_STEP;
171 2 }
172 1
173 1 //二分法查表
174 1 k1 = length;
175 1 k2 = 0;
176 1 for(k=0;k<12;k++)
177 1 {
178 2 j = (k1 + k2)>>1;
179 2 if(r_value < *(pTable+j))
C51 COMPILER V7.01 CALC 06/20/2004 22:31:27 PAGE 4
180 2 {
181 3 k1 = j; //修改上限
182 3 if(r_value >= *(pTable + j - 1))
183 3 {
184 4 pTable = pTable + j;
185 4 j --;
186 4 break;
187 4 }
188 3 }
189 2 else
190 2 {
191 3 k2 = j; //修改下限
192 3 if(r_value < *(pTable + j + 1))
193 3 {
194 4 pTable = pTable + j + 1;
195 4 break;
196 4 }
197 3 }
198 2 }
199 1
200 1 j = j*2 + down_lim;
201 1 temp = j*TMP_STEP + (unsigned long)(r_value - *(pTable-1))*2*TMP_STEP/(*pTable - *(pTable-1));
202 1
203 1 return temp;
204 1 }
205
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 399 ----
CONSTANT SIZE = 1204 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?