📄 aa.lst
字号:
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE AA
OBJECT MODULE PLACED IN aa.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe aa.c DB OE
stmt level source
1 #include "c8051f020.h"
2 #include <math.h>
3
4
5 sfr16 ADC0 = 0xBE;
6 sfr16 DAC0 = 0xD2;
7 sfr16 DAC1 = 0xD5;
8 sfr16 RCAP2 = 0xCA;
9 sfr16 T2 = 0xCC;
10 sfr16 T0 = 0x8A;
11
12 sbit LEDA = P1^2;
13 sbit LCDRST = P1^1;
14 sbit RW = P0^7;
15 sbit LCDEN = P1^3;
16 sbit LCDRS = P1^0;
17 sbit DB0 = P3^0;
18 sbit DB1 = P3^1;
19 sbit DB2 = P3^2;
20 sbit DB3 = P3^3;
21 sbit DB4 = P3^4;
22 sbit DB5 = P3^5;
23 sbit DB6 = P3^6;
24 sbit DB7 = P3^7;
25
26 #define uchar unsigned char
27 #define uint unsigned int
28 #define x1 0x80
29 #define x2 0x88
30 #define y 0x80
31 #define comm 0
32 #define dat 1
33 #define AD_VALUE_MAX 5035 // 5V
34 #define AD_COUNT_MAX 20 // 20*4.9ms =1s
35 #define DA_VALUE_MAX1 9990 // 10.02V
36 #define DA_VALUE_MAX2 9940 // 9.97V
37 #define DA_VALUE_ONE 4096/1000 // DA_VALUE_MAX/10
38 #define PWM_VALUE_MAX1 10000 // 100%
39 #define PWM_VALUE_MAX2 5000 // 5V
40 #define LCD_COUNT_LEVEL1 1000 //
41 #define LCD_COUNT_LEVEL2 1000 //
42 #define N_Hz 128 //画图采样个数
43
44
45 void config (void);
46 void global_var(void);
47 void show_init (void);
48 void chk_busy (void);
49 void init_lcd (void);
50 void wr_lcd (uchar dat_comm,uchar content);
51 void fys(uchar code *tab) ;
52 void delay1 (uint ms);
53 void delay (uint ms);
54 void t0_init(void);
55 void img_disp1 (uchar *img);
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 2
56 void ad_convert1(void);
57
58 void clrram (void);
59 void lat_disp (uchar data1,uchar data2);
60 void chn_disp1 (uchar code *chn);
61 void DispConvert(void);
62 void comparation(void);
63 void t0_inter_handle(void);
64 void cp0(void);
65
66 uchar xdata lcd_count;
67 uchar xdata key_num;
68 uchar xdata num;
69 uint xdata key_count;
70 uchar xdata key_flag;
71 uchar xdata states_flag;
72 float xdata ad_add;
73 uchar xdata ad_count;
74 float xdata ad_until;
75 uchar xdata ad_flag;
76 float xdata da_value1;
77 float xdata da_value2;
78 float xdata da_count;
79 int xdata pwm_count;
80 uint xdata pwm1_save;
81 uint xdata pwm2_save;
82 uint xdata pwm_level; // 0x7FFF表示占空比为50%
83 int xdata pwm_count_save1;
84 int xdata pwm_count_save2;
85 unsigned long xdata cp0_count;
86 uchar xdata t0_count;
87 int drawing_flag ;
88 int low_freq;
89 int xdata ad_init_flag;
90
91
92 uint xdata N_Hz_Count = 0;
93
94
95 uchar code tab0[]=
96 {
97 "吴耘要灭了风雨声"
98 " "
99 "祁高瞻是煞笔 "
100 " "
101 };
102
103 uchar code tab2[]=
104 {
105 "周期为 "
106 "电压有效值为 "
107 };
108
109
110 uchar xdata tab3[128];
111
112
113
114 uchar xdata tab1[]=
115 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
116 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
117 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 3
118 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
119 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
120 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
121 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
122 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
123 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
124 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
125 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
126 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
127 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
128 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
129 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
130 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
131 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
132 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
133 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
134 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
135 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
136 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
137 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
138 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
139 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
140 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
141 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
142 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
143 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
144 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
145 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
146 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
147
148 };
149
150
151 float n = 0.00;
152 int x = 0x00;
153 int yy = 0x00;
154
155 /*void t0_inter(void) interrupt 1
156 {
157
158
159 {
160
161 EA = 0;
162
163 TH0 = 0xfc;
164 TL0 = 0x17;
165
166
167
168
169
170 }
171 n++;
172 EA = 1;
173
174 TF0 = 0;
175 }
176 yy = 3;
177 }
178 */
179
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 4
180 void cp0_up_inter (void) interrupt 11
181 {
182 1 cp0_count ++ ;
183 1 CPT0CN &=0xDF; //清上升中断标志位CP0RIF
184 1
185 1 }
186
187 void ad_inter (void) interrupt 15
188 {
189 1 // float xdata m;
190 1 uint xdata i;
191 1 uint xdata b;
192 1 float xdata m;
193 1 // uchar xdata gew,shi,bai,qian;
194 1
195 1 if(n == 128) //////数据处理时关中断不会影响采样
196 1 {n = 0;
197 2 x = 0;
198 2 }
199 1
200 1 i = ADC0;
201 1 m = i;
202 1 m = m/4096.0;
203 1 m *= 100;
204 1 //////////////////////////////////
205 1
206 1 if(N_Hz_Count <= 128)
207 1 {
208 2 b = (int)m;
209 2 tab3[N_Hz_Count] = (int)m;
210 2 N_Hz_Count++;
211 2 }
212 1
213 1
214 1
215 1
216 1
217 1 /////////////////////////////////
218 1 /*
219 1 m = (float)i;
220 1 if (ad_flag==0)
221 1 {
222 1 ad_add = ad_add + m;
223 1 if (ad_count==AD_COUNT_MAX)
224 1 {m=ad_add/AD_COUNT_MAX;
225 1 ad_count= 0;
226 1 ad_add= 0;
227 1 ad_until=m;
228 1 }
229 1 else m=ad_until;
230 1 }
231 1 if (ad_flag==1)
232 1 {
233 1 ad_flag=0;
234 1 ad_until=m;
235 1 }
236 1 m = m/4096.0;
237 1 m *= AD_VALUE_MAX;
238 1 i = (int)m;
239 1 ad_count++;
240 1
241 1
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 5
242 1 qian = i/1000;
243 1 bai = (i-qian*1000)/100;
244 1 shi = (i-qian*1000-bai*100)/10;
245 1 gew = i-qian*1000-bai*100-shi*10;
246 1 if(x < 16)
247 1 { int f;
248 1 yy = 16-((float)(qian*10+bai))/50*16;
249 1 f = (int)n%8;
250 1 switch (f)
251 1 {case 0: tab1[16*yy+x] += 0x80;break;
252 1 case 1: tab1[16*yy+x] += 0x40;break;
253 1 case 2: tab1[16*yy+x] += 0x20;break;
254 1 case 3: tab1[16*yy+x] += 0x10;break;
255 1 case 4: tab1[16*yy+x] += 0x08;break;
256 1 case 5: tab1[16*yy+x] += 0x04;break;
257 1 case 6: tab1[16*yy+x] += 0x02;break;
258 1 case 7: tab1[16*yy+x] += 0x01;x++;break;
259 1 }
260 1 }
261 1 n++;
262 1 */
263 1 /*if (gew >= 4 && gew <=9)
264 1 {
265 1 gew=0;
266 1 shi++;
267 1 if shi=
268 1 if (shi == 0) bai++;
269 1 if (bai == 0) qian++;
270 1
271 1 }*/
272 1 /*
273 1 qian += 0xB0;
274 1 bai += 0xB0;
275 1 shi += 0xB0;
276 1 gew += 0xB0;
277 1
278 1 wr_lcd (comm,0x30);
279 1 wr_lcd (comm,0x0C);
280 1 wr_lcd (comm,0x89);
281 1 wr_lcd (dat,0xA3);
282 1 wr_lcd (dat,qian);
283 1
284 1 wr_lcd (comm,0x8B);
285 1 wr_lcd (dat,0xA3);
286 1 wr_lcd (dat,bai);
287 1 wr_lcd (dat,0xA3);
288 1 wr_lcd (dat,shi);
289 1 //wr_lcd (dat,gew);
290 1 */
291 1 AD0INT = 0;
292 1 }
293
294
295
296
297
298
299
300
301
302
303
C51 COMPILER V7.06 AA 06/25/2007 21:44:00 PAGE 6
304 void main(void)
305 {int a,b;
306 1 SP = 0x7f;
307 1 config();
308 1 init_lcd ();
309 1 show_init();
310 1 //t0_init();
311 1
312 1 comparation();////开了t0和cp0
313 1 drawing_flag = 0; //画图或采样标志
314 1 ad_init_flag = 1; //判断要不要初始化AD,也就是说要不要调整采样周期
315 1
316 1 while(1)
317 1 { if(drawing_flag == 0)
318 2 { cp0(); ////////先采样,采样结束后关cp0和T0;注意此时TF0为1
319 3 if(TF0 == 0)
320 3 continue;
321 3 if(TF0 == 1)
322 3 {drawing_flag = 1;
323 4 TF0 = 0; //////T0仍然未启动
324 4 }
325 3 }
326 2
327 2 if(cp0_count > 300)
328 2 low_freq = 0;
329 2 else
330 2 low_freq = 1;
331 2
332 2 if(ad_init_flag == 1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -