📄 oscilloscope3.lst
字号:
494 2 temp=_iror_(X_Frequence,8);
495 2 X_Freq_High=temp;
496 2 temp=X_Frequence%256;
497 2 X_Freq_Low=temp;
498 2 ENTER=0;
499 2 lcd_clear();
500 2 lcd_write_sentence(1,0,"频率设置成功!");
501 2 lcd_write_sentence(2,1,"当前频率:");
502 2 lcd_write_command(0x89);
503 2 lcd_write_data(0x30+distab[4]);
504 2 lcd_write_data(0x30+distab[3]);
505 2 lcd_write_data(0x30+distab[2]);
506 2 lcd_write_data(0x30+distab[1]);
507 2 lcd_write_data(0x30+distab[0]);
508 2 lcd_write_sentence(3,4,"HZ");
509 2 break;
510 2 case 2:
511 2 ENTER=0;
512 2 lcd_clear();
513 2 X_Pos=distab[2]*100+distab[1]*10+distab[0];
514 2 if(X_Pos>200)
515 2 {
516 3 X_Pos=0;
517 3 lcd_write_sentence(2,0,"输入范围太大!");
518 3 }
519 2 else
520 2 {
521 3 X_Move=X_Pos;
522 3 lcd_write_sentence(1,0,"水平移相成功");
523 3 lcd_write_sentence(2,1,"当前水平偏移:");
524 3 lcd_write_command(0x8a);
525 3 lcd_write_data(0x30+distab[2]);
526 3 lcd_write_data(0x30+distab[1]);
527 3 lcd_write_data(0x30+distab[0]);
528 3 }
529 2 break;
530 2 case 3:
531 2 ENTER=0;
532 2 lcd_clear();
533 2 Trigger_V=distab[2]*100+distab[1]*10+distab[0];
534 2 if(Trigger_V>500)
535 2 {
536 3 lcd_write_sentence(1,0,"电平输入太大!");
537 3 lcd_write_sentence(2,0,"请重新输入!");
538 3 Trigger_V=0;
539 3 }
540 2 else
541 2 {
542 3 Trigger_Voltage=Trigger_V/2;
543 3 lcd_write_sentence(1,0,"触发电平设置成功");
544 3 lcd_write_sentence(2,1,"当前触发电平:");
545 3 lcd_write_command(0x89);
546 3 lcd_write_data(0x30+distab[2]);
547 3 lcd_write_sentence(3,2,".");
548 3 lcd_write_data(0x30+distab[1]);
549 3 lcd_write_data(0x30+distab[0]);
550 3 lcd_write_sentence(3,4,"V");
551 3 }
C51 COMPILER V7.06 OSCILLOSCOPE3 08/19/2005 09:01:53 PAGE 10
552 2 break;
553 2 case 6:
554 2 Vertical_Pos_A=distab[2]*100+distab[1]*10+distab[0];
555 2 Vertical_Move_A=Vertical_Pos_A;
556 2 lcd_clear();
557 2 lcd_write_sentence(1,1,"当前垂直偏移A:");
558 2 lcd_write_command(0x91);
559 2 lcd_write_data(0x30+distab[2]);
560 2 lcd_write_data(0x30+distab[1]);
561 2 lcd_write_data(0x30+distab[0]);
562 2 break;
563 2 case 7:
564 2 Vertical_Pos_B=distab[2]*100+distab[1]*10+distab[0];
565 2 Vertical_Move_B=Vertical_Pos_B;
566 2 lcd_clear();
567 2 lcd_write_sentence(1,1,"当前垂直偏移B:");
568 2 lcd_write_command(0x91);
569 2 lcd_write_data(0x30+distab[2]);
570 2 lcd_write_data(0x30+distab[1]);
571 2 lcd_write_data(0x30+distab[0]);
572 2 break;
573 2 default:
574 2 break;
575 2 }
576 1 }
577
578
579 //***************************************************************************************
580 void keyprg(unchar key) //键盘键值执行的程序
581 {
582 1 //unchar i;
583 1 if((key<=9)&Shift_Flag)
584 1 {
585 2 distab[LED_CURSOR]=KEYNUM; //键值送入distab最低位保存
586 2 if(LED_CURSOR>0) //光标移位
587 2 LED_CURSOR--;
588 2 else
589 2 LED_CURSOR=0;
590 2 display(0); //显示键值
591 2 }
592 1 else
593 1 {
594 2 switch(key)
595 2 {
596 3 case 0x00:
597 3 Set_X_Freq();
598 3 break;
599 3 case 0x01:
600 3 Set_X_Pos();
601 3 break;
602 3 case 0x02:
603 3 Set_Trigger_Voltage();
604 3 break;
605 3 case 0x03:
606 3 Lock_Current_Wave();
607 3 break;
608 3 case 0x04:
609 3 Single_Select();
610 3 break;
611 3 case 0x05:
612 3 Vertical_GainA();
613 3 break;
C51 COMPILER V7.06 OSCILLOSCOPE3 08/19/2005 09:01:53 PAGE 11
614 3 case 0x06:
615 3 //Vertical_GainB();
616 3 Frequence_Measure();
617 3 break;
618 3 case 0x07:
619 3 Vertical_MoveA();
620 3 break;
621 3 case 0x08:
622 3 Vertical_MoveB();
623 3 break;
624 3 case 0x09:
625 3 //Select_AB_Channel();
626 3 Input_Select();
627 3 break;
628 3 case 0x0A:
629 3 //Reset();
630 3 //Input_Select();
631 3 //Frequence_Measure();
632 3 break;
633 3 case 0x0B: //功能键F2
634 3 Shift_Flag=!Shift_Flag;
635 3 break;
636 3 case 0x0C: //KeyprgBack();
637 3 if(LED_CURSOR<7) //光标移位
638 3 LED_CURSOR++;
639 3 else
640 3 LED_CURSOR=0;
641 3 display(0); //显示键值
642 3 break;
643 3 case 0x0D: //加
644 3 if(distab[LED_CURSOR]<0x09)
645 3 distab[LED_CURSOR]++;
646 3 else
647 3 distab[LED_CURSOR]=0;
648 3 display(0); //显示键值
649 3 break;
650 3 case 0x0E: //减
651 3 if(distab[LED_CURSOR]>0)
652 3 distab[LED_CURSOR]--;
653 3
654 3 else
655 3 distab[LED_CURSOR]=9;
656 3 display(0); //显示键值
657 3
658 3 break;
659 3 case 0x0F:
660 3 ENTER_down();
661 3 break;
662 3 default:
663 3 break;
664 3 }
665 2 }
666 1
667 1 }
668 //**************************************************************************************
669 void intt0() interrupt 0 //键盘中断
670 {
671 1
672 1 //EX0=0; //关键盘中断,禁止相应其他按键
673 1 KEYNUM=P1; //从p1口读入键盘值
674 1 KEYNUM=KEYNUM&0x0f; //取低四位;
675 1 keyprg(KEYNUM);
C51 COMPILER V7.06 OSCILLOSCOPE3 08/19/2005 09:01:53 PAGE 12
676 1 //if(ENTER) //不是ENTER键,屏蔽中断
677 1 //EX0=1;
678 1 }
679
680 //**************************************************************************************
681 void Initial8155() //8155初始化程序
682 {
683 1 CMD8155=0x0f; //PA,PB基本输出方式,PC作为控制信号
684 1 }
685 //**************************************************************************************
686 void clock0_initial() //定时器0初始化
687 {
688 1 TMOD=0x01;
689 1 TF0=0;
690 1 TH0=00;
691 1 TL0=00;
692 1 TR0=1;
693 1 }
694
695 void clock0_int() interrupt 1 //定时器0中断,向FPGA送入连续触发脉冲
696 {
697 1 TH0=00;
698 1 TL0=00;
699 1 tempflag=!tempflag;
700 1 //if(Single_Flag)
701 1 Single_Auto_Select=tempflag;
702 1 //PA8155=tempflag;
703 1 //PB8155=tempflag;
704 1 }
705
706 //**************************************************************************************
707 void main()
708 {
709 1 //uint i;
710 1 //while(i--);
711 1 EX0=1;
712 1 ET0=1;
713 1 EA=1;
714 1 PX0=1;
715 1 lcd_init();
716 1 Initial8155();
717 1 Led_On=1;
718 1 display(0);
719 1 lcd_write_passage("南开大学信科院电信系:史永杰,余建伟,岳文赫-- 简易示波器");
720 1 //lcd_clear();
721 1 //lcd_write_sentence(4,4,"南开大学");
722 1 FpgaInitial();
723 1 clock0_initial();
724 1 while(1)
725 1 {
726 2 if(Glint_Flag)
727 2 glint();
728 2 }
729 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2580 ----
CONSTANT SIZE = 608 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 27 9
C51 COMPILER V7.06 OSCILLOSCOPE3 08/19/2005 09:01:53 PAGE 13
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 + -