📄 currentmodule.lst
字号:
C51 COMPILER V7.10 CURRENTMODULE 09/18/2008 14:09:29 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE CURRENTMODULE
OBJECT MODULE PLACED IN CurrentModule.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 20progress\CurrentModule.c BROWSE DEBUG OBJECTEXTEND PRINT(.\CurrentModule.
-lst) OBJECT(CurrentModule.obj)
line level source
1 //*******************************************************************************
2 //Copyright (c) 2007,派利斯电子(北京)有限公司 硬件部
3 //文件名称: CurrentModule.c
4 //摘 要: 本文件主要包含PT2060程序中电流计算、输出和标定等操作
5 //当前版本: D-1
6 //作 者: 佟文杰
7 //完成日期: 4/19/2007
8 //*******************************************************************************
9 #define CURRENTMODULE_C
10 #include "currentmodule.h"
11 xdata struct Current CurrentModule;
12 //-------------------------------------------------------------------------
13 //函数名称:void SetDAZero(unsigned char uchChannel, unsigned int uiDAZero)
14 //功 能:由通道的选择设置DA 4mA对应的参数
15 //输入参数:通道号 ,DA 4mA对应的值
16 //返 回:无
17 //完成日期:4/16/2007
18 //-------------------------------------------------------------------------
19 void SetDAZero(unsigned char uchChannel, unsigned int uiDAZero)
20 {
21 1 CurrentModule.uiDAZero[uchChannel - 1] = uiDAZero;
22 1 }
23
24 //-------------------------------------------------------------------------
25 //函数名称:void SetDAFull(unsigned char uchChannel, unsigned int uiDAFull)
26 //功 能:由通道的选择设置DA 20mA对应的参数
27 //输入参数:通道号,DA 20mA对应的值
28 //返 回:无
29 //完成日期:4/16/2007
30 //-------------------------------------------------------------------------
31 void SetDAFull(unsigned char uchChannel, unsigned int uiDAFull)
32 {
33 1 CurrentModule.uiDAFull[uchChannel - 1] = uiDAFull;
34 1 }
35
36 //--------------------------------------------------------------------------------------------------------
---
37 //函数名称:void OutputCurrentValue(unsigned char uchChannel, int iCurrentValue)
38 //功 能:根据电流值输出对应的电流值
39 //输入参数:通道号,给定的电流值×100
40 //返 回:无
41 //完成日期:4/16/2007
42 //--------------------------------------------------------------------------------------------------------
---
43 void OutputCurrentValue(unsigned char uchChannel, int iCurrentValue)
44 {
45 1 long xdata fTempVariable;
46 1
47 1 if (iCurrentValue >= 2300)
48 1 {
49 2 iCurrentValue = 2300;
50 2 }
51 1 fTempVariable = (long)(iCurrentValue - 400);
52 1 fTempVariable = fTempVariable * (CurrentModule.uiDAFull[uchChannel - 1] - CurrentModule.uiDAZero[uchChann
C51 COMPILER V7.10 CURRENTMODULE 09/18/2008 14:09:29 PAGE 2
-el - 1]);
53 1 fTempVariable = fTempVariable / 1600; //16 * 100
54 1 fTempVariable = fTempVariable + CurrentModule.uiDAZero[uchChannel - 1];
55 1
56 1 if (fTempVariable < 0)
57 1 {
58 2 fTempVariable = 0;
59 2 }
60 1 if (fTempVariable > 4095)
61 1 {
62 2 fTempVariable = 4095;
63 2 }
64 1 DirectCurrentOutput(uchChannel, (unsigned int)fTempVariable);
65 1 }
66
67 //------------------以下为电流标定的部分-----------------------------------------
68
69 //------------------------------------------------------------------------------
70 //函数名称:void SetCalibCurrentZero(unsigned char uchChannel, unsigned int uiCalibCurrentZero)
71 //功 能:由通道的选择得到上位机传下来的电流值的零点
72 //输入参数:通道号,DA标定零点的电流值 乘以了100后传过来的
73 //返 回:无
74 //完成日期:4/16/2007
75 //------------------------------------------------------------------------------
76 void SetCalibCurrentZero(unsigned char uchChannel, unsigned int uiCalibCurrentZero)
77 {
78 1 CurrentModule.uiCalibCurrentZero[uchChannel - 1] = uiCalibCurrentZero;
79 1 }
80
81 //--------------------------------------------------------------------------------------
82 //函数名称:void SetCalibCurrentFull(unsigned char uchChannel, unsigned int uiCalibCurrentFull)
83 //功 能:由通道的选择得到上位机传下来的电流值的满度
84 //输入参数:通道号,DA标定满度的电流值 乘以了100后传过来的
85 //返 回:无
86 //完成日期:4/16/2007
87 //---------------------------------------------------------------------------------------
88 void SetCalibCurrentFull(unsigned char uchChannel, unsigned int uiCalibCurrentFull)
89 {
90 1 CurrentModule.uiCalibCurrentFull[uchChannel - 1] = uiCalibCurrentFull;
91 1 }
92
93 //--------------------------------------------------------------------------------------------------
94 //函数名称:void CalculateCalibrateZeroValue(unsigned char uchChannel, unsigned char uchCountFlag)
95 //功 能:计算每个通道标定的零点AD值和满量程AD值
96 //输入参数:通道号,计算标志 0:表示计算零点 1:表示计算满度 0xff:表示计算全体
97 //返 回:无
98 //完成日期:4/16/2007
99 //--------------------------------------------------------------------------------------------------
100 void CalculateCalibrateValue(unsigned char uchChannel, unsigned char uchCountFlag)
101 {
102 1 unsigned long xdata ulTempVariable;
103 1
104 1 if (uchCountFlag == 0)
105 1 {
106 2 ulTempVariable = CurrentModule.uiCalibCurrentFull[uchChannel - 1] - CurrentModule.uiCalibCurrentZero[uch
-Channel - 1];
107 2 ulTempVariable = 327000 / ulTempVariable; //(3700 - 430)*100
108 2 ulTempVariable = ulTempVariable * (400 - CurrentModule.uiCalibCurrentZero[uchChannel - 1]);
109 2 ulTempVariable = ulTempVariable / 100;
110 2 CurrentModule.uiDAZero[uchChannel - 1] = ulTempVariable + 430; //400mA对应的AD值
111 2 SetDAZeroCountResultMain(uchChannel, CurrentModule.uiDAZero[uchChannel - 1]); //存储电流DA值
112 2 DirectCurrentOutput(uchChannel, CurrentModule.uiDAZero[uchChannel - 1]); //显示电流值
C51 COMPILER V7.10 CURRENTMODULE 09/18/2008 14:09:29 PAGE 3
113 2 }
114 1 else if (uchCountFlag == 1)
115 1 {
116 2 ulTempVariable = 5232000 / (CurrentModule.uiCalibCurrentFull[uchChannel - 1] - CurrentModule.uiCalibCurr
-entZero[uchChannel - 1]); //((3700 - 430) * 16 * 100)
117 2 CurrentModule.uiDAFull[uchChannel - 1] = ulTempVariable + CurrentModule.uiDAZero[uchChannel - 1];
118 2 SetDAFullCountResultMain(uchChannel, CurrentModule.uiDAFull[uchChannel - 1]);
119 2 DirectCurrentOutput(uchChannel, CurrentModule.uiDAFull[uchChannel - 1]);
120 2 }
121 1 else if (uchCountFlag == 0xff)
122 1 {
123 2 ulTempVariable = CurrentModule.uiCalibCurrentFull[uchChannel - 1] - CurrentModule.uiCalibCurrentZero[uch
-Channel - 1];
124 2 ulTempVariable = 327000 / ulTempVariable; //(3700 - 430)*100
125 2 ulTempVariable = ulTempVariable * (400 - CurrentModule.uiCalibCurrentZero[uchChannel - 1]);
126 2 ulTempVariable = ulTempVariable / 100;
127 2 CurrentModule.uiDAZero[uchChannel - 1] = ulTempVariable + 430;
128 2 ulTempVariable = 5232000 / (CurrentModule.uiCalibCurrentFull[uchChannel - 1] - CurrentModule.uiCalibCurr
-entZero[uchChannel - 1]); //((3700 - 430) * 16 * 100)
129 2 CurrentModule.uiDAFull[uchChannel - 1] = ulTempVariable + CurrentModule.uiDAZero[uchChannel - 1];
130 2 SetDAZeroCountResultMain(uchChannel, CurrentModule.uiDAZero[uchChannel - 1]);
131 2 SetDAFullCountResultMain(uchChannel, CurrentModule.uiDAFull[uchChannel - 1]);
132 2 }
133 1 else
134 1 {
135 2 return;
136 2 }
137 1 FeedDog();
138 1 }
139
140 //--------------------------------------------------------------------------------------------------
141 //函数名称:void InitCalibrationPara(unsigned char uchChannel)
142 //功 能:初始化标定的电流值 放在初始化程序中
143 //输入参数:通道号
144 //返 回:无
145 //完成日期:4/16/2007
146 //--------------------------------------------------------------------------------------------------
147 void InitCalibrationPara(unsigned char uchChannel)
148 {
149 1 /* unsigned long xdata ulTempData;
150 1
151 1 if (CurrentModule.uiDAZero[uchChannel - 1] > 430)
152 1 {
153 1 ulTempData = 1600 * ((unsigned long)CurrentModule.uiDAZero[uchChannel - 1] - 430);
154 1 ulTempData = ulTempData / (CurrentModule.uiDAFull[uchChannel - 1] - CurrentModule.uiDAZero[uchChannel -
-1]);
155 1 ulTempData = 400 - ulTempData;
156 1 SetCalibCurrentZero(uchChannel, ulTempData); //放置默认的参数
157 1 }
158 1 else
159 1 {
160 1 SetCalibCurrentZero(uchChannel, 400); //放置默认的参数
161 1 }
162 1 // SetCalibCurrentZero(uchChannel, 250); //放置默认的参数
163 1 if (CurrentModule.uiDAFull[uchChannel - 1] < 3700)
164 1 {
165 1 ulTempData = 1600 * (3700 - (unsigned long)CurrentModule.uiDAFull[uchChannel - 1]);
166 1 ulTempData = ulTempData / (CurrentModule.uiDAFull[uchChannel - 1] - CurrentModule.uiDAZero[uchChannel -
-1]);
167 1 ulTempData = ulTempData + 2000;
168 1 SetCalibCurrentFull(uchChannel, ulTempData); //放置默认的参数
169 1 }
C51 COMPILER V7.10 CURRENTMODULE 09/18/2008 14:09:29 PAGE 4
170 1 else
171 1 {
172 1 SetCalibCurrentFull(uchChannel, 2000); //放置默认的参数
173 1 }
174 1 // SetCalibCurrentFull(uchChannel, 2130); //放置默认的参数 */
175 1
176 1 float xdata fTempData;
177 1
178 1 if (CurrentModule.uiDAZero[uchChannel - 1] > 430)
179 1 {
180 2 fTempData = 1600 * ((unsigned long)CurrentModule.uiDAZero[uchChannel - 1] - 430);
181 2 fTempData = fTempData / (CurrentModule.uiDAFull[uchChannel - 1] - CurrentModule.uiDAZero[uchChannel - 1]
-);
182 2 fTempData = 400 - fTempData;
183 2 SetCalibCurrentZero(uchChannel, fTempData); //放置默认的参数
184 2 }
185 1 else
186 1 {
187 2 SetCalibCurrentZero(uchChannel, 400); //放置默认的参数
188 2 }
189 1 // SetCalibCurrentZero(uchChannel, 250); //放置默认的参数
190 1 if (CurrentModule.uiDAFull[uchChannel - 1] < 3700)
191 1 {
192 2 fTempData = 1600 * (3700 - (unsigned long)CurrentModule.uiDAFull[uchChannel - 1]);
193 2 fTempData = fTempData / (CurrentModule.uiDAFull[uchChannel - 1] - CurrentModule.uiDAZero[uchChannel - 1]
-);
194 2 fTempData = fTempData + 2000;
195 2 SetCalibCurrentFull(uchChannel, fTempData); //放置默认的参数
196 2 }
197 1 else
198 1 {
199 2 SetCalibCurrentFull(uchChannel, 2000); //放置默认的参数
200 2 }
201 1
202 1 //20080417
203 1
204 1 }
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1550 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 16 12
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
C51 COMPILER V7.10 CURRENTMODULE 09/18/2008 14:09:29 PAGE 5
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 + -