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

📄 adda.lst

📁 C8051F120与串口、并口、D12、USB、LCD应用
💻 LST
📖 第 1 页 / 共 3 页
字号:
 213   3                      Key[2].pressed=0;
 214   3                              switch(ItemSel)
 215   3                              {
 216   4                              case 1:
 217   4                                      if(ADDAParaList[0]==0)
 218   4                                      ADDAParaList[0]=2;
 219   4                                      else
 220   4                                      ADDAParaList[0]--;
 221   4                                      break;
 222   4                              case 3:
 223   4                                      if(ADDAParaList[1]>1)
 224   4                                      ADDAParaList[1]--;
 225   4                                      break;
 226   4                              case 4:
 227   4                                      if(ADDAParaList[2]>10)
 228   4                                      ADDAParaList[2]--;
 229   4                                      break;
 230   4                              case 5:
 231   4                                      if(ADDAParaList[3]>0)
 232   4                                      ADDAParaList[3]-=10;
 233   4                                      break;
 234   4                              case 6:
 235   4                                      if(ADDAParaList[4]>0)
 236   4                                      ADDAParaList[4]-=10;
 237   4                                      break;
 238   4                              case 7:
 239   4                                      if(ADDAParaList[5]>0)
 240   4                                      ADDAParaList[5]-=10;
 241   4                                      break;
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 5   

 242   4                              default:
 243   4                                      break;
 244   4                              }
 245   3                              DASetUp_OnPaint();
 246   3                              MovHand=1;
 247   3                      }
 248   2      
 249   2                      if(Key[3].pressed==1)       //检测到+键
 250   2                      {
 251   3                      Key[3].pressed=0;
 252   3                              switch(ItemSel)
 253   3                              {
 254   4                              case 1:
 255   4                                      if(ADDAParaList[0]==2)
 256   4                                      ADDAParaList[0]=0;
 257   4                                      else
 258   4                                      ADDAParaList[0]++;
 259   4                                      break;
 260   4                              case 3:
 261   4                                      if(ADDAParaList[1]<100)
 262   4                                      ADDAParaList[1]++;
 263   4                                      break;
 264   4                              case 4:
 265   4                                      if(ADDAParaList[2]<24)
 266   4                                      ADDAParaList[2]++;
 267   4                                      break;
 268   4                              case 5:
 269   4                                      if(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5]<=90)
 270   4                                      ADDAParaList[3]+=10;
 271   4                                      break;
 272   4                              case 6:
 273   4                                      if(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5]<=90)
 274   4                                      ADDAParaList[4]+=10;
 275   4                                      break;
 276   4                              case 7:
 277   4                                      if(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5]<=90)
 278   4                                      ADDAParaList[5]+=10;
 279   4                                      break;
 280   4                              default:
 281   4                                      break;
 282   4                              }
 283   3                              DASetUp_OnPaint();
 284   3                              MovHand=1;
 285   3                      }
 286   2      
 287   2                      if(Key[7].pressed==1)       //检测到确定键,向DACData中填充数据
 288   2                      {
 289   3                              ClearKey();
 290   3                              Clear(0,240);
 291   3                              if(ADDAParaList[0]==2)  //选择外部信号源无需DAC
 292   3                              return ;
 293   3                              DA_T4_INIT();                   //T3初始化(根据选择的频率)
 294   3                              DAC0_Init();                    //DAC0初始化
 295   3                              if(ADDAParaList[0]==0)  //选择正弦波
 296   3                              {
 297   4                                      int i;
 298   4                                      for(i=0;i<64;i++)
 299   4                                      {
 300   5                                              DACdata[2*i]=((unsigned long)SinTable[i]*ADDAParaList[2]/24)>>8;
 301   5                                              DACdata[2*i+1]=((unsigned long)SinTable[i]*ADDAParaList[2]/24);
 302   5                                      }
 303   4                              }
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 6   

 304   3                              if(ADDAParaList[0]==1)  //选择梯形波
 305   3                              {
 306   4                                      int i=0;
 307   4                                      for(;i<ADDAParaList[3]*0.64;i++)                                        //上升沿
 308   4                                      {
 309   5                                              DACdata[2*i]=(unsigned int)(0xFFF/(ADDAParaList[3]*0.64)*i*ADDAParaList[2]/24)>>8;
 310   5                                              DACdata[2*i+1]=(unsigned int)(0xFFF/(ADDAParaList[3]*0.64)*i*ADDAParaList[2]/24);
 311   5                                      }
 312   4                                      for(;i<(ADDAParaList[3]+ADDAParaList[4])*0.64;i++)      //高电平
 313   4                                      {
 314   5                                              DACdata[2*i]=((unsigned long)0xFFF*ADDAParaList[2]/24)>>8;
 315   5                                              DACdata[2*i+1]=(unsigned long)0xFFF*ADDAParaList[2]/24;
 316   5                                      }
 317   4                                      for(;i<(ADDAParaList[3]+ADDAParaList[4]+ADDAParaList[5])*0.64;i++)      //下降沿
 318   4                                      {
 319   5                                              DACdata[2*i]=((0xFFF-(unsigned long)(0xFFF/(ADDAParaList[5]*0.64)*(i-(ADDAParaList[3]+ADDAParaList[4]
             -)*0.64)))*ADDAParaList[2]/24)>>8;
 320   5                                              DACdata[2*i+1]=((0xFFF-(unsigned long)(0xFFF/(ADDAParaList[5]*0.64)*(i-(ADDAParaList[3]+ADDAParaList[
             -4])*0.64)))*ADDAParaList[2]/24);                              
 321   5                                      }
 322   4                                      for(;i<64;i++)          //低电平
 323   4                                      DACdata[2*i]=DACdata[2*i+1]=0;
 324   4                              }
 325   3                              return;                                 
 326   3                      }       
 327   2              }//while(1)
 328   1      }
 329          
 330          void DrawScale()                                        //在3区绘制坐标刻度
 331          {       
 332   1              int i,j;
 333   1              unsigned int TriggerLine=176-TriggerValue*16/300;;              //触发线坐标
 334   1              CS=0;
 335   1              LCD_RAM_ORG=LCD_Area3;
 336   1              
 337   1              //纵轴
 338   1              CmdWrite(CSRDIR_DOWN);
 339   1              for(i=0;i<7;i++)
 340   1              {
 341   2                      unsigned char Mode=0x80;
 342   2                      Locatexy((10+50*i)/8,16);
 343   2                      for(j=0;j<(10+50*i)%8;j++)
 344   2                      Mode=Mode>>1;
 345   2                      CmdWrite(MWRITE);
 346   2                      for(j=0;j<80;j++)
 347   2                      {
 348   3                              DataWrite(Mode);
 349   3                              DataWrite(0);
 350   3                      }
 351   2              }
 352   1              //横轴
 353   1              CmdWrite(CSRDIR_RIGHT);
 354   1              for(i=0;i<7;i++)
 355   1              {
 356   2                      Locatexy(1,176-i*27);
 357   2                      CmdWrite(MWRITE);
 358   2                      for(j=0;j<38;j++)
 359   2                      DataWrite(0xAA);
 360   2              }
 361   1              //绘制触发线
 362   1              Locatexy(1,TriggerLine);
 363   1              CmdWrite(MWRITE);
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 7   

 364   1              for(i=0;i<38;i++)
 365   1              DataWrite(0xFF);
 366   1      
 367   1              LCD_RAM_ORG=LCD_Area1;
 368   1              CS=1;
 369   1      }
 370          
 371          void ADC0_ISR() interrupt 15            //采集AD数据
 372          {
 373   1              char Stats=0;                   //0:<  1:>
 374   1              AD0INT=0;
 375   1              if(ADcounter==0)
 376   1              {
 377   2                      if(ADC0H>ADH_TriggerValue)
 378   2                      Stats=1;
 379   2                      if(ADC0H==ADH_TriggerValue)
 380   2                      {
 381   3                              if(ADC0L>ADL_TriggerValue)
 382   3                              Stats=1;
 383   3                      }
 384   2      
 385   2                      if(TriggerMode==0)
 386   2                      {
 387   3                              if(LastStats==0 && Stats==1)
 388   3                              {
 389   4                                      ADCdata[ADcounter]=ADC0H;
 390   4                                      ADcounter++;
 391   4                              }
 392   3                      }
 393   2                      if(TriggerMode==1)
 394   2                      {
 395   3                              if(LastStats==1 && Stats==0)
 396   3                              {
 397   4                                      ADCdata[ADcounter]=ADC0H;
 398   4                                      ADcounter++;
 399   4                              }
 400   3                      }
 401   2                      if(TriggerMode==2)
 402   2                      {
 403   3                              if(LastStats+Stats==1)
 404   3                              {
 405   4                                      ADCdata[ADcounter]=ADC0H;
 406   4                                      ADcounter++;
 407   4                              }
 408   3                      }
 409   2                      LastStats=Stats;
 410   2              }
 411   1              else
 412   1              {
 413   2                      if(ADcounter<304)
 414   2                      {
 415   3                              ADCdata[ADcounter]=ADC0H;
 416   3                              ADcounter++;
 417   3                      }
 418   2                      else
 419   2                      {
 420   3                              LastStats=2;
 421   3                              ready=1;
 422   3                      }
 423   2              }
 424   1      
 425   1      }
C51 COMPILER V7.06   ADDA                                                                  04/02/2007 08:52:19 PAGE 8   

 426          
 427          void DrawGraph()                        //根据ADCdata中数据绘制曲线
 428          {
 429   1              unsigned char row,col,k;

⌨️ 快捷键说明

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