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

📄 vend_ax.lst

📁 CYPRESS USB CY7C68013A 命令传输的固件和上位机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 259   2                              {
 260   3                                      while(len)                                      // Move new data through EP0OUT 
 261   3                                      {                                                       // one packet at a time.
 262   4                                              // Arm endpoint - do it here to clear (after sud avail)
 263   4                                              EP0BCH = 0;
 264   4                                              EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing
 265   4      
 266   4                                              while(EP0CS & bmEPBUSY);
 267   4      
 268   4                                              bc = EP0BCL; // Get the new bytecount
 269   4      
 270   4                                              // Is this a RAM download ?
 271   4                                              if(SETUPDAT[1] == VR_RAM)
 272   4                                              {
 273   5                                                      for(i=0; i<bc; i++)
 274   5                                                               *((BYTE xdata *)addr+i) = *(EP0BUF+i);
 275   5                                              }
 276   4                                              else
 277   4                                                      EEPROMWrite(addr,bc,(WORD)EP0BUF);
 278   4      
 279   4                                              addr += bc;
 280   4                                              len -= bc;
 281   4                                      }
 282   3                              }
 283   2                              break;
 284   2              }
 285   1              return(FALSE); // no error; command handled OK
 286   1      }
 287          
 288          //-----------------------------------------------------------------------------
 289          // USB Interrupt Handlers
 290          //      The following functions are called by the USB interrupt jump table.
 291          //-----------------------------------------------------------------------------
 292          
 293          // Setup Data Available Interrupt Handler
 294          void ISR_Sudav(void) interrupt 0
 295          {
 296   1         // enable the automatic length feature of the Setup Data Autopointer
 297   1         // in case a previous transfer disbaled it
 298   1         SUDPTRCTL |= bmSDPAUTO;
 299   1      
 300   1         GotSUD = TRUE;            // Set flag
 301   1         EZUSB_IRQ_CLEAR();
 302   1         USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
 303   1      }
C51 COMPILER V7.50   VEND_AX                                                               06/04/2006 20:12:23 PAGE 6   

 304          
 305          // Setup Token Interrupt Handler
 306          void ISR_Sutok(void) interrupt 0
 307          {
 308   1         EZUSB_IRQ_CLEAR();
 309   1         USBIRQ = bmSUTOK;         // Clear SUTOK IRQ
 310   1      }
 311          
 312          void ISR_Sof(void) interrupt 0
 313          {
 314   1         EZUSB_IRQ_CLEAR();
 315   1         USBIRQ = bmSOF;            // Clear SOF IRQ
 316   1      }
 317          
 318          void ISR_Ures(void) interrupt 0
 319          {
 320   1         if (EZUSB_HIGHSPEED())
 321   1         {
 322   2            pConfigDscr = pHighSpeedConfigDscr;
 323   2            pOtherConfigDscr = pFullSpeedConfigDscr;
 324   2         }
 325   1         else
 326   1         {
 327   2            pConfigDscr = pFullSpeedConfigDscr;
 328   2            pOtherConfigDscr = pHighSpeedConfigDscr;
 329   2         }
 330   1         
 331   1         EZUSB_IRQ_CLEAR();
 332   1         USBIRQ = bmURES;         // Clear URES IRQ
 333   1      }
 334          
 335          void ISR_Susp(void) interrupt 0
 336          {
 337   1         Sleep = TRUE;
 338   1         EZUSB_IRQ_CLEAR();
 339   1         USBIRQ = bmSUSP;
 340   1      }
 341          
 342          void ISR_Highspeed(void) interrupt 0
 343          {
 344   1         if (EZUSB_HIGHSPEED())
 345   1         {
 346   2            pConfigDscr = pHighSpeedConfigDscr;
 347   2            pOtherConfigDscr = pFullSpeedConfigDscr;
 348   2         }
 349   1         else
 350   1         {
 351   2            pConfigDscr = pFullSpeedConfigDscr;
 352   2            pOtherConfigDscr = pHighSpeedConfigDscr;
 353   2         }
 354   1      
 355   1         EZUSB_IRQ_CLEAR();
 356   1         USBIRQ = bmHSGRANT;
 357   1      }
 358          
 359          void ISR_Ep0ack(void) interrupt 0
 360          {
 361   1      }
 362          void ISR_Stub(void) interrupt 0
 363          {
 364   1      }
 365          void ISR_Ep0in(void) interrupt 0
C51 COMPILER V7.50   VEND_AX                                                               06/04/2006 20:12:23 PAGE 7   

 366          {
 367   1      }
 368          void ISR_Ep0out(void) interrupt 0
 369          {
 370   1      }
 371          void ISR_Ep1in(void) interrupt 0
 372          {
 373   1      }
 374          void ISR_Ep1out(void) interrupt 0
 375          {
 376   1      }
 377          void ISR_Ep2inout(void) interrupt 0
 378          {
 379   1      }
 380          void ISR_Ep4inout(void) interrupt 0
 381          {
 382   1      }
 383          void ISR_Ep6inout(void) interrupt 0
 384          {
 385   1      }
 386          void ISR_Ep8inout(void) interrupt 0
 387          {
 388   1      }
 389          void ISR_Ibn(void) interrupt 0
 390          {
 391   1      }
 392          void ISR_Ep0pingnak(void) interrupt 0
 393          {
 394   1      }
 395          void ISR_Ep1pingnak(void) interrupt 0
 396          {
 397   1      }
 398          void ISR_Ep2pingnak(void) interrupt 0
 399          {
 400   1      }
 401          void ISR_Ep4pingnak(void) interrupt 0
 402          {
 403   1      }
 404          void ISR_Ep6pingnak(void) interrupt 0
 405          {
 406   1      }
 407          void ISR_Ep8pingnak(void) interrupt 0
 408          {
 409   1      }
 410          void ISR_Errorlimit(void) interrupt 0
 411          {
 412   1      }
 413          void ISR_Ep2piderror(void) interrupt 0
 414          {
 415   1      }
 416          void ISR_Ep4piderror(void) interrupt 0
 417          {
 418   1      }
 419          void ISR_Ep6piderror(void) interrupt 0
 420          {
 421   1      }
 422          void ISR_Ep8piderror(void) interrupt 0
 423          {
 424   1      }
 425          void ISR_Ep2pflag(void) interrupt 0
 426          {
 427   1      }
C51 COMPILER V7.50   VEND_AX                                                               06/04/2006 20:12:23 PAGE 8   

 428          void ISR_Ep4pflag(void) interrupt 0
 429          {
 430   1      }
 431          void ISR_Ep6pflag(void) interrupt 0
 432          {
 433   1      }
 434          void ISR_Ep8pflag(void) interrupt 0
 435          {
 436   1      }
 437          void ISR_Ep2eflag(void) interrupt 0
 438          {
 439   1      }
 440          void ISR_Ep4eflag(void) interrupt 0
 441          {
 442   1      }
 443          void ISR_Ep6eflag(void) interrupt 0
 444          {
 445   1      }
 446          void ISR_Ep8eflag(void) interrupt 0
 447          {
 448   1      }
 449          void ISR_Ep2fflag(void) interrupt 0
 450          {
 451   1      }
 452          void ISR_Ep4fflag(void) interrupt 0
 453          {
 454   1      }
 455          void ISR_Ep6fflag(void) interrupt 0
 456          {
 457   1      }
 458          void ISR_Ep8fflag(void) interrupt 0
 459          {
 460   1      }
 461          void ISR_GpifComplete(void) interrupt 0
 462          {
 463   1      }
 464          void ISR_GpifWaveform(void) interrupt 0
 465          {
 466   1      }
 467          
 468          void EEPROMWriteByte(WORD addr, BYTE value)
 469          {
 470   1              BYTE            i = 0;
 471   1              BYTE xdata      ee_str[3];
 472   1      
 473   1              if(DB_Addr)
 474   1                      ee_str[i++] = MSB(addr);
 475   1      
 476   1              ee_str[i++] = LSB(addr);
 477   1              ee_str[i++] = value;
 478   1      
 479   1              EZUSB_WriteI2C(I2C_Addr, i, ee_str);
 480   1         EZUSB_WaitForEEPROMWrite(I2C_Addr);
 481   1      }
 482          
 483          
 484          void EEPROMWrite(WORD addr, BYTE length, BYTE xdata *buf)
 485          {
 486   1              BYTE    i;
 487   1              for(i=0;i<length;++i)
 488   1                      EEPROMWriteByte(addr++,buf[i]);
 489   1      }
C51 COMPILER V7.50   VEND_AX                                                               06/04/2006 20:12:23 PAGE 9   

 490          
 491          void EEPROMRead(WORD addr, BYTE length, BYTE xdata *buf)
 492          {
 493   1              BYTE            i = 0;
 494   1              BYTE            j = 0;
 495   1              BYTE xdata      ee_str[2];
 496   1      
 497   1              if(DB_Addr)
 498   1                      ee_str[i++] = MSB(addr);
 499   1      
 500   1              ee_str[i++] = LSB(addr);
 501   1      
 502   1              EZUSB_WriteI2C(I2C_Addr, i, ee_str);
 503   1      
 504   1      //      for(j=0; j < length; j++)
 505   1      //              *(buf+j) = 0xcd;
 506   1      
 507   1              EZUSB_ReadI2C(I2C_Addr, length, buf);
 508   1      }
 509          
 510          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1289    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----       5
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      20
   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 + -