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

📄 adda.lst

📁 C8051F120与串口、并口、D12、USB、LCD应用
💻 LST
📖 第 1 页 / 共 3 页
字号:
 430   1              CS=0;
 431   1              Locatexy(0,17);                                         //定位在显示区(16~176行)
 432   1              CmdWrite(CSRDIR_RIGHT);
 433   1              CmdWrite(MWRITE);                                       //发写命令
 434   1              for(row=16;row<=176;row++)                      //对16~176行绘图
 435   1              {
 436   2                      unsigned char value=176-row;    //第row行所对应的ADC值
 437   2                      for(col=0;col<40;col++)                 //每行40个字节
 438   2                      {
 439   3                              unsigned char Data=0;
 440   3                              unsigned char M=0x80;
 441   3                              if(col==0 || col==39)           //第一列和最后一列不使用
 442   3                              {
 443   4                                      DataWrite(Data);
 444   4                                      continue;
 445   4                              }
 446   3                              for(k=0;k<8;k++)                        //分析每个字节应写入的数值
 447   3                              {
 448   4                                      if(ADCdata[(col-1)*8+k]==value)
 449   4                                      Data|=M;
 450   4                                      else
 451   4                                      {
 452   5                                              char m=0;
 453   5                                              if(ADCdata[(col-1)*8+k]<value)  //value>当前值 m++
 454   5                                              m++;
 455   5                                              if(ADCdata[(col-1)*8+k+1]>value)//value<下一值 m--
 456   5                                              m--;
 457   5                                              if(m==0)                //m=0说明value在两值之间,该位应该置一
 458   5                                              Data|=M;
 459   5                                      }
 460   4                                      M=M>>1;
 461   4                              }
 462   3                              DataWrite(Data);
 463   3                      }
 464   2              }
 465   1              CS=1;
 466   1      }
 467          
 468          void ADDA()
 469          {
 470   1              ADDASetUp();                                            //设置
 471   1              Clear(0,240);
 472   1              DrawScale();
 473   1              //界面
 474   1          Udprintf(0,192," 16KHz       0mv     钬                 ");
 475   1              putufig(10,192,TriggerValue,4,1,' ');
 476   1              dprintf(0,208,"采样频率  触发电平  触发            退出");
 477   1              dprintf(0,224,"柽2 刍2    芗  兦   模式            实验");
 478   1              if(ADDAParaList[0]==0)
 479   1              ;//显示正弦波
 480   1              if(ADDAParaList[0]==1)
 481   1              ;//显示梯形波
 482   1              ADC0_Init();                                            //AD初始化
 483   1              AD_T3_INIT();                                           //T3初始化,驱动AD
 484   1              EIE2|=0x02;                                                     //开ADC0中断            
 485   1              while(1)
 486   1              {
 487   2                      if(CheckKeyF==1)                                //键盘检测
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 9   

 488   2                      {
 489   3                              CheckKey();
 490   3                              CheckKeyF=0;
 491   3                      }
 492   2      
 493   2                      if(Key[0].pressed==1)                           //检测到*2键
 494   2                      {
 495   3                              if(ADDAParaList[6]<64)
 496   3                              {       
 497   4                                      unsigned int T3Value;
 498   4                                      ADDAParaList[6]*=2;
 499   4                                      T3Value=0xFFFF-(unsigned int)22118/ADDAParaList[6];
 500   4                                      SFRPAGE = TMR3_PAGE;
 501   4                                      TR3=0;
 502   4                                      TMR3L=T3Value;
 503   4                              TMR3H=T3Value>>8;
 504   4                              RCAP3L=TMR3L;
 505   4                              RCAP3H=TMR3H;
 506   4                                      TR3=1;
 507   4                                      SFRPAGE = CONFIG_PAGE;  
 508   4                                      putufig(1,192,ADDAParaList[6],2,1,' ');
 509   4                              }
 510   3                              Key[0].pressed=0;
 511   3                      }
 512   2      
 513   2                      if(Key[1].pressed==1)                           //检测到/2键
 514   2                      {
 515   3                              if(ADDAParaList[6]>2)
 516   3                              {
 517   4                                      unsigned int T3Value;
 518   4                                      ADDAParaList[6]/=2;
 519   4                                      T3Value=0xFFFF-(unsigned int)22118/ADDAParaList[6];
 520   4                                      SFRPAGE = TMR3_PAGE;
 521   4                                      TR3=0;
 522   4                                      TMR3L=T3Value;
 523   4                              TMR3H=T3Value>>8;
 524   4                              RCAP3L=TMR3L;
 525   4                              RCAP3H=TMR3H;
 526   4                                      TR3=1;  
 527   4                                      SFRPAGE = CONFIG_PAGE;
 528   4                                      putufig(1,192,ADDAParaList[6],2,1,' ');
 529   4                              }
 530   3                              Key[1].pressed=0;
 531   3                      }
 532   2      
 533   2                      if(Key[2].pressed==1)                           //提高触发电平
 534   2                      {
 535   3                              Key[2].pressed=0;
 536   3                              if(TriggerValue<3000)                   //触发值0~3000mv
 537   3                              {
 538   4                                      TriggerValue+=100;                      //步长100mv
 539   4                                      //调整TriggerValue对应的ADC值 (TriggerValue/3000mv*(1.5v/2.4v*4096))
 540   4                                      ADH_TriggerValue=((unsigned long)TriggerValue*64/75)>>4;
 541   4                                      ADL_TriggerValue=((unsigned long)TriggerValue*64/75)<<4;
 542   4                                      Clear(240+14,240+176);
 543   4                                      DrawScale();
 544   4                                      putufig(10,192,TriggerValue,4,1,' ');
 545   4                              }
 546   3                      }
 547   2      
 548   2                      if(Key[3].pressed==1)                           //降低触发电平
 549   2                      {
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 10  

 550   3                              Key[3].pressed=0;
 551   3                              if(TriggerValue>0)
 552   3                              {                       
 553   4                                      TriggerValue-=100;
 554   4                                      ADH_TriggerValue=((unsigned long)TriggerValue*64/75)>>4;
 555   4                                      ADL_TriggerValue=((unsigned long)TriggerValue*64/75)<<4;                        
 556   4                                      Clear(240+14,240+176);
 557   4                                      DrawScale();
 558   4                                      putufig(10,192,TriggerValue,4,1,' ');
 559   4                              }
 560   3                      }
 561   2      
 562   2                      if(Key[4].pressed==1)                           //改变触发模式
 563   2                      {
 564   3                              TriggerMode=(++TriggerMode)%3;
 565   3                              if(TriggerMode==0)
 566   3                              Udprintf(21,192,"牲");
 567   3                              if(TriggerMode==1)
 568   3                              Udprintf(21,192,"豇");
 569   3                              if(TriggerMode==2)
 570   3                              Udprintf(21,192,"钬");
 571   3                              Key[4].pressed=0;
 572   3                      }
 573   2      
 574   2                      if(ready==1)
 575   2                      {
 576   3                              DrawGraph();
 577   3                              ready=0;
 578   3                              ADcounter=0;
 579   3                      }
 580   2              
 581   2                      if(Key[7].pressed==1)           //检测到退出键
 582   2                      {
 583   3                              char SFRPAGE_SAVE;
 584   3                              SFRPAGE_SAVE=SFRPAGE;
 585   3                              SFRPAGE = DAC0_PAGE;            //关DAC
 586   3                              DAC0CN&=0x7f;
 587   3                              SFRPAGE = ADC0_PAGE;            //关DAC
 588   3                              ADC0CN&=0x7f;                   
 589   3                              SFRPAGE = TMR3_PAGE;            //关T3                                            
 590   3                              TR3=0;
 591   3                              SFRPAGE = TMR4_PAGE;            //关T4                                            
 592   3                              TR4=0;                                  
 593   3                              SFRPAGE=SFRPAGE_SAVE;
 594   3                              ClearKey();
 595   3                              Clear(0,480);
 596   3                              return;
 597   3                      }
 598   2              }
 599   1      }
 600          
 601          /*
 602                          if(ready==1)
 603                          {
 604                                  int i,j;
 605                                  int p=700;
 606                                  Clear(16,176);
 607                                  for(i=0;i<700;i++)                              //每次选择零点为显示起始点,找不到零点则显示后300个点
 608                                  {
 609                                          if(ADCdata[i]==0 && ADCdata[i+1]>0 && ADCdata[i+2]>0)                   
 610                                          {
 611                                                  p=i;
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 11  

 612                                                  break;  
 613                                          }               
 614                                  }
 615                                  for(i=1;i<300;i++)
 616                                  {
 617                                          if(ADCdata[p+i]==ADCdata[p+i-1])
 618                                          Point(10+i,176-ADCdata[p+i]);
 619                                          if(ADCdata[p+i]<ADCdata[p+i-1])
 620                                          {
 621                                                  for(j=ADCdata[p+i-1]-1;j>=ADCdata[p+i];j--)
 622                                                  Point(10+i,176-j);
 623                                          }
 624                                          if(ADCdata[p+i]>ADCdata[p+i-1])
 625                                          {
 626                                                  for(j=ADCdata[p+i-1]+1;j<=ADCdata[p+i];j++)
 627                                                  Point(10+i,176-j);
 628                                          }
 629                                  }
 630                                  ready=0;
 631                                  ADcounter=0;
 632                          }
 633          
 634                          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   4494    ----
   CONSTANT SIZE    =    503    ----
   XDATA SIZE       =   1017      37
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -