📄 oscilloscope1.lst
字号:
552 1 //以下为测量幅度
553 1 /*
554 1 temp=Wave_Amplitude_Add;
555 1 Wave_Amplitude=temp;
556 1 lcd_write_sentence(3,0,"当前幅度: ");
557 1 lcd_write_command(0x99);
558 1 temp=Wave_Amplitude/100;
559 1 lcd_write_data(0x30+temp);
560 1 Wave_Amplitude%=100;
561 1 temp=Wave_Amplitude/10;
562 1 lcd_write_data(0x30+temp);
563 1 Wave_Amplitude%=10;
564 1 temp=Wave_Amplitude;
565 1 lcd_write_data(0x30+temp);
566 1 //Wave_Frequence%=10000;
567 1 lcd_write_sentence(4,4," V");
568 1 */
569 1 }
570 //***************************************************************************************
571 void enter_down()
572 {
573 1 unint temp;
574 1 Enter=!Enter;
575 1 //Led_On=0;
576 1 Glint_Flag=!Glint_Flag;
577 1 Shift_Flag=0;
578 1 switch(Key_Flag)
579 1 {
580 2 case 1:
581 2 X_Frequence=distab[4]*10000+distab[3]*1000+distab[2]*100+distab[1]*10+distab[0];
582 2 //Frequence*=5;
583 2 temp=_iror_(X_Frequence,8);
584 2 X_Freq_High=temp;
585 2 temp=X_Frequence%256;
586 2 X_Freq_Low=temp;
587 2 Enter=0;
588 2 lcd_clear();
589 2 lcd_write_sentence(1,0,"频率设置成功!");
590 2 lcd_write_sentence(2,1,"当前频率:");
591 2 lcd_write_command(0x89);
592 2 lcd_write_data(0x30+distab[4]);
593 2 lcd_write_data(0x30+distab[3]);
594 2 lcd_write_data(0x30+distab[2]);
595 2 lcd_write_data(0x30+distab[1]);
596 2 lcd_write_data(0x30+distab[0]);
597 2 lcd_write_sentence(3,4,"HZ");
598 2 break;
599 2 case 2:
600 2 Enter=0;
601 2 lcd_clear();
602 2 X_Pos=distab[2]*100+distab[1]*10+distab[0];
603 2 if(X_Pos>200)
604 2 {
605 3 X_Pos=0;
606 3 lcd_write_sentence(2,0,"输入范围太大!");
607 3 }
608 2 else
609 2 {
610 3 X_Move=X_Pos;
611 3 lcd_write_sentence(1,0,"水平移相成功");
612 3 lcd_write_sentence(2,1,"当前水平偏移:");
613 3 lcd_write_command(0x8a);
C51 COMPILER V7.06 OSCILLOSCOPE1 08/17/2005 17:00:43 PAGE 11
614 3 lcd_write_data(0x30+distab[2]);
615 3 lcd_write_data(0x30+distab[1]);
616 3 lcd_write_data(0x30+distab[0]);
617 3 }
618 2 break;
619 2 case 3:
620 2 Enter=0;
621 2 lcd_clear();
622 2 Trigger_V=distab[2]*100+distab[1]*10+distab[0];
623 2 if(Trigger_V>500)
624 2 {
625 3 lcd_write_sentence(1,0,"电平输入太大!");
626 3 lcd_write_sentence(2,0,"请重新输入!");
627 3 Trigger_V=0;
628 3 }
629 2 else
630 2 {
631 3 Trigger_Voltage=Trigger_V/2;
632 3 lcd_write_sentence(1,0,"触发电平设置成功");
633 3 lcd_write_sentence(2,1,"当前触发电平:");
634 3 lcd_write_command(0x89);
635 3 lcd_write_data(0x30+distab[2]);
636 3 lcd_write_sentence(3,2,".");
637 3 lcd_write_data(0x30+distab[1]);
638 3 lcd_write_data(0x30+distab[0]);
639 3 lcd_write_sentence(3,4,"V");
640 3 }
641 2 break;
642 2 case 6:
643 2 Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
644 2 Vertical_Move_A=Vertical_Pos_A;
645 2 lcd_clear();
646 2 lcd_write_sentence(1,1,"当前垂直偏移A:");
647 2 lcd_write_command(0x91);
648 2 lcd_write_data(0x30+distab[2]);
649 2 lcd_write_data(0x30+distab[1]);
650 2 lcd_write_data(0x30+distab[0]);
651 2 break;
652 2 case 7:
653 2 Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
654 2 Vertical_Move_B=Vertical_Pos_B;
655 2 lcd_clear();
656 2 lcd_write_sentence(1,1,"当前垂直偏移B:");
657 2 lcd_write_command(0x91);
658 2 lcd_write_data(0x30+distab[2]);
659 2 lcd_write_data(0x30+distab[1]);
660 2 lcd_write_data(0x30+distab[0]);
661 2 break;
662 2 default:
663 2 break;
664 2 }
665 1 }
666
667
668 //***************************************************************************************
669 void keyprg(unchar key) //键盘键值执行的程序
670 {
671 1 //unchar i;
672 1 if((key<=9)&Shift_Flag)
673 1 {
674 2 distab[ledcursor]=keynum; //键值送入distab最低位保存
675 2 if(ledcursor>0) //光标移位
C51 COMPILER V7.06 OSCILLOSCOPE1 08/17/2005 17:00:43 PAGE 12
676 2 ledcursor--;
677 2 else
678 2 ledcursor=0;
679 2 display(0); //显示键值
680 2 }
681 1 else
682 1 {
683 2 switch(key)
684 2 {
685 3 case 0x00:
686 3 Set_X_Freq();
687 3 break;
688 3 case 0x01:
689 3 Set_X_Pos();
690 3 break;
691 3 case 0x02:
692 3 Set_Trigger_Voltage();
693 3 break;
694 3 case 0x03:
695 3 Lock_Current_Wave();
696 3 break;
697 3 case 0x04:
698 3 Single_Select();
699 3 break;
700 3 case 0x05:
701 3 Vertical_GainA();
702 3 break;
703 3 case 0x06:
704 3 Vertical_GainB();
705 3 break;
706 3 case 0x07:
707 3 Vertical_MoveA();
708 3 break;
709 3 case 0x08:
710 3 Vertical_MoveB();
711 3 break;
712 3 case 0x09:
713 3 //Select_AB_Channel();
714 3 Input_Select();
715 3 break;
716 3 case 0x0A:
717 3 //Reset();
718 3 //Input_Select();
719 3 Frequence_Measure();
720 3 break;
721 3 case 0x0B: //功能键F2
722 3 Shift_Flag=!Shift_Flag;
723 3 break;
724 3 case 0x0C: //KeyprgBack();
725 3 if(ledcursor<7) //光标移位
726 3 ledcursor++;
727 3 else
728 3 ledcursor=0;
729 3 display(0); //显示键值
730 3 break;
731 3 case 0x0D: //加
732 3 if(distab[ledcursor]<0x09)
733 3 distab[ledcursor]++;
734 3 else
735 3 distab[ledcursor]=0;
736 3 display(0); //显示键值
737 3 break;
C51 COMPILER V7.06 OSCILLOSCOPE1 08/17/2005 17:00:43 PAGE 13
738 3 case 0x0E: //减
739 3 if(distab[ledcursor]>0)
740 3 distab[ledcursor]--;
741 3
742 3 else
743 3 distab[ledcursor]=9;
744 3 display(0); //显示键值
745 3
746 3 break;
747 3 case 0x0F:
748 3 enter_down();
749 3 break;
750 3 default:
751 3 break;
752 3 }
753 2 }
754 1
755 1 }
756 //**************************************************************************************
757 void intt0() interrupt 0
758 {
759 1
760 1 //EX0=0; //关键盘中断,禁止相应其他按键
761 1 keynum=P1; //从p1口读入键盘值
762 1 keynum=keynum&0x0f; //取低四位;
763 1 keyprg(keynum);
764 1 //if(enter) //不是enter键,屏蔽中断
765 1 //EX0=1;
766 1 }
767
768 //**************************************************************************************
769 void Initial8155()
770 {
771 1 CMD8155=0x0f; //PA,PB基本输出方式,PC作为控制信号
772 1 }
773 //**************************************************************************************
774 void clock0_initial()
775 {
776 1 TMOD=0x01;
777 1 TF0=0;
778 1 TH0=00;
779 1 TL0=00;
780 1 TR0=0;
781 1 }
782
783 void clock0_int() interrupt 1
784 {
785 1 TH0=00;
786 1 TL0=00;
787 1 tempflag=!tempflag;
788 1 if(!Single_Flag)
789 1 Single_Auto_Select=tempflag;
790 1 //PA8155=tempflag;
791 1 //PB8155=tempflag;
792 1 }
793
794 //**************************************************************************************
795 void main()
796 {
797 1
798 1 unchar j=0;
799 1 EX0=1;
C51 COMPILER V7.06 OSCILLOSCOPE1 08/17/2005 17:00:43 PAGE 14
800 1 ET0=1;
801 1 EA=1;
802 1 lcd_init();
803 1 Initial8155();
804 1 display(0);
805 1 lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫-- 简易示波器");
806 1 //lcd_clear();
807 1 //lcd_write_sentence(4,4,"南开大学");
808 1 FpgaInitial();
809 1 clock0_initial();
810 1 while(1)
811 1 {
812 2 if(Glint_Flag)
813 2 glint();
814 2 }
815 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2629 ----
CONSTANT SIZE = 590 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 28 14
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 + -