📄 adc.lst
字号:
C51 COMPILER V8.02 ADC 08/03/2008 10:54:15 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE ADC
OBJECT MODULE PLACED IN ADC.OBJ
COMPILER INVOKED BY: D:\Keil C51\C51\BIN\C51.EXE ADC.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x52.h>
2 #include "define.h"
3
4 void MUX1_Select(unsigned char Channel) // 电压信号通道1-8选择
5 {
6 1 switch(Channel)
7 1 {
8 2 case 1:
9 2 MUX_S2 = 0;
10 2 MUX_S1 = 1;
11 2 MUX_S0 = 0;
12 2 break;
13 2 case 2:
14 2 MUX_S2 = 0;
15 2 MUX_S1 = 0;
16 2 MUX_S0 = 1;
17 2 break;
18 2 case 3:
19 2 MUX_S2 = 0;
20 2 MUX_S1 = 0;
21 2 MUX_S0 = 0;
22 2 break;
23 2 case 4:
24 2 MUX_S2 = 0;
25 2 MUX_S1 = 1;
26 2 MUX_S0 = 1;
27 2 break;
28 2 case 5:
29 2 MUX_S2 = 1;
30 2 MUX_S1 = 0;
31 2 MUX_S0 = 0;
32 2 break;
33 2 case 6:
34 2 MUX_S2 = 1;
35 2 MUX_S1 = 1;
36 2 MUX_S0 = 0;
37 2 break;
38 2 case 7:
39 2 MUX_S2 = 1;
40 2 MUX_S1 = 1;
41 2 MUX_S0 = 1;
42 2 break;
43 2 case 8:
44 2 MUX_S2 = 1;
45 2 MUX_S1 = 0;
46 2 MUX_S0 = 1;
47 2 break;
48 2 }
49 1 }
50
51 void MUX2_Select(unsigned char Channel) // 电压信号通道9-16选择
52 {
53 1 switch(Channel)
54 1 {
55 2 case 9:
C51 COMPILER V8.02 ADC 08/03/2008 10:54:15 PAGE 2
56 2 MUX_S2 = 0;
57 2 MUX_S1 = 1;
58 2 MUX_S0 = 0;
59 2 break;
60 2 case 10:
61 2 MUX_S2 = 0;
62 2 MUX_S1 = 0;
63 2 MUX_S0 = 1;
64 2 break;
65 2 case 11:
66 2 MUX_S2 = 0;
67 2 MUX_S1 = 0;
68 2 MUX_S0 = 0;
69 2 break;
70 2 case 12:
71 2 MUX_S2 = 0;
72 2 MUX_S1 = 1;
73 2 MUX_S0 = 1;
74 2 break;
75 2 case 13:
76 2 MUX_S2 = 1;
77 2 MUX_S1 = 0;
78 2 MUX_S0 = 0;
79 2 break;
80 2 case 14:
81 2 MUX_S2 = 1;
82 2 MUX_S1 = 1;
83 2 MUX_S0 = 0;
84 2 break;
85 2 case 15:
86 2 MUX_S2 = 1;
87 2 MUX_S1 = 1;
88 2 MUX_S0 = 1;
89 2 break;
90 2 case 16:
91 2 MUX_S2 = 1;
92 2 MUX_S1 = 0;
93 2 MUX_S0 = 1;
94 2 break;
95 2 }
96 1 }
97
98 void MUX3_Select(unsigned char Channel) // 电压信号通道17-21选择
99 {
100 1 switch(Channel)
101 1 {
102 2 case 17:
103 2 MUX_S2 = 0;
104 2 MUX_S1 = 1;
105 2 MUX_S0 = 0;
106 2 break;
107 2 case 18:
108 2 MUX_S2 = 0;
109 2 MUX_S1 = 0;
110 2 MUX_S0 = 1;
111 2 break;
112 2 case 19:
113 2 MUX_S2 = 0;
114 2 MUX_S1 = 0;
115 2 MUX_S0 = 0;
116 2 break;
117 2 case 20:
C51 COMPILER V8.02 ADC 08/03/2008 10:54:15 PAGE 3
118 2 MUX_S2 = 0;
119 2 MUX_S1 = 1;
120 2 MUX_S0 = 1;
121 2 break;
122 2 case 21:
123 2 MUX_S2 = 1;
124 2 MUX_S1 = 0;
125 2 MUX_S0 = 0;
126 2 break;
127 2 }
128 1 }
129
130 unsigned int ADC_CH2() // 电压信号1-8测量
131 {
132 1 unsigned char CtrlByte = 0xa7;
133 1 unsigned int Data = 0x00;
134 1 bit bData;
135 1
136 1 unsigned char Temp1;
137 1 unsigned int Temp2;
138 1 unsigned char i;
139 1
140 1 AD_CS = 0; // 开始一次AD转换
141 1
142 1 for(i=0; i<8; i++) // 发送控制字节
143 1 {
144 2 AD_DCLK = 0;
145 2
146 2 if(CtrlByte & 0x80)
147 2 {
148 3 AD_DIN = 1;
149 3 }
150 2 else
151 2 {
152 3 AD_DIN = 0;
153 3 }
154 2
155 2 AD_DCLK = 1; // DCLK上升延,送出一位数据
156 2
157 2 Temp1 = CtrlByte << 1;
158 2 CtrlByte = Temp1;
159 2 }
160 1
161 1 AD_DCLK = 0;
162 1 AD_DIN = 0;
163 1
164 1 for(i=0; i<12; i++) // 读入转换结果
165 1 {
166 2 AD_DCLK = 1;
167 2
168 2 Temp2 = Data << 1;
169 2 Data = Temp2;
170 2
171 2 AD_DCLK = 0; // DCLK下降延,读入一位数据
172 2 bData = AD_DOUT;
173 2
174 2 if(bData)
175 2 {
176 3 Data |= 0x0001;
177 3 }
178 2 else
179 2 {
C51 COMPILER V8.02 ADC 08/03/2008 10:54:15 PAGE 4
180 3 Data &= 0xfffe;
181 3 }
182 2 }
183 1
184 1 AD_DCLK = 1;
185 1 AD_DCLK = 0;
186 1 AD_DCLK = 1;
187 1 AD_DCLK = 0;
188 1 AD_DCLK = 1;
189 1 AD_DCLK = 0;
190 1 AD_DCLK = 1;
191 1 AD_DCLK = 0;
192 1 AD_CS = 1; // 完成一次AD转换
193 1
194 1 return Data;
195 1 }
196
197 unsigned int ADC_CH1() // 电压信号9-16测量
198 {
199 1 unsigned char CtrlByte = 0xd7;
200 1 unsigned int Data = 0x00;
201 1 bit bData;
202 1
203 1 unsigned char Temp1;
204 1 unsigned int Temp2;
205 1 unsigned char i;
206 1
207 1 AD_CS = 0; // 开始一次AD转换
208 1
209 1 for(i=0; i<8; i++) // 发送控制字节
210 1 {
211 2 AD_DCLK = 0;
212 2
213 2 if(CtrlByte & 0x80)
214 2 {
215 3 AD_DIN = 1;
216 3 }
217 2 else
218 2 {
219 3 AD_DIN = 0;
220 3 }
221 2
222 2 AD_DCLK = 1; // DCLK上升延,送出一位数据
223 2
224 2 Temp1 = CtrlByte << 1;
225 2 CtrlByte = Temp1;
226 2 }
227 1
228 1 AD_DCLK = 0;
229 1 AD_DIN = 0;
230 1
231 1 for(i=0; i<12; i++) // 读入转换结果
232 1 {
233 2 AD_DCLK = 1;
234 2
235 2 Temp2 = Data << 1;
236 2 Data = Temp2;
237 2
238 2 AD_DCLK = 0; // DCLK下降延,读入一位数据
239 2 bData = AD_DOUT;
240 2
241 2 if(bData)
C51 COMPILER V8.02 ADC 08/03/2008 10:54:15 PAGE 5
242 2 {
243 3 Data |= 0x0001;
244 3 }
245 2 else
246 2 {
247 3 Data &= 0xfffe;
248 3 }
249 2 }
250 1
251 1 AD_DCLK = 1;
252 1 AD_DCLK = 0;
253 1 AD_DCLK = 1;
254 1 AD_DCLK = 0;
255 1 AD_DCLK = 1;
256 1 AD_DCLK = 0;
257 1 AD_DCLK = 1;
258 1 AD_DCLK = 0;
259 1 AD_CS = 1; // 完成一次AD转换
260 1
261 1 return Data;
262 1 }
263
264 unsigned int ADC_CH0() // 电压信号17-21测量
265 {
266 1 unsigned char CtrlByte = 0x97;
267 1 unsigned int Data = 0x00;
268 1 bit bData;
269 1
270 1 unsigned char Temp1;
271 1 unsigned int Temp2;
272 1 unsigned char i;
273 1
274 1 AD_CS = 0; // 开始一次AD转换
275 1
276 1 for(i=0; i<8; i++) // 发送控制字节
277 1 {
278 2 AD_DCLK = 0;
279 2
280 2 if(CtrlByte & 0x80)
281 2 {
282 3 AD_DIN = 1;
283 3 }
284 2 else
285 2 {
286 3 AD_DIN = 0;
287 3 }
288 2
289 2 AD_DCLK = 1; // DCLK上升延,送出一位数据
290 2
291 2 Temp1 = CtrlByte << 1;
292 2 CtrlByte = Temp1;
293 2 }
294 1
295 1 AD_DCLK = 0;
296 1 AD_DIN = 0;
297 1
298 1 for(i=0; i<12; i++) // 读入转换结果
299 1 {
300 2 AD_DCLK = 1;
301 2
302 2 Temp2 = Data << 1;
303 2 Data = Temp2;
C51 COMPILER V8.02 ADC 08/03/2008 10:54:15 PAGE 6
304 2
305 2 AD_DCLK = 0; // DCLK下降延,读入一位数据
306 2 bData = AD_DOUT;
307 2
308 2 if(bData)
309 2 {
310 3 Data |= 0x0001;
311 3 }
312 2 else
313 2 {
314 3 Data &= 0xfffe;
315 3 }
316 2 }
317 1
318 1 AD_DCLK = 1;
319 1 AD_DCLK = 0;
320 1 AD_DCLK = 1;
321 1 AD_DCLK = 0;
322 1 AD_DCLK = 1;
323 1 AD_DCLK = 0;
324 1 AD_DCLK = 1;
325 1 AD_DCLK = 0;
326 1 AD_CS = 1; // 完成一次AD转换
327 1
328 1 return Data;
329 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 505 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -