📄 ser.lst
字号:
242 {
243 1
244 1
245 1 if(dat_c>=23&&dat_c<=56)
246 1 {
247 2 if(26<dat_c&&dat_c<=56)
248 2 {
249 3 P0=0xeb;
250 3
251 3 cshi=1;
252 3 P2=dis[(dat_c-26)%10];
253 3 cshi=0;;
254 3 delay(5);
255 3 guan();
256 3 cge=1;
257 3 P2=dis[(dat_c-26)/10];
258 3 cge=0;
259 3 delay(5);
260 3 guan();
261 3
262 3 }
263 2 if(dat_c>=23&&dat_c<=26)
264 2 {
265 3 P0=0xe2;//黄灯
266 3
267 3 cshi=1;
268 3 cge=1;
269 3 P2=dis[(dat_c-23)%10];
270 3 cge=0;
271 3 delay(5);
272 3 guan();
273 3 }
274 2 }
275 1
276 1 if(dat_c<23)
277 1 {
278 2 if(dat_c>3&&dat_c<23)
279 2 {
280 3 P0=0xdd;//红灯
281 3 guan();
282 3
283 3 cshi=1;
284 3 P2=dis[(dat_c-3)%10];
285 3 cshi=0;
286 3 delay(5);
287 3 guan();
288 3
289 3 cge=1;
290 3 P2=dis[(dat_c-3)/10];
291 3 cge=0;
292 3 delay(5);
293 3 guan();
294 3 }
295 2 if(dat_c<=3)
296 2 {
297 3 zge=1;
298 3 zshi=1;
299 3 cge=1;
300 3 P2=0xff;
301 3 cshi=0;
302 3 P2=dis[(dat_c)%10];
303 3 delay(1);
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 6
304 3 cshi=1;
305 3 guan();
306 3 }
307 2
308 2 }
309 1 }
310
311 void keyscan() //键盘扫描子程序,KEY1功能键,KEy2减一键,KEY3加一键
312 {
313 1
314 1 if(key1==0)
315 1 {
316 2 delay(5);
317 2 if(key1==0)
318 2 {
319 3 key1num++;
320 3 while(!key1)
321 3 {
322 4 display(num,num1);
323 4 }
324 3 if(key1num==1)
325 3 {
326 4 TR0=0;
327 4 }
328 3 if(key1num==3)
329 3 {
330 4 key1num=0;
331 4 TR0=1;
332 4 }
333 3 }
334 2 }
335 1 if(key1num!=0) //先判断功能设置键
336 1 {
337 2 if(key2==0)
338 2 {
339 3 delay(5);
340 3 if(key2==0)
341 3 {
342 4 if(key1num==1)
343 4 {
344 5 while(!key2)
345 5 {
346 6 displayz(num);
347 6 }
348 5 num++;
349 5 if(num==56)
350 5 {
351 6 num=0;
352 6 }
353 5 }
354 4 if(key1num==2)
355 4 {
356 5 while(!key2)
357 5 {
358 6 displayc(num1);
359 6
360 6 }
361 5 num1++;
362 5 if(num1==56)
363 5 num1=0;
364 5 }
365 4 }
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 7
366 3 }
367 2 if(key3==0) //减一键
368 2 {
369 3 delay(5);
370 3 if(key3==0)
371 3 {
372 4 if(key1num==1)
373 4 {
374 5 while(!key3)
375 5 {
376 6 displayz(num);
377 6 }
378 5 num--;
379 5 if(num==0)
380 5 {
381 6 num=56;
382 6 }
383 5 }
384 4 if(key1num==2)
385 4 {
386 5 while(!key3)
387 5 {
388 6 displayc(num1);
389 6
390 6 }
391 5 num1--;
392 5 if(num1==0)
393 5 num1=56;
394 5 }
395 4 }
396 3 }
397 2 }
398 1
399 1
400 1 }
401
402 void main() //程序主函数
403 {
404 1
405 1 init(); //初始化程序
406 1 while(1)
407 1 {
408 2 if(count==20) //自动倒计时功能
409 2 {
410 3 count=0;
411 3 num--;
412 3 num1--;
413 3 if(num==0)
414 3 num=56;
415 3 if(num1==0)
416 3 num1=56;
417 3 }
418 2 if(key1num!=0) //控制显示模式
419 2 {
420 3 if(key1num==1)
421 3 {
422 4 displayz(num);
423 4 }
424 3 if(key1num==2)
425 3 {
426 4 displayc(num1);
427 4 }
C51 COMPILER V8.02 SER 08/19/2008 14:42:15 PAGE 8
428 3 }
429 2 if(key1num==0)
430 2 {
431 3 display(num,num1);
432 3 }
433 2
434 2 keyscan();
435 2 }
436 1 }
437 void t0(void ) interrupt 1 //定时器T0 中断计时用
438 {
439 1 TH0=(65535-50000)/256;
440 1 TL0=(65535-50000)%256;
441 1 count++;
442 1 }
443 ////////////////////////////////////////////
444 //串口通信////////////////
445 //发送0x00,数码管停止,发送0xff,计时起动///
446 //发送0x01,设置主通道的时间//////////
447 //发送0x02 设置次通道的时间////////
448 void ser() interrupt 4
449 {
450 1 RI=0; //软件清零
451 1 // P1=SBUF;
452 1 a=SBUF; //读SBUF的值
453 1 // SBUF=a;
454 1 if(a==0x00)
455 1 {
456 2 flag=1; //标志位
457 2 TR0=0; //停止计数器
458 2 }
459 1 if(a==0xff)
460 1 {
461 2 TR0=1; //标志位
462 2 flag=0; //启动
463 2 }
464 1 if(flag==1)
465 1 {
466 2 if(a==0x01)
467 2 {
468 3 num=SBUF; //设置主通道的通车时间
469 3 }
470 2 if(a==0x02)
471 2 {
472 3 num1=SBUF; //设置次通道的通车时间
473 3 }
474 2 }
475 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1207 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 3
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 + -