⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ss_sweep.lst

📁 DDS-320-func: 在采用 320x240 屏的设计实验箱上运行
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -