📄 main.lst
字号:
373 4 if(flag==0)
374 4 {
375 5 flag=1;
376 5 frequency=5;
377 5 }
378 4 else
379 4 {
380 5 frequency=(int)(frequency*10+5);
381 5 if(frequency>1000)
382 5 {
383 6 disbuf[3]=11;
384 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
385 6 frequency=0;
386 6 goto exception;
387 6 }
388 5 }
389 4 while(key5==0);
390 4 }
391 3 }
392 2
393 2 if(key6==0)
394 2 {
395 3 delay10ms();
396 3 if(key6==0)
397 3 {
398 4 switch(number)
399 4 {
400 5 case 0:
401 5 disbuf[3]=10;
402 5 disbuf[2]=10;
403 5 disbuf[1]=10;
404 5 disbuf[0]=6;
405 5 break;
406 5 case 1:
407 5 disbuf[3]=10;
408 5 disbuf[2]=10;
409 5 disbuf[1]=disbuf[0];
410 5 disbuf[0]=6;
411 5 break;
412 5 case 2:
413 5 disbuf[3]=10;
414 5 disbuf[2]=disbuf[1];
415 5 disbuf[1]=disbuf[0];
416 5 disbuf[0]=6;
417 5 break;
418 5 case 3:
419 5 disbuf[3]=disbuf[2];
420 5 disbuf[2]=disbuf[1];
421 5 disbuf[1]=disbuf[0];
422 5 disbuf[0]=6;
423 5 break;
424 5 }
425 4 number++;
426 4 if(number==4)
427 4 number=0;
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 8
428 4
429 4 if(flag==0)
430 4 {
431 5 flag=1;
432 5 frequency=6;
433 5 }
434 4 else
435 4 {
436 5 frequency=(int)(frequency*10+6);
437 5 if(frequency>1000)
438 5 {
439 6 disbuf[3]=11;
440 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
441 6 frequency=0;
442 6 goto exception;
443 6 }
444 5 }
445 4 while(key6==0);
446 4 }
447 3 }
448 2 if(key7==0)
449 2 {
450 3 delay10ms();
451 3 if(key7==0)
452 3 {
453 4 switch(number)
454 4 {
455 5 case 0:
456 5 disbuf[3]=10;
457 5 disbuf[2]=10;
458 5 disbuf[1]=10;
459 5 disbuf[0]=7;
460 5 break;
461 5 case 1:
462 5 disbuf[3]=10;
463 5 disbuf[2]=10;
464 5 disbuf[1]=disbuf[0];
465 5 disbuf[0]=7;
466 5 break;
467 5 case 2:
468 5 disbuf[3]=10;
469 5 disbuf[2]=disbuf[1];
470 5 disbuf[1]=disbuf[0];
471 5 disbuf[0]=7;
472 5 break;
473 5 case 3:
474 5 disbuf[3]=disbuf[2];
475 5 disbuf[2]=disbuf[1];
476 5 disbuf[1]=disbuf[0];
477 5 disbuf[0]=7;
478 5 break;
479 5 }
480 4 number++;
481 4 if(number==4)
482 4 number=0;
483 4
484 4 if(flag==0)
485 4 {
486 5 flag=1;
487 5 frequency=7;
488 5 }
489 4 else
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 9
490 4 {
491 5 frequency=(int)(frequency*10+7);
492 5 if(frequency>1000)
493 5 {
494 6 disbuf[3]=11;
495 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
496 6 frequency=0;
497 6 goto exception;
498 6 }
499 5 }
500 4 while(key7==0);
501 4 }
502 3 }
503 2
504 2 if(key8==0)
505 2 {
506 3 delay10ms();
507 3 if(key8==0)
508 3 {
509 4 switch(number)
510 4 {
511 5 case 0:
512 5 disbuf[3]=10;
513 5 disbuf[2]=10;
514 5 disbuf[1]=10;
515 5 disbuf[0]=8;
516 5 break;
517 5 case 1:
518 5 disbuf[3]=10;
519 5 disbuf[2]=10;
520 5 disbuf[1]=disbuf[0];
521 5 disbuf[0]=8;
522 5 break;
523 5 case 2:
524 5 disbuf[3]=10;
525 5 disbuf[2]=disbuf[1];
526 5 disbuf[1]=disbuf[0];
527 5 disbuf[0]=8;
528 5 break;
529 5 case 3:
530 5 disbuf[3]=disbuf[2];
531 5 disbuf[2]=disbuf[1];
532 5 disbuf[1]=disbuf[0];
533 5 disbuf[0]=8;
534 5 break;
535 5 }
536 4 number++;
537 4 if(number==4)
538 4 number=0;
539 4
540 4 if(flag==0)
541 4 {
542 5 flag=1;
543 5 frequency=8;
544 5 }
545 4 else
546 4 {
547 5 frequency=(int)(frequency*10+8);
548 5 if(frequency>1000)
549 5 {
550 6 disbuf[3]=11;
551 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 10
552 6 frequency=0;
553 6 goto exception;
554 6 }
555 5 }
556 4 while(key8==0);
557 4 }
558 3 }
559 2
560 2 if(key9==0)
561 2 {
562 3 delay10ms();
563 3 if(key9==0)
564 3 {
565 4 switch(number)
566 4 {
567 5 case 0:
568 5 disbuf[3]=10;
569 5 disbuf[2]=10;
570 5 disbuf[1]=10;
571 5 disbuf[0]=9;
572 5 break;
573 5 case 1:
574 5 disbuf[3]=10;
575 5 disbuf[2]=10;
576 5 disbuf[1]=disbuf[0];
577 5 disbuf[0]=9;
578 5 break;
579 5 case 2:
580 5 disbuf[3]=10;
581 5 disbuf[2]=disbuf[1];
582 5 disbuf[1]=disbuf[0];
583 5 disbuf[0]=9;
584 5 break;
585 5 case 3:
586 5 disbuf[3]=disbuf[2];
587 5 disbuf[2]=disbuf[1];
588 5 disbuf[1]=disbuf[0];
589 5 disbuf[0]=9;
590 5 break;
591 5 }
592 4 number++;
593 4 if(number==4)
594 4 number=0;
595 4
596 4 if(flag==0)
597 4 {
598 5 flag=1;
599 5 frequency=9;
600 5 }
601 4 else
602 4 {
603 5 frequency=(int)(frequency*10+9);
604 5 if(frequency>1000)
605 5 {
606 6 disbuf[3]=11;
607 6 disbuf[2]=disbuf[1]=disbuf[0]=10;
608 6 frequency=0;
609 6 goto exception;
610 6 }
611 5 }
612 4 while(key9==0);
613 4 }
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 11
614 3 }
615 2 if(makesure==0) //确认键
616 2 {
617 3 delay10ms();
618 3 if(makesure==0)
619 3 {
620 4 P2_3=0; //开确认指示灯
621 4 pw=500000/frequency; //计算脉冲宽度,单位:uS
622 4 multiple=(unsigned char)(pw/65536); //计算pw比65536的倍数
623 4 counter=multiple;
624 4 rest=(unsigned int)(pw%65536); //计算pw除以65536所得的余数
625 4 if(rest>184)
626 4 rest-=184; //线性修正,修正中断响应及中断受阻的时间影响
627 4 if(multiple==0)
628 4 {
629 5 TH0=(65536-rest)>>8;
630 5 TL0=65536-rest;
631 5 }
632 4 else
633 4 {
634 5 TH0=0;
635 5 TL0=0;
636 5 }
637 4 TR0=1;
638 4 }
639 3 }
640 2 if(renew==0)
641 2 {
642 3 delay10ms();
643 3 if(renew==0)
644 3 {
645 4 frequency=0;
646 4 disbuf[0]=disbuf[1]=disbuf[2]=disbuf[3]=0;
647 4 P2_3=1; //关确认指示灯
648 4 }
649 3 }
650 2 }
651 1 exception:
652 1 for(;;)
653 1 {
654 2 P2_2=0; //预置数超过1000报警灯
655 2 if(renew==0) //重置频率键按下
656 2 {
657 3 delay10ms();
658 3 if(renew==0) //重新初始化各变量
659 3 {
660 4 disbuf[0]=disbuf[1]=disbuf[2]=disbuf[3]=0;
661 4 P2_2=1; //关预置数指示灯
662 4 flag=0;
663 4 buffer=0;
664 4 goto begin; //返回按键查询
665 4 }
666 3 }
667 2 }
668 1 }
669
670
671 /***************延时10毫秒子程序*******************/
672 void delay10ms(void)
673 {
674 1 for(i=20;i>0;i--)
675 1 for(j=248;j>0;j--);
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 12
676 1 }
677
678 void t0(void) interrupt 1 //T0中断入口,中断服务程序用来产生方波
679 {
680 1 if(counter==0)
681 1 {
682 2 P2_0=~P2_0; //输出方波
683 2 TH0=(65536-rest)>>8;
684 2 TL0=65536-rest;
685 2 counter=multiple;
686 2 }
687 1 else
688 1 {
689 2 TH0=0;
690 2 TL0=0;
691 2 counter--; //软件定时器
692 2 }
693 1 }
694
695 void t1(void) interrupt 3 //T1中断入口,此程序用于扫描数码管
696 {
697 1 if(buffer==0)
698 1
699 1 {
700 2 P0=disp[disbuf[3]]; //段选
701 2
702 2 P2_6=0;
703 2 P2_7=0;
704 2 }
705 1 if(buffer==1)
706 1
707 1 {
708 2 P0=disp[disbuf[2]];
709 2
710 2 P2_6=0;
711 2 P2_7=1;
712 2 }
713 1 if(buffer==2)
714 1
715 1 {
716 2 P0=disp[disbuf[1]];
717 2
718 2 P2_6=1;
719 2 P2_7=0;
720 2
721 2 }
722 1 if(buffer==3)
723 1
724 1 {
725 2 P0=disp[disbuf[0]];
726 2
727 2 P2_6=1;
728 2 P2_7=1;
729 2 }
730 1
731 1 buffer++; //扫描标志
732 1 if(buffer==4) //完成一个扫描周期
733 1 buffer=0; //开始新的扫描周期
734 1
735 1 TH1=65036>>8; //定时器重装初值
736 1 TL1=65036;
737 1 }
C51 COMPILER V7.06 MAIN 12/27/2008 11:09:59 PAGE 13
738
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1757 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -