📄 main.lst
字号:
460 1 //freqH=((freq&0xff00)>>8);//取出频率控制字高8位
461 1 //freqL=(freq&0x00ff);//取出频率控制字低8位
462 1 //cycleH=((cycle_count&0xff00)>>8);
463 1 //cycleL=(cycle_count&0x00ff);
464 1
465 1 // W_FPGA=0
466 1 *A_FPGA=freqL;
467 1 // W_FPGA=1
468 1 *(A_FPGA+1)=freqH;
469 1 *(A_FPGA+2)=cycleL;
470 1 *(A_FPGA+3)=cycleH;
471 1 *(A_FPGA+4)=0;
472 1 *(A_FPGA+5)=0;
473 1
474 1 }
475
476
477
478 //按ok键响应函数
479 void action(uchar bo_type)
480 {
481 1 if(bo_type==3)
482 1 create_combin(mag,freq,a,b,c);
483 1 else
484 1 create_base(mag,freq,bo_type);
485 1
486 1 }
487
488 ///////////////////////////////////////////////////////////////////////////////
489
490 //读取键盘数据,返回当前被按下的键号
491 uchar keyin(void)
492 {
493 1 uchar i;
494 1 COM=0x40;
495 1 i=DAT;
496 1 i=i&0x7f; //取键盘数据低7位
497 1 return(i);
498 1 }
499
500
501 ////////////////////////////////////////////////////////////////////////////////主函数
502 void main(void)
503 {
504 1
505 1 uchar i,j,k;
506 1
507 1
508 1 //////////////////////////////////////////////////////////////////////////////
509 1 //初始化单片机
C51 COMPILER V7.20 MAIN 08/24/2007 11:29:03 PAGE 10
510 1 AUXR = 0x02;/*STC单片机关内部RAM和开ALE*/
511 1 for(i=0;i<5;i++)
512 1 {
513 2 for(j=0;j<100;j++)
514 2 {
515 3 for(k=0;k<100;k++);
516 3 }
517 2 }
518 1
519 1 //////////////////////////////////////////////////////////////////////////////
520 1 //初始化8279
521 1 COM=0xd1;//1101 0001b 清除所有显示
522 1 do{ACC=COM;}
523 1 while(clflag==1); //清除起来比较慢,所以一条指令执行的时间不足以完成所有清除,故需等待
524 1 COM=0x01;COM=0x02;
525 1 IE=0x81;TCON=0x01;
526 1 //////////////////////////////////////////////////////////////////////////////
527 1 for(i=0;i<8;i++)
528 1 {
529 2 COM=0X80+i;
530 2 DAT=seg[0];
531 2 }
532 1 //大循环
533 1 while(1)
534 1 {
535 2 while(int_flag==0) /*等待中断*/
536 2 {
537 3 ;//后台程序
538 3 }
539 2
540 2 int_flag=0;
541 2 if(ok==1) {ok=0;EA=0;action(state0);EA=1;}
542 2 //if(ok==1) {ok=0;action(state0);}
543 2
544 2 //根据键值调用键盘响应函数
545 2 switch(state0)
546 2 {
547 3 case 0:switch(state1)
548 3 {
549 4 case 0:switch(state2)
550 4 {
551 5 case 0:freq++;display();delay();break;
552 5 case 1:freq--;display();delay();break;
553 5 case 2:freq+=100;display();delay();break;
554 5 case 3:freq-=100;display();delay();break;
555 5 case 4:break;
556 5 }break;
557 4
558 4 case 1:switch(state2)
559 4 {
560 5 case 0:mag+=5;display();delay();break;
561 5 case 1:mag-=5;display();delay();break;
562 5 case 2:break;
563 5 }break;
564 4 case 2:break;
565 4 }
566 3 break;
567 3 case 1:switch(state1)
568 3 {
569 4 case 0:switch(state2)
570 4 {
571 5 case 0:freq++;display();delay();break;
C51 COMPILER V7.20 MAIN 08/24/2007 11:29:03 PAGE 11
572 5 case 1:freq--;display();delay();break;
573 5 case 2:freq+=100;display();delay();break;
574 5 case 3:freq-=100;display();delay();break;
575 5 case 4:break;
576 5 }break;
577 4 case 1:switch(state2)
578 4 {
579 5 case 0:mag+=5;display();delay();break;
580 5 case 1:mag-=5;display();delay();break;
581 5 case 2:break;
582 5 case 3:break;
583 5 case 4:break;
584 5 }break;
585 4 }
586 3 break;
587 3 case 2:switch(state1)
588 3 {
589 4 case 0:switch(state2)
590 4 {
591 5 case 0:freq++;display();delay();break;
592 5 case 1:freq--;display();delay();break;
593 5 case 2:freq+=100;display();delay();break;
594 5 case 3:freq-=100;display();delay();break;
595 5 case 4:break;
596 5 }break;
597 4 case 1:switch(state2)
598 4 {
599 5 case 0:mag+=5;display();delay();break;
600 5 case 1:mag-=5;display();delay();break;
601 5 case 2:break;
602 5 case 3:break;
603 5 case 4:break;
604 5 }break;
605 4 }
606 3 break;
607 3 case 3:switch(state1)
608 3 {
609 4 case 0:switch(state2)
610 4 {
611 5 case 0:freq++;display();delay();break;
612 5 case 1:freq--;display();delay();break;
613 5 case 2:freq+=100;display();delay();break;
614 5 case 3:freq-=100;display();delay();break;
615 5 case 4:break;
616 5 }break;
617 4 case 1:switch(state2)
618 4 {
619 5 case 0:mag+=5;display();delay();break;
620 5 case 1:mag-=5;display();delay();break;
621 5 case 2:break;
622 5 case 3:break;
623 5 case 4:break;
624 5 }break;
625 4 }
626 3 break;
627 3 case 4:{EA=0;read_bo();EA=1;}
628 3 default:break;
629 3 }
630 2 state2=4;
631 2 }
632 1 }
633
C51 COMPILER V7.20 MAIN 08/24/2007 11:29:03 PAGE 12
634
635 //INT0的中断服务函数
636 //INT0由8279在键盘按下时发出
637 //注意关键字interrupt
638 void int_int0(void) interrupt 0 using 0
639 {
640 1 uchar i;
641 1
642 1 //设置标志,告诉主循环中断发生了
643 1 int_flag=1;
644 1 //读取键值
645 1 key_value=keyin();
646 1 for(i=0;i<=3;i++)
647 1 if(key_value==tb0[i]) state0=i;
648 1 for(i=0;i<=2;i++)
649 1 if(key_value==tb1[i]) state1=i;
650 1 for(i=0;i<=3;i++)
651 1 if(key_value==tb2[i]) state2=i;
652 1 for(i=0;i<=9;i++)
653 1 if(key_value==xishu[i])
654 1 { value=i;
655 2 if(state0==3) {count++;
656 3 if(count==1) {a=value;COM=0X80;DAT=seg[a];}
657 3 if(count==2) {b=value;COM=0X81;DAT=seg[b];}
658 3 if(count==3) {c=value;count=0;COM=0X82;DAT=seg[c];}
659 3 }
660 2
661 2 switch(state0)
662 2 {
663 3 case 0:if(state1==2) {count_cycle++;
664 4 if(count_cycle==1) {baiwei=value;COM=0X80;DAT=seg[baiwei];cycle_cou
-nt=baiwei*100;}
665 4 if(count_cycle==2) {shiwei=value;COM=0X81;DAT=seg[shiwei];cycle_count+=sh
-iwei*10;}
666 4 if(count_cycle==3) {gewei=value;count_cycle=0;COM=0X82;DAT=seg[gewei];cyc
-le_count+=gewei;}}
667 3 break;
668 3 case 1:if(state1==2) {count_cycle++;
669 4 if(count_cycle==1) {baiwei=value;COM=0X80;DAT=seg[baiwei];cycle_cou
-nt=baiwei*100;}
670 4 if(count_cycle==2) {shiwei=value;COM=0X81;DAT=seg[shiwei];cycle_count+=sh
-iwei*10;}
671 4 if(count_cycle==3) {gewei=value;count_cycle=0;COM=0X82;DAT=seg[gewei];cyc
-le_count+=gewei;}}
672 3 break;
673 3 case 2:if(state1==2) {count_cycle++;
674 4 if(count_cycle==1) {baiwei=value;COM=0X80;DAT=seg[baiwei];cycle_cou
-nt=baiwei*100;}
675 4 if(count_cycle==2) {shiwei=value;COM=0X81;DAT=seg[shiwei];cycle_count+=sh
-iwei*10;}
676 4 if(count_cycle==3) {gewei=value;count_cycle=0;COM=0X82;DAT=seg[gewei];cyc
-le_count+=gewei;}}
677 3 break;
678 3 case 3:if(state1==2) {count_cycle++;
679 4 if(count_cycle==1) {baiwei=value;COM=0X80;DAT=seg[baiwei];cycle_cou
-nt=baiwei*100;}
680 4 if(count_cycle==2) {shiwei=value;COM=0X81;DAT=seg[shiwei];cycle_count+=sh
-iwei*10;}
681 4 if(count_cycle==3) {gewei=value;count_cycle=0;COM=0X82;DAT=seg[gewei];cyc
-le_count+=gewei;}}
682 3 break;
683 3 }
C51 COMPILER V7.20 MAIN 08/24/2007 11:29:03 PAGE 13
684 2 }
685 1 if(key_value==0x18) ok=1;
686 1
687 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2477 ----
CONSTANT SIZE = 1568 ----
XDATA SIZE = 511 ----
PDATA SIZE = ---- ----
DATA SIZE = 18 53
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -