📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 01/14/2009 21:15:27 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\单片机\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<c8051f020.h>
2 #include "initial.h"
3 #define sysclk 22118400 // SYSCLK frequency in Hz
4 xdata long uint value,value1;
5 xdata long uint i=0;
6 uchar t,stop0;
7 uint AD_num,AD_num2;
8 uint relay_A;
9 uchar pga_A;
10 uchar keynum;
11 xdata long uint I_I,Y;
12 bit isnewdata,flag_f;
13 sbit relay0=P0^0;
14 sbit relay1=P0^1;
15 sbit relay2=P0^2;
16 sbit relay3=P0^3;
17 /*sbit A0=P3^4;
18 sbit A1=P3^5;
19 sbit A2=P3^6;
20 sbit A3=P3^7;*/
21 uchar code table2[]={'0','1','2','3',
22 '4','5','6','7',
23 '8','9'};
24 uchar data0,data1,data2,data3;
25 uchar code str1[]="welcome to ADC0 test!";//8
26 uchar code str2[]="test key V:";//12
27 uchar code str3[]="test key I:";
28 uchar code str4[]="V true RMS is:";//9
29 uchar code str5[]="I true RMS is:";
30
31 void main( )
32 {
33 1 SYSTEM_Init(); //系统初始化
34 1 PORT_Init(); //端口初始化
35 1 Lcd1602_Initial( ); //Lcd初始化 ]
36 1 delay(10);
37 1 AD9851_Init();
38 1 Lcd1602_Write_String(1,1,"DDS Begin-> 'F' ");
39 1
40 1 while(1)
41 1 {
42 2 /* keynum=KeyEn();
43 2 if(keynum==12) //dds C
44 2 {
45 2 f_add();
46 2 }
47 2 if(keynum==13)
48 2 {
49 2 flag_f=0;
50 2 select_f();
51 2 }
52 2
53 2 if(keynum==14) //ad
54 2 {
55 2 relay_begin();
C51 COMPILER V8.02 MAIN 01/14/2009 21:15:27 PAGE 2
56 2 // pga_begin();
57 2 process_ADC00();
58 2 process_ADC00();
59 2 change_relay();
60 2
61 2 // process_ADC00();
62 2 // change_pga();
63 2
64 2 process_ADC00(); //测电流变电压的电压
65 2 process_ADC01(); //测导纳网络本身的电压
66 2 measure_Y();
67 2 Y_display();
68 2 }
69 2 if(keynum==15)
70 2 { */
71 2 angle_measure();
72 2 // }
73 2 }
74 1 }
75
76
77
78 void display_f(long fre)
79 {
80 1 Lcd1602_Clear_All( );
81 1 delay(10);
82 1 if(fre<1000)
83 1 {
84 2 Lcd1602_Write_String(1,0,"Fre: Hz ");
85 2 Lcd1602_Write_Data(1,4,fre/100+0x30);
86 2 Lcd1602_Write_Data(1,5,fre%100/10+0x30);
87 2 Lcd1602_Write_Data(1,6,fre%10+0x30);
88 2 }
89 1 if(fre>999)
90 1 {
91 2 Lcd1602_Write_String(1,0,"Fre: . kHz");
92 2 Lcd1602_Write_Data(1,4,fre/100000+0x30);
93 2 Lcd1602_Write_Data(1,5,fre%100000/10000+0x30);
94 2 Lcd1602_Write_Data(1,6,fre%10000/1000+0x30);
95 2 Lcd1602_Write_Data(1,8,fre%1000/100+0x30);
96 2 }
97 1 }
98
99 void process_ADC00()
100 {
101 1 uchar DataH,DataL;
102 1 Lcd1602_Clear_Line(1);
103 1 Lcd1602_Write_String(1,0,str2);
104 1 ADC00Initial();
105 1 ADC0begin();
106 1 DataH=ADC0H;
107 1 DataL=ADC0L;
108 1 AD_num=DataH*256+DataL;
109 1 AD0INT=0;
110 1 onshow_data(AD_num);
111 1 }
112
113 void process_ADC01()
114 {
115 1 uchar DataH,DataL;
116 1 Lcd1602_Clear_Line(1);
117 1 Lcd1602_Write_String(1,0,str3);
C51 COMPILER V8.02 MAIN 01/14/2009 21:15:27 PAGE 3
118 1 ADC01Initial();
119 1 ADC0begin();
120 1 DataH=ADC0H;
121 1 DataL=ADC0L;
122 1 AD_num2=DataH*256+DataL;
123 1 AD0INT=0;
124 1 onshow_data(AD_num2);
125 1 }
126
127
128 void onshow_data(uint AD_x)
129 {
130 1 long uint V_RMS;
131 1 V_RMS=AD_x*0.59326171875;
132 1 data2=V_RMS%1000/100;
133 1 data3=V_RMS/1000;
134 1 data1=V_RMS%1000%100/10;
135 1 data0=V_RMS%1000%100%10;
136 1 Lcd1602_Write_Data(2,10,table2[data3]);
137 1 Lcd1602_Write_Data(2,11,'.');
138 1 Lcd1602_Write_Data(2,12,table2[data2]);
139 1 Lcd1602_Write_Data(2,13,table2[data1]);
140 1 Lcd1602_Write_Data(2,14,table2[data0]);
141 1 }
142
143 void relay_begin()
144 {
145 1 relay0=0;
146 1 relay1=1; //10倍 R=10
147 1 relay2=0;
148 1 relay3=0;
149 1 }
150
151 /*void pga_begin()
152 {
153 A0=0; //选择放大倍数为1
154 A0=0;
155 A0=0;
156 A0=0;
157 } */
158
159 void change_relay()
160 {
161 1 if(AD_num>=0&&AD_num<1012)
162 1 {
163 2 relay0=0;
164 2 relay1=0; //10倍 R=1000
165 2 relay2=0;
166 2 relay3=1;
167 2 relay_A=1000;
168 2 }
169 1 if(AD_num>=1013&&AD_num<2022)
170 1 {
171 2 relay0=0;
172 2 relay1=0; //10倍 R=100
173 2 relay2=1;
174 2 relay3=0;
175 2 relay_A=100;
176 2 }
177 1 if(AD_num>=2023&&AD_num<3034)
178 1 {
179 2 relay0=0;
C51 COMPILER V8.02 MAIN 01/14/2009 21:15:27 PAGE 4
180 2 relay1=1; //10倍 R=10
181 2 relay2=0;
182 2 relay3=0;
183 2 relay_A=10;
184 2 }
185 1 if(AD_num>=3035)
186 1 {
187 2 relay0=1;
188 2 relay1=0; //10倍 R=1
189 2 relay2=0;
190 2 relay3=0;
191 2 relay_A=1;
192 2 }
193 1 }
194
195 /*void change_pga()
196 {
197 if(AD_num>0&&AD_num<400)
198 {
199 A0=1; //放大10倍
200 A1=0;
201 A2=0;
202 A3=0;
203 pga_A=10;
204 }
205 if(AD_num>400)
206 {
207 A0=0; //放大1倍
208 A1=0;
209 A2=0;
210 A3=0;
211 pga_A=1;
212 }
213 } */
214
215 void measure_Y()
216 {
217 1 //I=AD_num*0.59326171875/10/relay_A/pga_A;
218 1 //Y=I/(AD_num*0.59326171875);
219 1 // I_I=100000*AD_num/relay_A/pga_A; //仪表放大十倍
220 1 I_I=100000*AD_num/relay_A; //仪表放大十倍
221 1 Y=I_I/(AD_num2*1.00);
222 1 }
223
224 void Y_display()
225 {
226 1 uchar y5,y4,y3,y2,y1,y0;
227 1 y5=Y/100000;
228 1 y4=Y%100000/10000;
229 1 y3=Y%100000%10000/1000;
230 1 y2=Y%100000%10000%1000/100;
231 1 y1=Y%100000%10000%1000%100/10;
232 1 y0=Y%100000%10000%1000%100%10;
233 1 }
234
235 void select_f()
236 {
237 1 Lcd1602_Clear_All( );
238 1 delay(10);
239 1 display_selection();
240 1 while(!flag_f)
241 1 {
C51 COMPILER V8.02 MAIN 01/14/2009 21:15:27 PAGE 5
242 2 keynum=KeyEn();
243 2 if(keynum==1)
244 2 {
245 3 display_f(100);
246 3 AD9851_DDS_Control(100,0);
247 3 }
248 2 if(keynum==2)
249 2 {
250 3 display_f(300);
251 3 AD9851_DDS_Control(300,0);
252 3 }
253 2 if(keynum==3)
254 2 {
255 3 display_f(1000);
256 3 AD9851_DDS_Control(1000,0);
257 3 }
258 2 if(keynum==4)
259 2 {
260 3 display_f(3000);
261 3 AD9851_DDS_Control(3000,0);
262 3 }
263 2 if(keynum==5)
264 2 {
265 3 display_f(10000);
266 3 AD9851_DDS_Control(10000,0);
267 3 }
268 2 if(keynum==6)
269 2 {
270 3 flag_f=1;
271 3 }
272 2 }
273 1 }
274
275 void f_add()
276 {
277 1 Lcd1602_Clear_All( );
278 1 stop0=0;
279 1 while(!stop0)
280 1 {
281 2 for(i=0;i<20;i++)
282 2 {
283 3 keynum=KeyEn(); //i=2;
284 3 display_f(100*i+100);
285 3 AD9851_DDS_Control(100*i+100,0);
286 3 delay(2000); //while(1);
287 3 if(keynum==2)
288 3 {
289 4 stop0=1;
290 4 break;
291 4 }
292 3 }
293 2 }
294 1 Lcd1602_Write_String(1,12,"stop");
295 1 }
296
297 void display_selection()
298 {
299 1 Lcd1602_Write_String(1,0,"1-100");
300 1 Lcd1602_Write_String(1,6,"2-300");
301 1 Lcd1602_Write_String(1,12,"3-1K");
302 1 Lcd1602_Write_String(2,0,"4-3K");
303 1 Lcd1602_Write_String(2,5,"5-10K");
C51 COMPILER V8.02 MAIN 01/14/2009 21:15:27 PAGE 6
304 1 }
305
306
307
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1867 ----
CONSTANT SIZE = 162 ----
XDATA SIZE = 20 ----
PDATA SIZE = ---- ----
DATA SIZE = 14 14
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -