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

📄 srcout_s.lst

📁 FPGA与USB通信的测试代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
 247          // Your implementation should not use the above bRequest values...
 248          // Also, previous fw.c versions trap all bRequest values 0x00 through 0x0F...
 249          //
 250          //   bRequest value: SETUPDAT[1]
 251          //   standard, 0x00 through 0x0F
 252          //
 253          //   bmRequest value: SETUPDAT[0]
 254          //   standard,  0x80 IN   Token
 255          //   vendor,    0xC0 IN   Token
 256          //   class,     0xA0 IN   Token
 257          //   standard,  0x00 OUT  Token
 258          //   vendor,    0x40 OUT  Token
 259          //   class,     0x60 OUT  Token
 260          
 261          BOOL DR_VendorCmnd( void )
 262          {
 263   1      
 264   1        // Registers which require a synchronization delay, see section 15.14
 265   1        // FIFORESET        FIFOPINPOLAR
 266   1        // INPKTEND         OUTPKTEND
 267   1        // EPxBCH:L         REVCTL
 268   1        // GPIFTCB3         GPIFTCB2
 269   1        // GPIFTCB1         GPIFTCB0
 270   1        // EPxFIFOPFH:L     EPxAUTOINLENH:L
 271   1        // EPxFIFOCFG       EPxGPIFFLGSEL
 272   1        // PINFLAGSxx       EPxFIFOIRQ
 273   1        // EPxFIFOIE        GPIFIRQ
 274   1        // GPIFIE           GPIFADRH:L
 275   1        // UDMACRCH:L       EPxGPIFTRIG
 276   1        // GPIFTRIG
 277   1        
 278   1        // Note: The pre-REVE EPxGPIFTCH/L register are affected, as well...
 279   1        //      ...these have been replaced by GPIFTC[B3:B0] registers
 280   1      
 281   1      
 282   1          
 283   1      
 284   1              switch( SETUPDAT[ 1 ] )
 285   1              { 
 286   2          case VX_B2:
 287   2          { // turn OFF debug LEDs...
 288   3          
 289   3            ledX_rdvar = LED0_ON;    // visual
 290   3            ledX_rdvar = LED1_ON;    // visual
 291   3            ledX_rdvar = LED2_ON;    // visual
 292   3            ledX_rdvar = LED3_ON;    // visual
 293   3            
 294   3            *EP0BUF = VX_B2;
 295   3      
 296   3        EP0BCH = 0;
 297   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 298   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 299   3        
 300   3      
 301   3            break;
 302   3          }
C51 COMPILER V7.50   SRCOUT_S                                                              05/26/2006 20:44:33 PAGE 6   

 303   2          case VX_B3:
 304   2          { // turn OFF debug LEDs...
 305   3          
 306   3            ledX_rdvar = LED0_OFF;    // visual
 307   3            ledX_rdvar = LED1_OFF;    // visual
 308   3            ledX_rdvar = LED2_OFF;    // visual
 309   3            ledX_rdvar = LED3_OFF;    // visual
 310   3            
 311   3            *EP0BUF = VX_B3;
 312   3        EP0BCH = 0;
 313   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 314   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 315   3        
 316   3      
 317   3      
 318   3      
 319   3            break;
 320   3          }
 321   2      
 322   2          case VX_BC:
 323   2          { // turn OFF debug LEDs...
 324   3          
 325   3                display = TRUE;   
 326   3                              if(--num > 0x0f)
 327   3                              num = 0x0f;
 328   3                                      
 329   3                      if(display)
 330   3                      {
 331   4                              EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
 332   4                              EZUSB_WaitForEEPROMWrite(LED_ADDR);
 333   4                              display = FALSE;
 334   4                      }
 335   3              
 336   3            
 337   3            *EP0BUF = VX_BC;
 338   3        EP0BCH = 0;
 339   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 340   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 341   3        
 342   3      
 343   3      
 344   3      
 345   3      
 346   3      
 347   3      
 348   3      
 349   3            break;
 350   3          }
 351   2      
 352   2         case VX_BD:
 353   2          { // turn OFF debug LEDs...
 354   3          
 355   3                display = TRUE;   
 356   3                      if(++num > 0x0f)
 357   3              num = 0;
 358   3                                                      
 359   3                                      
 360   3                      if(display)
 361   3                      {
 362   4                              EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
 363   4                              EZUSB_WaitForEEPROMWrite(LED_ADDR);
 364   4                              display = FALSE;
C51 COMPILER V7.50   SRCOUT_S                                                              05/26/2006 20:44:33 PAGE 7   

 365   4                      }
 366   3              
 367   3            
 368   3            *EP0BUF = VX_BD;
 369   3        EP0BCH = 0;
 370   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 371   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 372   3        
 373   3      
 374   3      
 375   3            break;
 376   3          }
 377   2        
 378   2          
 379   2              case VX_BE:
 380   2          { // turn OFF debug LEDs...
 381   3          
 382   3                display = TRUE;   
 383   3             num=0;
 384   3                                                      
 385   3                                      
 386   3                      if(display)
 387   3                      {
 388   4                              EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
 389   4                              EZUSB_WaitForEEPROMWrite(LED_ADDR);
 390   4                              display = FALSE;
 391   4                      }
 392   3              
 393   3            
 394   3            *EP0BUF = VX_BE;
 395   3      
 396   3        EP0BCH = 0;
 397   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 398   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 399   3        
 400   3            break;
 401   3          }
 402   2      
 403   2         case VX_BF:
 404   2          { // turn OFF debug LEDs...
 405   3          
 406   3              display = TRUE;   
 407   3                      num = 0x0f;
 408   3                                                      
 409   3      //              num=*EP0BUF-0x30;               
 410   3                      if(display)
 411   3                      {
 412   4                              EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
 413   4                              EZUSB_WaitForEEPROMWrite(LED_ADDR);
 414   4                              display = FALSE;
 415   4                      }
 416   3              
 417   3            
 418   3            *EP0BUF = VX_BF;
 419   3        EP0BCH = 0;
 420   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 421   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 422   3        
 423   3      
 424   3            break;
 425   3          }
 426   2         case VX_C3:
C51 COMPILER V7.50   SRCOUT_S                                                              05/26/2006 20:44:33 PAGE 8   

 427   2          { // turn OFF debug LEDs...
 428   3            
 429   3             display = TRUE;   
 430   3      
 431   3                                                      
 432   3              num=SETUPDAT[2]-0x30; 
 433   3                      if(display)
 434   3                      {
 435   4                              EZUSB_WriteI2C(LED_ADDR, 0x01, &(Digit[num]));
 436   4                              EZUSB_WaitForEEPROMWrite(LED_ADDR);
 437   4                              display = FALSE;
 438   4                      }
 439   3                       // Arm endpoint with # bytes to transfer
 440   3       *EP0BUF = VX_C3;
 441   3        EP0BCH = 0;
 442   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 443   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 444   3        
 445   3        
 446   3          //  *EP0BUF = VX_C0;
 447   3            break;
 448   3          }
 449   2      
 450   2      
 451   2          case VX_B7:
 452   2          { 
 453   3            TD_Init( );
 454   3            *EP0BUF = VX_B7;
 455   3             EP0BCH = 0;
 456   3                 EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 457   3                 EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 458   3        
 459   3      
 460   3            break;
 461   3          }
 462   2          case VX_B8:
 463   2          { 
 464   3            EP0BCH = 0;
 465   3            EP0BCL = 1;                   // Arm endpoint with # bytes to transfer
 466   3            EP0CS |= bmHSNAK;             // Acknowledge handshake phase of device request
 467   3            SYNCDELAY;                    // used here as "delay"
 468   3            SYNCDELAY;                    // used here as "delay"
 469   3            
 470   3            EA = 0;             
 471   3                            
 472   3            // ...do a "soft" code only RESET... vector to ORG 0x0000
 473   3            ( ( void ( code * ) ( void ) ) 0x0000 ) ( );
 474   3            
 475   3            *EP0BUF = VX_B8;
 476   3        EP0BCH = 0;
 477   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 478   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 479   3        
 480   3      
 481   3            break;
 482   3          }
 483   2          case VX_BA:
 484   2          {                           
 485   3            REVCTL = 0x01;            // REVCTL.0=1 (enable enhanced packet handling)
 486   3            SYNCDELAY;                // 
 487   3            OUTPKTEND = 0x02;         // commit out pkt, w/skip=0
 488   3            SYNCDELAY;                // 
C51 COMPILER V7.50   SRCOUT_S                                                              05/26/2006 20:44:33 PAGE 9   

 489   3            *EP0BUF = VX_BA;
 490   3        EP0BCH = 0;
 491   3        EP0BCL = 1;               // Arm endpoint with # bytes to transfer
 492   3        EP0CS |= bmHSNAK;         // Acknowledge handshake phase of device request
 493   3        
 494   3      
 495   3            break;
 496   3          }
 497   2          case VX_BB:
 498   2          {                           
 499   3            REVCTL = 0x01;            // REVCTL.0=1
 500   3            SYNCDELAY;                // 
 501   3            INPKTEND = 0x06;          // commit in pkt,  w/skip=0
 502   3            SYNCDELAY;                // 

⌨️ 快捷键说明

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