📄 main.lst
字号:
C51 COMPILER V6.12 MAIN 09/05/2007 17:00:35 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE main.c DB OE
stmt level source
1 #define SCON0 SCON
2 #define SBUF0 SBUF
3
4 #define TI0 TI
5 #define RI0 RI
6
7 #include <c8051f020.h>
8 #include <math.h>
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include "common.h"
12 #include "osc.h"
13 #include "uart.h"
14 #include "ad9851.h"
15 #include "lcd.h"
16 #include "tl5602.h"
17 #include "dac.h"
18
19 void LCD_display(unsigned char code_bit,unsigned char flag);
20
21
22 unsigned char fn;
23 unsigned long ad9851_frequency;
24 unsigned char ad9851_phase;
25 unsigned long fff[4]={1000000,100000,10000,1000};
26 unsigned char xdata show_now[256];
27 unsigned char xdata show_ago[256];
28 unsigned int show_now_number;
29 unsigned int show_ago_number;
30 unsigned char xdata sin_table[256];
31
32 sbit sdiv=P0^7;
33 sbit vdiv=P0^6;
34 sbit level=P0^5;
35 sbit LCD_data=P2^7;
36 sbit LCD_clk=P2^6;
37 sbit RS=P2^5;
38 sbit RW=P2^4;
39 sbit E=P2^3;
40 //int0=P0.0
41 //int1=p0.1
42 //int6=P3.6
43 //int7=P3.7
44 //ad9851 P3.0123
45 sbit save=P3^4;
46 sbit show=P3^5;
47 sbit clr=P2^0;
48 sbit single_tr=P2^1;
49 sbit clr_single=P2^2;
50 //sbit dac0832wr=P0^4;
51
52 #define sample_data P7
53 //#define dac0832 P6
54 main()
55 {
C51 COMPILER V6.12 MAIN 09/05/2007 17:00:35 PAGE 2
56 1
57 1 unsigned int i;
58 1 unsigned char save_flag=0x00;
59 1 unsigned char show_flag=0x00;
60 1 unsigned char single_flag=0x00;
61 1 unsigned char clr_single_flag=0x00;
62 1
63 1 Osc_Init_Parameter_t Osc_Init_Parameter;
64 1
65 1 WDTCN = 0xDE; // disable watchdog timer
66 1 WDTCN = 0xAD;
67 1
68 1 Osc_Init_Parameter.Source_Select = EXTERNAL_OSC;
69 1 Osc_Init_Parameter.External_Mode = CRYSTAL;
70 1 Osc_Init_Parameter.Frequency = 22118400;
71 1
72 1 Osc_Init(Osc_Init_Parameter);
73 1
74 1 // Port Setup
75 1 XBR0=0x00; // HW_UART routed to pins P0.0 and P0.1;
76 1 XBR1=0x14;
77 1 XBR2=0x40; // Enable crossbar, pull-ups enabled.
78 1
79 1 P0MDOUT=0x00;///////////////////////
80 1 P2MDOUT=0xff;
81 1 P3MDOUT=0xff;
82 1
83 1 EA=1;
84 1 EX0=1;
85 1 IT0=1;
86 1 EX1=1;
87 1 IT1=1;
88 1 EIE2=0x30;/////////P3.6;;;;;P3.7///////
89 1 P3IF=0x00;
90 1
91 1 uart_init();
92 1
93 1 LCD_display(0x0c,0x01);
94 1 LCD_display(0x01,0x01);
95 1 LCD_display(0x38,0x01);
96 1 LCD_display(0x06,0x01);
97 1 LCD_display(0x80,0x01);
98 1 LCD_display(0x30,0x00);
99 1
100 1 fn=0;
101 1 show_now_number=0;
102 1 show_ago_number=0;
103 1
104 1 //for(qqq=0;qqq<256;qqq++)
105 1 //{
106 1 //tl5602_write((unsigned char)qqq);
107 1 //Loop_Delay(200);
108 1 //}
109 1
110 1 dac_init();
111 1
112 1 //for(i=0;i<256;i++)
113 1 //{
114 1
115 1 //sin_table[i]=(unsigned char)((sin((float)i/256.0*6.28)+1.0)*127);
116 1
117 1 //}
C51 COMPILER V6.12 MAIN 09/05/2007 17:00:35 PAGE 3
118 1
119 1
120 1 //while(1)
121 1 //{
122 1 // for(i=0;i<256;i++)
123 1 //{
124 1 //dac0_work(i);
125 1 //dac1_work(sin_table[i]);
126 1
127 1 // }
128 1 //}
129 1
130 1 ad9851_init();
131 1 ad9851_frequency=(unsigned long)((float)fff[fn]*23.861);
132 1 ad9851_phase= 0x01;
133 1 ad9851_input(ad9851_frequency,ad9851_phase);
134 1 Loop_Delay(100);
135 1
136 1 while(1)
137 1 {
138 2
139 2 save=1;
140 2 if(save==1)
141 2 save_flag=0x01;
142 2
143 2 show=1;
144 2 if(show==1)
145 2 show_flag=0x01;
146 2
147 2 clr=1;
148 2 if(clr==1)
149 2 {
150 3 save_flag=0x00;
151 3 show_flag=0x00;
152 3 single_flag=0x00;
153 3 }
154 2
155 2
156 2 single_tr=1;
157 2 if(single_tr==1)
158 2 single_flag=0x01;
159 2
160 2
161 2 EIE2=0x30;//重新开启采样中断
162 2 while(show_now_number<256);//等待数据采集完成
163 2 show_now_number=0;
164 2
165 2 if(save_flag==0x01)
166 2 {
167 3 for(i=0;i<256;i++)
168 3 show_ago[i]=show_now[i];//存储波形
169 3 save_flag=0x00;
170 3 }
171 2
172 2
173 2 if(show_flag==0x00)//输出采样波形
174 2 {
175 3 for(i=0;i<256;i++)
176 3 {
177 4 dac0_work(i);
178 4 dac1_work(show_now[i]);
179 4 }
C51 COMPILER V6.12 MAIN 09/05/2007 17:00:35 PAGE 4
180 3 dac0_work(0);
181 3 }
182 2
183 2 if(show_flag==0x01)//输出存储波形
184 2 {
185 3 for(i=0;i<256;i++)
186 3 {
187 4 dac0_work(i);
188 4 dac1_work(show_ago[i]);
189 4 }
190 3 dac0_work(0);
191 3 }
192 2
193 2 if(single_flag==0x01)
194 2 while(1)
195 2 {
196 3 clr_single=1;
197 3 if(clr_single==1)
198 3 {
199 4 single_flag=0x00;
200 4 break;
201 4 }
202 3 else
203 3 for(i=0;i<256;i++)
204 3 {
205 4 dac0_work(i);
206 4 dac1_work(show_now[i]);
207 4 }
208 3
209 3 }
210 2
211 2 }
212 1
213 1 }
214
215
216 void int0() interrupt 0
217 {
218 1
219 1 EX0=0;
220 1 Loop_Delay(10000);
221 1 fn=fn+1;
222 1 if(sdiv==0)
223 1 {
224 2
225 2 fn++;
226 2
227 2 }
228 1 else
229 1 {
230 2
231 2 fn--;
232 2 }
233 1
234 1 if(fn==0)
235 1 {
236 2 fn=4;
237 2 }
238 1 if(fn==4)
239 1 {
240 2 fn=1;
241 2 }
C51 COMPILER V6.12 MAIN 09/05/2007 17:00:35 PAGE 5
242 1 fn=fn-1;
243 1 ad9851_frequency=(unsigned long)((float)fff[fn]*23.861);
244 1 ad9851_phase= 0x01;
245 1 ad9851_input(ad9851_frequency,ad9851_phase);
246 1 Loop_Delay(100);
247 1
248 1 EX0=1;
249 1 }
250
251
252 void int1() interrupt 2
253 {
254 1 EX1=0;
255 1 Loop_Delay(10000);
256 1
257 1
258 1
259 1
260 1
261 1 }
262
263
264 void int6() interrupt 18////0832
265 {
266 1
267 1
268 1
269 1
270 1 }
271
272
273
274 void int7() interrupt 19////////下降沿采数
275 {
276 1 sample_data=0xff;
277 1 show_now[show_now_number]=sample_data;
278 1 show_now_number++;
279 1
280 1 if(show_now_number==256)
281 1 {
282 2 EIE2=0x10;///////采够点时关闭外部中断7
283 2 }
284 1 }
285
286
287 void LCD_display(unsigned char code_bit,unsigned char flag)
288 {
289 1 unsigned char temp_1,temp_2;
290 1 unsigned char a;
291 1 unsigned char j;
292 1 temp_1=code_bit;
293 1 temp_2=code_bit;
294 1 for(a=0;a<8;a++)
295 1 {
296 2 LCD_clk=0;
297 2 temp_1=temp_2;
298 2 temp_1=temp_1&0x80;
299 2 if(temp_1==0x00)
300 2 {
301 3 LCD_data=0;
302 3 }
303 2 else
C51 COMPILER V6.12 MAIN 09/05/2007 17:00:35 PAGE 6
304 2 {
305 3 LCD_data=1;
306 3 }
307 2 LCD_clk=1;
308 2 temp_2=temp_2<<1;
309 2 }
310 1 if(flag==0x01)
311 1 {
312 2
313 2 RS=0;
314 2 RW=0;
315 2 E=1;
316 2 j=2000;
317 2 while(j-->1);
318 2 E=0;
319 2 j=4000;
320 2 while(j-->1);
321 2 }
322 1 else
323 1 {
324 2 RS=1;
325 2 RW=0;
326 2 E=1;
327 2 j=2000;
328 2 while(j-->1);
329 2 E=0;
330 2 j=4000;
331 2 while(j-->1);
332 2 }
333 1 }
334
335
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 832 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 768 ----
PDATA SIZE = ---- ----
DATA SIZE = 26 12
IDATA SIZE = ---- ----
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 + -