📄 ss_sweep.lst
字号:
420 #define FreqScan 3
421 #define TiaoFu 4
422
423 #define enter_num 0
424 #define wait_key 1
425 #define exit_setup 2
426 #define scan_start 3
427 #define scan_select 4
C51 COMPILER V7.06 SS_SWEEP 02/25/2007 16:14:28 PAGE 8
428
429 unsigned long int Freq,FreqS,step,minF,maxF;
430 unsigned long int Freq_temp;
431 unsigned char MainSM=0;
432 unsigned char SetupSM=0;
433 //unsigned char SetFSM=4;//扫频状态的子状态
434 unsigned long int SetFSM=0;
435 unsigned long int aa=0;//aa是扫频状态中表示子状态的一个参数,记录按下setup的次数
436 unsigned long int bb=1;//bb is freq scan mod select
437
438 void main(void)
439 {
440 1 unsigned char mod,value_index;
441 1 init_port();
442 1 init_interrupt();
443 1 _nop_();
444 1 _nop_();
445 1 _nop_();
446 1 display_init();
447 1
448 1 huanying1();
449 1 huanying1();
450 1 //huanying2();
451 1
452 1 cls();
453 1 while(1){
454 2 switch(MainSM)
455 2 {
456 3 case Start: MainSM=Screen;
457 3 SetPhase(0);
458 3 SetCMD(mod&0x01);
459 3 refresh_led();
460 3 break;
461 3 case Screen:
462 3 Set_Display_Add(128);
463 3 printf("Please press enter key to set Frequency");
464 3 if(key_pressed==ON)
465 3 {
466 4 switch(key_no)
467 4 {
468 5 case key_enter: MainSM=Setup;
469 5 break;
470 5 case key_clr: MainSM=FreqScan;
471 5 FreqS=Freq;
472 5 break;
473 5 case key_mod: SetCMD((++mod)&0x01);
474 5 display_mod((mod)&0x01);
475 5 refresh_led();
476 5 break;
477 5 case key_tiao: MainSM=TiaoFu;
478 5 break;
479 5 default: break;
480 5 }
481 4 key_pressed=OFF;
482 4 }
483 3 break;
484 3 case FreqScan: //扫频输出状态
485 3 Set_Display_Add(384);
486 3 printf("Scan Frequence");
487 3 switch(SetFSM)//进入扫频状态的设置
488 3 {
489 4 case enter_num://扫频初始状态,并LCD显示不同的内容
C51 COMPILER V7.06 SS_SWEEP 02/25/2007 16:14:28 PAGE 9
490 4 if(aa==0){//设置扫频频率的最小值
491 5 cls();
492 5 Set_Display_Add(512);
493 5 printf("min:");
494 5 }
495 4 if(aa==1){//设置扫频频率的最大值
496 5 Set_Display_Add(640);
497 5 printf("max:");
498 5 }
499 4 if(aa==2){//设置扫频频率的步长或者对数增长的系数
500 5 Set_Display_Add(768);
501 5 if(bb==0){
502 6 printf("step:");}
503 5 if(bb==1){
504 6 printf("xishu:");}
505 5 }
506 4 value_index=0;
507 4 SetFSM=wait_key;
508 4 break;
509 4 case wait_key: //处理键盘输入
510 4 if(key_pressed==ON)
511 4 {
512 5 switch(key_no)
513 5 {
514 6 case key0:
515 6 case key1:
516 6 case key2:
517 6 case key3:
518 6 case key4:
519 6 case key5:
520 6 case key6:
521 6 case key7:
522 6 case key8:
523 6 case key9:
524 6 if(value_index<5)
525 6 {
526 7 value[value_index]=key_no;
527 7 value_index++;
528 7 }
529 6 break;
530 6 case key_enter://每按一下setup,aa加1,以进行不同的处理
531 6 aa=(aa+1)%4;
532 6 SetFSM=exit_setup;
533 6 break;
534 6 case key_xuan1://选择模式2,对数模式
535 6 bb=1;
536 6 Set_Display_Add(480);
537 6 printf("mod 2");
538 6 delayMs(100);
539 6 SetFSM=enter_num;
540 6 break;
541 6 case key_xuan2://选择模式1,线性模式
542 6 bb=0;
543 6 Set_Display_Add(480);
544 6 printf("mod 1");
545 6 delayMs(100);
546 6 SetFSM=enter_num;
547 6 break;
548 6
549 6 default: break;
550 6 }
551 5 refresh_led();
C51 COMPILER V7.06 SS_SWEEP 02/25/2007 16:14:28 PAGE 10
552 5 key_pressed=OFF;
553 5 }
554 4 break;
555 4 case exit_setup: Freq_temp=value[0];
556 4 Freq=Freq_temp*10000;
557 4 Freq_temp=value[1];
558 4 Freq=Freq+Freq_temp*1000;
559 4 Freq_temp=value[2];
560 4 Freq=Freq+Freq_temp*100;
561 4 Freq_temp=value[3];
562 4 Freq=Freq+Freq_temp*10;
563 4 Freq=Freq+value[4];
564 4 if(aa==1) {//设置并显示最小频率
565 5 minF=Freq;
566 5 Set_Display_Add(576);
567 5 putchar(value[0]+0x30);
568 5 putchar(value[1]+0x30);
569 5 putchar(value[2]+0x30);
570 5 putchar(value[3]+0x30);
571 5 putchar(value[4]+0x30);
572 5 refresh_led();
573 5 SetFSM=enter_num;
574 5 }
575 4 if(aa==2) {//设置并显示最大频率
576 5 maxF=Freq;
577 5 Set_Display_Add(704);
578 5 putchar(value[0]+0x30);
579 5 putchar(value[1]+0x30);
580 5 putchar(value[2]+0x30);
581 5 putchar(value[3]+0x30);
582 5 putchar(value[4]+0x30);
583 5 refresh_led();
584 5 SetFSM=enter_num;
585 5 }
586 4 if(aa==3) {//设置并显示步长或者系数
587 5 step=Freq;
588 5 Set_Display_Add(832);
589 5 putchar(value[0]+0x30);
590 5 putchar(value[1]+0x30);
591 5 putchar(value[2]+0x30);
592 5 putchar(value[3]+0x30);
593 5 putchar(value[4]+0x30);
594 5 refresh_led();
595 5 SetFSM=scan_start;
596 5 }
597 4 break;
598 4 case scan_start:
599 4 delayMs(10);//延时函数,每隔100ms频率改变一次
600 4 if(FreqS>maxF) FreqS=minF;//设置扫频的最小值
601 4 SetPhase(FreqS&0x7fff); //设置频率,以模32k循环
602 4 if(bb==0){
603 5 FreqS+=step;
604 5 Set_Display_Add(480);
605 5 printf("mod 1");
606 5 } //频率步进step,linear freq change
607 4 if(bb==1){
608 5 FreqS=(FreqS+1)*step/100;
609 5 Set_Display_Add(480);
610 5 printf("mod 2");
611 5 }//频率对数变化
612 4 if(key_pressed==ON){
613 5 switch(key_no){
C51 COMPILER V7.06 SS_SWEEP 02/25/2007 16:14:28 PAGE 11
614 6 case key_enter: MainSM=Setup;//进入扫频设置状态
615 6 cls();
616 6 break;
617 6 case key_mod: SetCMD((++mod)&0x03);//模波形式设置,在本实验中实际上没有用处
618 6 display_mod((mod)&0x03);
619 6 refresh_led();
620 6 break;
621 6
622 6 default: SetFSM=scan_start;
623 6 }
624 5 key_pressed=OFF;
625 5 }
626 4 break;
627 4 }
628 3 break;
629 3 ////////////////////////////////////////////////////////////////////////
630 3 case Setup:
631 3 // cls();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -