📄 main.lst
字号:
C51 COMPILER V4.01, MAIN 06/01/06 17:56:11 PAGE 1
DOS C51 COMPILER V4.01, COMPILATION OF MODULE MAIN
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: D:\SILABS\IDEFILES\C51\BIN\C51.EXE MAIN.C DB OE
stmt level source
1 #include "main.h" //程序经过修改调整FLASH写数据正确,且每个参数分为高低位。
2 #include "bl.h"
3
4 sbit CS=P1^2; //7289控制键
5 sbit CLK=P1^3;
6 sbit DIO=P1^4;
7 sbit KEY=P1^6;
8
9 sbit P0_0=P0^0; //二极管控制端口
10 sbit P1_5=P1^5;
11 sbit P1_7=P1^7;
12
13 sbit S1=P0^3; //3个接近开关
14 sbit S2=P0^2;
15 sbit S3=P0^4;
16
17 sbit P0_6=P0^6; //热保护
18 sbit P0_7=P0^7; //手动
19 sbit P0_5=P0^5; //屏蔽
20 sbit P1_0=P1^0; //故态继电器K1触发
21 sbit P1_1=P1^1; //故态继电器K2触发
22
23
24
25 main()
26 {
27 1 do
28 1 {
29 2 PCA0MD=0X00;
30 2 SysClk_Init();
31 2 port_Init(); //端口配置
32 2 timer_Init();
33 2 DAC_Init();
34 2 WDT_Init(); //系统配置
35 2
36 2 din_50=0; //初始化
37 2 setcan=0;
38 2 pointer=4;
39 2 count=0;
40 2 freq=0;
41 2 idamin_l=0;
42 2 idamin_h=0;
43 2 idamax_l=0;
44 2 idamax_h=0;
45 2 t_s=15;
46 2 t_m=0;
47 2
48 2 db4=0x00;
49 2 db3=0x00;
50 2 db2=0x00;
51 2 db1=0x00;
52 2
53 2 CS=0;
54 2 CLK=0;
55 2 delay_short();
56 2
57 2
58 2 SEND_BUF=0xA4; //7289复位
59 2 send7289();
C51 COMPILER V4.01, MAIN 06/01/06 17:56:11 PAGE 2
60 2 db_clear(1,2,3,4);
61 2 ACC=0;
62 2
63 2 while(setcan<=200)
64 2 {
65 3 do
66 3 {
67 4 if (KEY==0)
68 4 {
69 5 CS = 0;
70 5 delay_short();
71 5 SEND_BUF=0X15; // 写入读键盘数据指令
72 5 send7289();
73 5 delay_short();
74 5 symbol = read_key(); // 读出按键的值
75 5 ACC=symbol;
76 5 CS = 1;
77 5 delay_long();
78 5
79 5 switch(symbol)
80 5 {
81 6 case(2): //检测按下功能键
82 6 {
83 7 freq++;
84 7 if(freq==1)
85 7 {
86 8 P1_7=1;
87 8 P1_5=0;
88 8 P0_0=0;
89 8
90 8 }
91 7 else if(freq==2)
92 7 {
93 8 P1_7=0;
94 8 P1_5=0;
95 8 P0_0=1;
96 8 }
97 7 else if(freq==3)
98 7 {
99 8 P1_7=0;
100 8 P1_5=1;
101 8 P0_0=0;
102 8 }
103 7 else
104 7 {
105 8 freq=0;
106 8 P1_7=0;
107 8 P1_5=0;
108 8 P0_0=0;
109 8 EA=0; //禁止中断;
110 8 FLSCL=0X80;
111 8 PSCTL=0X03; //擦除指定的Flash地址;
112 8 FLKEY=0XA5;
113 8 FLKEY=0XF1;
114 8 ACC=FLKEY;
115 8 pwrite=0X1b00;
116 8 *pwrite=0XF0;
117 8 PSCTL=0X00;
118 8
119 8 PSCTL=0X01;
120 8 FLKEY=0XA5;
121 8 FLKEY=0XF1;
122 8 ACC=FLKEY;
123 8 *pwrite++=t_s;
124 8
125 8 PSCTL=0X01;
C51 COMPILER V4.01, MAIN 06/01/06 17:56:11 PAGE 3
126 8 FLKEY=0XA5;
127 8 FLKEY=0XF1;
128 8 ACC=FLKEY;
129 8 *pwrite++=t_m;
130 8
131 8 PSCTL=0X01;
132 8 FLKEY=0XA5;
133 8 FLKEY=0XF1;
134 8 ACC=FLKEY;
135 8 *pwrite++=idamin_l;
136 8
137 8 PSCTL=0X01;
138 8 FLKEY=0XA5;
139 8 FLKEY=0XF1;
140 8 ACC=FLKEY;
141 8 *pwrite++=idamin_h;
142 8
143 8 PSCTL=0X01;
144 8 FLKEY=0XA5;
145 8 FLKEY=0XF1;
146 8 ACC=FLKEY;
147 8 *pwrite++=idamax_l;
148 8
149 8 PSCTL=0X01;
150 8 FLKEY=0XA5;
151 8 FLKEY=0XF1;
152 8 ACC=FLKEY;
153 8 *pwrite++=idamax_h;
154 8
155 8 PSCTL=0X00;
156 8 EA=1;
157 8 }
158 7
159 7 while(KEY==0);
160 7 break;
161 7
162 7 }
163 6
164 6 case(1): //按键循环闪烁
165 6 {
166 7 if(pointer==4)
167 7 {
168 8 pointer--;
169 8 CS=0;
170 8 delay_short();
171 8 SEND_BUF=0X88;
172 8 send7289();
173 8 delay_short();
174 8 SEND_BUF=0xF7;
175 8 send7289();
176 8 CS=1;
177 8 delay_long();
178 8 while(KEY==0);
179 8 break;
180 8 }
181 7 else if(pointer==3)
182 7 {
183 8 pointer--;
184 8 CS=0;
185 8 delay_short();
186 8 SEND_BUF=0X88;
187 8 send7289();
188 8 delay_short();
189 8 SEND_BUF=0xFB;
190 8 send7289();
191 8 CS=1;
C51 COMPILER V4.01, MAIN 06/01/06 17:56:11 PAGE 4
192 8 delay_long();
193 8 while(KEY==0);
194 8 break;
195 8 }
196 7 else if(pointer==2)
197 7 {
198 8 pointer--;
199 8 CS=0;
200 8 delay_short();
201 8 SEND_BUF=0X88;
202 8 send7289();
203 8 delay_short();
204 8 SEND_BUF=0xFD;
205 8 send7289();
206 8 CS=1;
207 8 delay_long();
208 8 while(KEY==0);
209 8 break;
210 8 }
211 7 else if(pointer==1)
212 7 {
213 8 pointer--;
214 8 CS=0;
215 8 delay_short();
216 8 SEND_BUF=0X88;
217 8 send7289();
218 8 delay_short();
219 8 SEND_BUF=0xFE;
220 8 send7289();
221 8 CS=1;
222 8 delay_long();
223 8 while(KEY==0);
224 8 break;
225 8 }
226 7 else if(pointer==0)
227 7 {
228 8 pointer=4;
229 8 CS=0;
230 8 delay_short();
231 8 SEND_BUF=0X88;
232 8 send7289();
233 8 delay_short();
234 8 SEND_BUF=0xFF;
235 8 send7289();
236 8 CS=1;
237 8 delay_long();
238 8 while(KEY==0);
239 8 if(freq==1)
240 8 {
241 9 t_s=db2*10+db1; //1S=20次中断;
242 9 t_m=db4*10+db3;
243 9 }
244 8 else if(freq==2)
245 8 {
246 9 idamin_l=db2*10+db1;
247 9 idamin_h=db4*10+db3;
248 9
249 9 }
250 8 else if(freq==3)
251 8 {
252 9 idamax_l=db2*10+db1;
253 9 idamax_h=db4*10+db3;
254 9 }
255 8 else
256 8 {
257 9 ;
C51 COMPILER V4.01, MAIN 06/01/06 17:56:11 PAGE 5
258 9 }
259 8 break;
260 8 }
261 7
262 7 }
263 6
264 6 case(3): //检测按下键2,对应数码管的值加1
265 6 {
266 7 if(pointer==3) //DB4
267 7 {
268 8 db4++;
269 8 if(db4==10)
270 8 db4=0;
271 8 CS=0;
272 8 delay_short();
273 8 SEND_BUF=0XCB;
274 8 send7289();
275 8 delay_short();
276 8 SEND_BUF=db4;
277 8 send7289();
278 8 CS=1;
279 8 delay_long();
280 8 while(KEY==0);
281 8 break;
282 8 }
283 7 else if(pointer==2) //DB3
284 7 {
285 8 db3++;
286 8 if(db3==10)
287 8 db3=0;
288 8 CS=0;
289 8 delay_short();
290 8 SEND_BUF=0XCA;
291 8 send7289();
292 8 delay_short();
293 8 SEND_BUF=db3;
294 8 send7289();
295 8 CS=1;
296 8 delay_long();
297 8 while(KEY==0);
298 8 break;
299 8 }
300 7 else if(pointer==1) //DB2
301 7 {
302 8 db2++;
303 8 if(db2==10)
304 8 db2=0;
305 8 CS=0;
306 8 delay_short();
307 8 SEND_BUF=0XC9;
308 8 send7289();
309 8 delay_short();
310 8 SEND_BUF=db2;
311 8 send7289();
312 8 CS=1;
313 8 delay_long();
314 8 while(KEY==0);
315 8 break;
316 8 }
317 7 else if(pointer==0) //DB1
318 7 {
319 8 db1++;
320 8 if(db1==10)
321 8 db1=0;
322 8 CS=0;
323 8 delay_short();
C51 COMPILER V4.01, MAIN 06/01/06 17:56:11 PAGE 6
324 8 SEND_BUF=0XC8;
325 8 send7289();
326 8 delay_short();
327 8 SEND_BUF=db1;
328 8 send7289();
329 8 CS=1;
330 8 delay_long();
331 8 while(KEY==0);
332 8 break;
333 8 }
334 7 else
335 7 {
336 8 while(KEY==0);
337 8 break;
338 8 }
339 7 }
340 6 default: break;
341 6 }
342 5 }
343 4 else
344 4 {
345 5 break;
346 5 }
347 4 }while(1);
348 3 }
349 2
350 2
351 2 do{
352 3 do
353 3 {
354 4 while((P0_7!=0)&&(din_50!=(t_m*60+t_s)*20)) //手动按钮没有按下且时间没达到设定值,则等待
355 4 {;}
356 4 db_clear(0,0,0,0);
357 4 din_50=0;
358 4 }while(P0_5==0); //外部有屏蔽信号,程序重新开始执行
359 3
360 3 P1_0=1; //触发K1;
361 3
362 3 do
363 3 {
364 4 if(S1==0) //脉冲计数
365 4 {
366 5 count++;
367 5 while(S1==0)
368 5 {;}
369 5 }
370 4 else
371 4 {
372 5 do{
373 6 if (KEY==0)
374 6 {
375 7 CS = 0;
376 7 delay_short();
377 7 SEND_BUF=0X15;
378 7 send7289();
379 7 delay_short();
380 7 symbol = read_key();
381 7 CS = 1;
382 7 delay_long();
383 7
384 7 switch(symbol)
385 7 {
386 8 case(2):
387 8 {
388 9 freq++;
389 9 if(freq==1)
C51 COMPILER V4.01, MAIN 06/01/06 17:56:11 PAGE 7
390 9 {
391 10 P1_7=1;
392 10 P1_5=0;
393 10 P0_0=0;
394 10 pread=0x1b00;
395 10 t_s=*pread++;
396 10 t_m=*pread;
397 10 while(KEY==0);
398 10 db_clear(t_m/10,t_m%10,t_s/10,t_s%10);
399 10 break;
400 10 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -