📄 oscilloscope2.lst
字号:
522 1 }
523 //***************************************************************************************
524 void enter_down()
525 {
526 1 unint temp;
527 1 Enter=!Enter;
528 1 //Led_On=0;
529 1 Glint_Flag=!Glint_Flag;
530 1 Shift_Flag=0;
531 1 switch(Key_Flag)
532 1 {
533 2 case 1:
534 2 X_Frequence=distab[4]*10000+distab[3]*1000+distab[2]*100+distab[1]*10+distab[0];
535 2 //Frequence*=5;
536 2 temp=_iror_(X_Frequence,8);
537 2 X_Freq_High=temp;
538 2 temp=X_Frequence%256;
539 2 X_Freq_Low=temp;
540 2 Enter=0;
541 2 lcd_clear();
542 2 lcd_write_sentence(1,0,"频率设置成功!");
543 2 lcd_write_sentence(2,1,"当前频率:");
544 2 lcd_write_command(0x89);
545 2 lcd_write_data(0x30+distab[4]);
546 2 lcd_write_data(0x30+distab[3]);
547 2 lcd_write_data(0x30+distab[2]);
548 2 lcd_write_data(0x30+distab[1]);
549 2 lcd_write_data(0x30+distab[0]);
550 2 lcd_write_sentence(3,4,"HZ");
551 2 break;
C51 COMPILER V7.06 OSCILLOSCOPE2 08/19/2005 08:58:26 PAGE 10
552 2 case 2:
553 2 Enter=0;
554 2 lcd_clear();
555 2 X_Pos=distab[2]*100+distab[1]*10+distab[0];
556 2 if(X_Pos>200)
557 2 {
558 3 X_Pos=0;
559 3 lcd_write_sentence(2,0,"输入范围太大!");
560 3 }
561 2 else
562 2 {
563 3 X_Move=X_Pos;
564 3 lcd_write_sentence(1,0,"水平移相成功");
565 3 lcd_write_sentence(2,1,"当前水平偏移:");
566 3 lcd_write_command(0x8a);
567 3 lcd_write_data(0x30+distab[2]);
568 3 lcd_write_data(0x30+distab[1]);
569 3 lcd_write_data(0x30+distab[0]);
570 3 }
571 2 break;
572 2 case 3:
573 2 Enter=0;
574 2 lcd_clear();
575 2 Trigger_V=distab[2]*100+distab[1]*10+distab[0];
576 2 if(Trigger_V>500)
577 2 {
578 3 lcd_write_sentence(1,0,"电平输入太大!");
579 3 lcd_write_sentence(2,0,"请重新输入!");
580 3 Trigger_V=0;
581 3 }
582 2 else
583 2 {
584 3 Trigger_Voltage=Trigger_V/2;
585 3 lcd_write_sentence(1,0,"触发电平设置成功");
586 3 lcd_write_sentence(2,1,"当前触发电平:");
587 3 lcd_write_command(0x89);
588 3 lcd_write_data(0x30+distab[2]);
589 3 lcd_write_sentence(3,2,".");
590 3 lcd_write_data(0x30+distab[1]);
591 3 lcd_write_data(0x30+distab[0]);
592 3 lcd_write_sentence(3,4,"V");
593 3 }
594 2 break;
595 2 case 6:
596 2 Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
597 2 Vertical_Move_A=Vertical_Pos_A;
598 2 lcd_clear();
599 2 lcd_write_sentence(1,1,"当前垂直偏移A:");
600 2 lcd_write_command(0x91);
601 2 lcd_write_data(0x30+distab[2]);
602 2 lcd_write_data(0x30+distab[1]);
603 2 lcd_write_data(0x30+distab[0]);
604 2 break;
605 2 case 7:
606 2 Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
607 2 Vertical_Move_B=Vertical_Pos_B;
608 2 lcd_clear();
609 2 lcd_write_sentence(1,1,"当前垂直偏移B:");
610 2 lcd_write_command(0x91);
611 2 lcd_write_data(0x30+distab[2]);
612 2 lcd_write_data(0x30+distab[1]);
613 2 lcd_write_data(0x30+distab[0]);
C51 COMPILER V7.06 OSCILLOSCOPE2 08/19/2005 08:58:26 PAGE 11
614 2 break;
615 2 default:
616 2 break;
617 2 }
618 1 }
619
620
621 //***************************************************************************************
622 void keyprg(unchar key) //键盘键值执行的程序
623 {
624 1 //unchar i;
625 1 if((key<=9)&Shift_Flag)
626 1 {
627 2 distab[ledcursor]=keynum; //键值送入distab最低位保存
628 2 if(ledcursor>0) //光标移位
629 2 ledcursor--;
630 2 else
631 2 ledcursor=0;
632 2 display(0); //显示键值
633 2 }
634 1 else
635 1 {
636 2 switch(key)
637 2 {
638 3 case 0x00:
639 3 Set_X_Freq();
640 3 break;
641 3 case 0x01:
642 3 Set_X_Pos();
643 3 break;
644 3 case 0x02:
645 3 Set_Trigger_Voltage();
646 3 break;
647 3 case 0x03:
648 3 Lock_Current_Wave();
649 3 break;
650 3 case 0x04:
651 3 Single_Select();
652 3 break;
653 3 case 0x05:
654 3 Vertical_GainA();
655 3 break;
656 3 case 0x06:
657 3 Vertical_GainB();
658 3 break;
659 3 case 0x07:
660 3 Vertical_MoveA();
661 3 break;
662 3 case 0x08:
663 3 Vertical_MoveB();
664 3 break;
665 3 case 0x09:
666 3 //Select_AB_Channel();
667 3 Input_Select();
668 3 break;
669 3 case 0x0A:
670 3 //Reset();
671 3 //Input_Select();
672 3 Frequence_Measure();
673 3 break;
674 3 case 0x0B: //功能键F2
675 3 Shift_Flag=!Shift_Flag;
C51 COMPILER V7.06 OSCILLOSCOPE2 08/19/2005 08:58:26 PAGE 12
676 3 break;
677 3 case 0x0C: //KeyprgBack();
678 3 if(ledcursor<7) //光标移位
679 3 ledcursor++;
680 3 else
681 3 ledcursor=0;
682 3 display(0); //显示键值
683 3 break;
684 3 case 0x0D: //加
685 3 if(distab[ledcursor]<0x09)
686 3 distab[ledcursor]++;
687 3 else
688 3 distab[ledcursor]=0;
689 3 display(0); //显示键值
690 3 break;
691 3 case 0x0E: //减
692 3 if(distab[ledcursor]>0)
693 3 distab[ledcursor]--;
694 3
695 3 else
696 3 distab[ledcursor]=9;
697 3 display(0); //显示键值
698 3
699 3 break;
700 3 case 0x0F:
701 3 enter_down();
702 3 break;
703 3 default:
704 3 break;
705 3 }
706 2 }
707 1
708 1 }
709 //**************************************************************************************
710 void intt0() interrupt 0
711 {
712 1
713 1 //EX0=0; //关键盘中断,禁止相应其他按键
714 1 keynum=P1; //从p1口读入键盘值
715 1 keynum=keynum&0x0f; //取低四位;
716 1 keyprg(keynum);
717 1 //if(enter) //不是enter键,屏蔽中断
718 1 //EX0=1;
719 1 }
720
721 //**************************************************************************************
722 void Initial8155()
723 {
724 1 CMD8155=0x0f; //PA,PB基本输出方式,PC作为控制信号
725 1 }
726 //**************************************************************************************
727 void clock0_initial()
728 {
729 1 TMOD=0x01;
730 1 TF0=0;
731 1 TH0=00;
732 1 TL0=00;
733 1 TR0=0;
734 1 }
735
736 void clock0_int() interrupt 1
737 {
C51 COMPILER V7.06 OSCILLOSCOPE2 08/19/2005 08:58:26 PAGE 13
738 1 TH0=00;
739 1 TL0=00;
740 1 tempflag=!tempflag;
741 1 if(!Single_Flag)
742 1 Single_Auto_Select=tempflag;
743 1 //PA8155=tempflag;
744 1 //PB8155=tempflag;
745 1 }
746
747 //**************************************************************************************
748 void main()
749 {
750 1 //uint i;
751 1 //while(i--);
752 1 EX0=1;
753 1 ET0=1;
754 1 EA=1;
755 1 lcd_init();
756 1 Initial8155();
757 1 display(0);
758 1
759 1 lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫-- 简易示波器");
760 1 //lcd_clear();
761 1 //lcd_write_sentence(4,4,"南开大学");
762 1 FpgaInitial();
763 1 clock0_initial();
764 1 while(1)
765 1 {
766 2 if(Glint_Flag)
767 2 glint();
768 2 }
769 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2585 ----
CONSTANT SIZE = 612 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 26 9
IDATA SIZE = ---- ----
BIT SIZE = 7 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -