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

📄 usbtest.lst

📁 C8051F120与串口、并口、D12、USB、LCD应用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 298   1              //check the test no
 299   1              if (bTestNo != 2)
 300   1              {
 301   2                      display_err(USBERR_WRONGTEST);
 302   2                      return;
 303   2              }
C51 COMPILER V7.01  USBTEST                                                                06/30/2007 11:42:51 PAGE 6   

 304   1      
 305   1              DeleteFile(*g_pData);
 306   1      }
 307          
 308          void _add_file()
 309          {
 310   1              u8 u8FileNo = *(g_pData+sizeof(FILESTRUCT));
 311   1              //check the test no
 312   1              if (bTestNo != 2)
 313   1              {
 314   2                      display_err(USBERR_WRONGTEST);
 315   2                      return;
 316   2              }
 317   1      
 318   1              memcpy(&File[u8FileNo], g_pData, sizeof(FILESTRUCT));
 319   1              AddFile(u8FileNo);
 320   1      }
 321          
 322          void _open_file()
 323          {
 324   1              //check the test no
 325   1              if (bTestNo != 2)
 326   1              {
 327   2                      display_err(USBERR_WRONGTEST);
 328   2                      return;
 329   2              }
 330   1      
 331   1              mmc_fopen(*g_pData);
 332   1      }
 333          
 334          void _close_file()
 335          {
 336   1              //check the test no
 337   1              if (bTestNo != 2)
 338   1              {
 339   2                      display_err(USBERR_WRONGTEST);
 340   2                      return;
 341   2              }
 342   1      
 343   1              mmc_fclose();
 344   1      }
 345          
 346          code void (*Dispatch[])() = 
 347          {
 348                  reserved,
 349                  _set_reg,
 350                  _get_reg,
 351                  _change_dir,
 352                  _read_file,
 353                  _write_file,
 354                  _delete_file,
 355                  _add_file,      //add file & dir use the same func
 356                  _add_file,
 357                  _delete_file,   //delete file & dir use the same func
 358                  _connect_mmc,
 359                  _open_file,
 360                  _close_file,
 361                  _change_dir     //refresh & change_dir use the same func
 362          };
 363          
 364          /* initialize interrupt system */
 365          /*
C51 COMPILER V7.01  USBTEST                                                                06/30/2007 11:42:51 PAGE 7   

 366          void Init()
 367          {       
 368          
 369          }
 370          */
 371          
 372          void Uninit()
 373          {
 374   1              EX0 = 0;
 375   1      //      ES0 = 0;
 376   1              EIE2 &=0xfe;
 377   1      }
 378          
 379          void USB_test1(void)
 380          {
 381   1              CMD_HEADER *g_pCmd = (CMD_HEADER*)Ep2Buf;
 382   1              bTestNo = 1;
 383   1              // reset event flags
 384   1              bEppflags.value = 0;
 385   1      
 386   1              SetUSBTest1Data(&usbtest1);
 387   1      
 388   1              IT0 = 0; //set int0 trigger mode
 389   1              EX0 = 1;        //ENABLE int0
 390   1              EA = 1;         //ENABLE interrupt system
 391   1      
 392   1              // set timer3 interval to 1s
 393   1              Timer3_INIT();
 394   1      
 395   1              Init_D12();
 396   1              
 397   1              D12_Connect();
 398   1      
 399   1              while(1)
 400   1              {
 401   2                      if (bEppflags.flags.bus_reset)
 402   2                      {
 403   3                              DISABLE_INTERRUPT;
 404   3                              bEppflags.flags.bus_reset = 0;
 405   3                              ENABLE_INTERRUPT;
 406   3      
 407   3                              // Release D12's SUSPEND pin after bus reset
 408   3                              D12_SUSP = D12_SUSP_SLEEP;
 409   3      
 410   3                      }
 411   2                      if (bEppflags.flags.suspend)
 412   2                      {
 413   3                              DISABLE_INTERRUPT;
 414   3                              bEppflags.flags.suspend = 0;
 415   3                              ENABLE_INTERRUPT;
 416   3                      }
 417   2                      if (bEppflags.flags.setup_packet)
 418   2                      {
 419   3                              DISABLE_INTERRUPT;
 420   3                              bEppflags.flags.setup_packet = 0;
 421   3                              ENABLE_INTERRUPT;
 422   3                              control_handler();
 423   3                      }
 424   2      
 425   2                      if (bEppflags.flags.ep2_out)
 426   2                      {
 427   3      //                      DISABLE_INTERRUPT;      //the int was disabled in ep2 out interrupt,
C51 COMPILER V7.01  USBTEST                                                                06/30/2007 11:42:51 PAGE 8   

 428   3                                                                      //we need open it after process the data
 429   3                              bEppflags.flags.ep2_out = 0;
 430   3      //                      process(Ep2OutLen);
 431   3                              ENABLE_INTERRUPT;
 432   3                              if (g_pCmd->wTag != USBCMD_BEGIN)
 433   3                              {
 434   4                                      display_err(USBERR_WRONGTEST);
 435   4                              }
 436   3                              
 437   3                              Dispatch[g_pCmd->bCmd]();
 438   3                      }
 439   2      
 440   2                      if (CheckKeyF == 1)
 441   2                      {
 442   3                              CheckKey();
 443   3                              CheckKeyF = 0;
 444   3                      }
 445   2      
 446   2                      if (Key[0].pressed == 1)        //key0 set trans mode
 447   2                      {
 448   3                              if (usbtest1.bTransMode == TRANSMODE_CONTROL)
 449   3                                      usbtest1.bTransMode = TRANSMODE_INT;
 450   3                              else
 451   3                                      usbtest1.bTransMode = TRANSMODE_CONTROL;
 452   3                              bNeedRefresh = true;
 453   3                              Key[0].pressed = 0;
 454   3                      }
 455   2                      if (Key[1].pressed == 1)//key1 set auto echo
 456   2                      {
 457   3                              if (usbtest1.bAutoEcho == AUTOECHO_ON)
 458   3                                      usbtest1.bAutoEcho = AUTOECHO_OFF;
 459   3                              else
 460   3                                      usbtest1.bAutoEcho = AUTOECHO_ON;
 461   3                              bNeedRefresh = true;
 462   3                              Key[1].pressed = 0;
 463   3      
 464   3      //                      D12_WriteEndpointBuffer(5, InData, 64);
 465   3                      }
 466   2                      if (Key[6].pressed == 1)        //key6 clear byte count
 467   2                      {
 468   3                              usbtest1.wSendCount = 0;
 469   3                              usbtest1.wRecvCount = 0;
 470   3                              bNeedRefresh = true;
 471   3                              Key[6].pressed = 0;
 472   3                      }
 473   2                      if (Key[7].pressed == 1)        //exit usb test1
 474   2                      {
 475   3                              Uninit();
 476   3                              D12_Disconnect();
 477   3                              bTestNo = 0;
 478   3      
 479   3                              SFRPAGE=TMR3_PAGE;
 480   3                              TR3=0;
 481   3                              SFRPAGE=CONFIG_PAGE;
 482   3                              ClearKey();                                             //清按键
 483   3                              Clear(0,240);                                   //清屏幕
 484   3                              return;
 485   3                      }
 486   2      
 487   2                      if (bNeedRefresh == true || bTimerRefresh == true)
 488   2                      {
 489   3                              if (usbtest1.bAutoEcho == AUTOECHO_ON
C51 COMPILER V7.01  USBTEST                                                                06/30/2007 11:42:51 PAGE 9   

 490   3                                      && bTimerRefresh==true)
 491   3                                      _get_reg();
 492   3      
 493   3                              SetUSBTest1Data(&usbtest1);
 494   3                              bNeedRefresh = false;
 495   3                              bTimerRefresh = false;
 496   3                      }
 497   2              }
 498   1      }
 499          
 500          
 501          void USB_test2(void)
 502          {
 503   1      //      CMD_HEADER xdata *g_pCmd = (CMD_HEADER*)Ep2Buf;
 504   1      
 505   1      //      char Selected;                                                          //返回的目录选择项(0-12),-1表示退出MMC模块
 506   1      
 507   1              bTestNo = 2;
 508   1      
 509   1              // reset event flags
 510   1              bEppflags.value = 0;
 511   1      
 512   1              DEPTH=1;
 513   1              Clear(0,240);                                                           
 514   1              MMCDataBuf[512]=0;                                                      //缓冲区第513个字节清零,防止显示时溢出
 515   1              strcpy(PATH,"路径:根目录");
 516   1      
 517   1              //open root 
 518   1              CurF.firstcluster=0;                                            //首先打开根目录(firstcluster=0判断为根目录)
 519   1              CurF.attribute=0;                                                       //首先打开根目录(firstcluster=0判断为根目录)
 520   1              OpenDir(&CurF);
 521   1      
 522   1              IT0 = 0; //set int0 trigger mode
 523   1              EX0 = 1;        //ENABLE int0
 524   1              EA = 1;         //ENABLE interrupt system
 525   1              Init_D12();
 526   1              
 527   1              D12_Connect();
 528   1      
 529   1              while(1)
 530   1              {
 531   2                      if (bEppflags.flags.bus_reset)
 532   2                      {
 533   3                              DISABLE_INTERRUPT;
 534   3                              bEppflags.flags.bus_reset = 0;
 535   3                              ENABLE_INTERRUPT;
 536   3      
 537   3                              // Release D12's SUSPEND pin after bus reset
 538   3                              D12_SUSP = D12_SUSP_SLEEP;
 539   3      
 540   3                      }
 541   2                      if (bEppflags.flags.suspend)
 542   2                      {
 543   3                              DISABLE_INTERRUPT;
 544   3                              bEppflags.flags.suspend = 0;
 545   3                              ENABLE_INTERRUPT;
 546   3                      }
 547   2                      if (bEppflags.flags.setup_packet)
 548   2                      {
 549   3                              DISABLE_INTERRUPT;
 550   3                              bEppflags.flags.setup_packet = 0;
 551   3                              ENABLE_INTERRUPT;
C51 COMPILER V7.01  USBTEST                                                                06/30/2007 11:42:51 PAGE 10  

 552   3                              control_handler();
 553   3                      }
 554   2      
 555   2                      if (bEppflags.flags.ep2_out)
 556   2                      {
 557   3      //                      DISABLE_INTERRUPT;      //the int was disabled in ep2 out interrupt,
 558   3                                                                      //we need open it after process the data
 559   3                              bEppflags.flags.ep2_out = 0;
 560   3      //                      process(Ep2OutLen);
 561   3                              ENABLE_INTERRUPT;
 562   3                              if (g_pCmd->wTag != USBCMD_BEGIN)
 563   3                              {
 564   4                                      display_err(USBERR_WRONGTEST);
 565   4                              }
 566   3      
 567   3                              Dispatch[g_pCmd->bCmd]();
 568   3                      }
 569   2      
 570   2                      if (CheckKeyF == 1)
 571   2                      {
 572   3                              CheckKey();
 573   3                              CheckKeyF = 0;
 574   3                      }
 575   2                      if (Key[7].pressed == 1)        //exit usb test2
 576   2                      {
 577   3                              EX0 = 0;
 578   3                              D12_Disconnect();                       
 579   3                              bTestNo = 0;
 580   3      
 581   3                              ClearKey();                                             //清按键
 582   3                              Clear(0,240);                                   //清屏幕
 583   3                              return;
 584   3                      }
 585   2              }
 586   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2295    ----
   CONSTANT SIZE    =     54    ----
   XDATA SIZE       =     25      12
   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 + -