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

📄 bulkloop.lst

📁 EZUSB FX2(Cy68013A)源码
💻 LST
字号:
C51 COMPILER V6.10  BULKLOOP                                                               08/22/2006 11:32:24 PAGE 1   


C51 COMPILER V6.10, COMPILATION OF MODULE BULKLOOP
OBJECT MODULE PLACED IN .\bulkloop.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\bulkloop.c DEBUG OBJECTEXTEND

stmt level    source

   1          #pragma NOIV                    // Do not generate interrupt vectors
   2          //-----------------------------------------------------------------------------
   3          //   File:      tcxmaster.c
   4          //   Contents:  Hooks required to implement USB peripheral function.
   5          //              Code written for FX2 56-pin REVD...
   6          //              This firmware is used to test the FX ext. master CY3682 DK
   7          //   Copyright (c) 2001 Cypress Semiconductor All rights reserved
   8          //-----------------------------------------------------------------------------
   9          #include "fx2.h"
  10          #include "fx2regs.h"
  11          #include "fx2sdly.h"            // SYNCDELAY macro
  12          
  13          extern BOOL GotSUD;             // Received setup data flag
  14          extern BOOL Sleep;
  15          extern BOOL Rwuen;
  16          extern BOOL Selfpwr;
  17          
  18          BYTE Configuration;             // Current configuration
  19          BYTE AlternateSetting;          // Alternate settings
  20          
  21          
  22          //-----------------------------------------------------------------------------
  23          // Task Dispatcher hooks
  24          //   The following hooks are called by the task dispatcher.
  25          //-----------------------------------------------------------------------------
  26          void TD_Init( void )
  27          { 
  28   1      	// Called once at startup
  29   1        //REVCTL =0X03;SYNCDELAY;
  30   1        CPUCS = 0x10; SYNCDELAY;                // CLKSPD[1:0]=10, for 48MHz operation
  31   1        IFCONFIG = 0x0B; //异步操作slavefifo方式
  32   1        // IFCLKSRC=1   , FIFOs executes on internal clk source
  33   1        // xMHz=1       , 48MHz internal clk rate
  34   1        // IFCLKOE=0    , Don't drive IFCLK pin signal at 48MHz
  35   1        // IFCLKPOL=0   , Don't invert IFCLK pin signal from internal clk
  36   1        // ASYNC=1      , master samples asynchronous
  37   1        // GSTATE=0     , Don't drive GPIF states out on PORTE[2:0], debug WF
  38   1        // IFCFG[1:0]=11, FX2 in slave FIFO mode
  39   1      SYNCDELAY;
  40   1        FIFOPINPOLAR=0x00;
  41   1        SYNCDELAY;
  42   1      	//REVCTL = 0x03; // MUST set REVCTL.0 and REVCTL.1 to 1
  43   1      SYNCDELAY;
  44   1      EP2CFG = 0xA2; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x
  45   1      SYNCDELAY;
  46   1      EP6CFG = 0xE0; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x
  47   1      SYNCDELAY;
  48   1      FIFORESET = 0x80; // Reset the FIFO
  49   1      SYNCDELAY;
  50   1      FIFORESET = 0x02;
  51   1      SYNCDELAY;
  52   1      FIFORESET = 0x04;
  53   1      SYNCDELAY;
  54   1      FIFORESET = 0x06;
  55   1      SYNCDELAY;
C51 COMPILER V6.10  BULKLOOP                                                               08/22/2006 11:32:24 PAGE 2   

  56   1      EP2FIFOCFG = 0x00;
  57   1      SYNCDELAY;
  58   1      EP2FIFOCFG = 0x15; // EP2 is AUTOOUT=1, AUTOIN=0, ZEROLEN=1, WORDWIDE=1
  59   1      SYNCDELAY;
  60   1      EP6FIFOCFG = 0x00;
  61   1      SYNCDELAY;
  62   1      EP6FIFOCFG = 0x0D; // EP6 is AUTOOUT=0, AUTOIN=1, ZEROLEN=1, WORDWIDE=1
  63   1      SYNCDELAY;
  64   1      OUTPKTEND = 0x81; // Arm both EP2 buffers to “prime the pump”
  65   1      SYNCDELAY;
  66   1      OUTPKTEND = 0x81;
  67   1          SYNCDELAY;
  68   1          PINFLAGSAB =0X00;
  69   1      	SYNCDELAY;
  70   1      	PINFLAGSCD  =0X88;
  71   1      
  72   1      }
  73          
  74          void TD_Poll( void )
  75          { 
  76   1      	// Called repeatedly while the device is idle
  77   1      
  78   1      	// ...nothing to do... slave fifo's are in AUTO mode...
  79   1      }
  80          
  81          BOOL TD_Suspend( void )          
  82          {
  83   1       // Called before the device goes into suspend mode
  84   1         return( TRUE );
  85   1      }
  86          
  87          BOOL TD_Resume( void )          
  88          {
  89   1       // Called after the device resumes
  90   1         return( TRUE );
  91   1      }
  92          
  93          //-----------------------------------------------------------------------------
  94          // Device Request hooks
  95          //   The following hooks are called by the end point 0 device request parser.
  96          //-----------------------------------------------------------------------------
  97          BOOL DR_GetDescriptor( void )
  98          {
  99   1         return( TRUE );
 100   1      }
 101          
 102          BOOL DR_SetConfiguration( void )   
 103          { // Called when a Set Configuration command is received
 104   1        
 105   1        if( EZUSB_HIGHSPEED( ) )
 106   1        { // ...FX2 in high speed mode
 107   2          EP6AUTOINLENH = 0x02;
 108   2          SYNCDELAY;
 109   2          EP8AUTOINLENH = 0x02;   // set core AUTO commit len = 512 bytes
 110   2          SYNCDELAY;
 111   2          EP6AUTOINLENL = 0x00;
 112   2          SYNCDELAY;
 113   2          EP8AUTOINLENL = 0x00;
 114   2        }
 115   1        else
 116   1        { // ...FX2 in full speed mode
 117   2          EP6AUTOINLENH = 0x00;
C51 COMPILER V6.10  BULKLOOP                                                               08/22/2006 11:32:24 PAGE 3   

 118   2          SYNCDELAY;
 119   2          EP8AUTOINLENH = 0x00;   // set core AUTO commit len = 64 bytes
 120   2          SYNCDELAY;
 121   2          EP6AUTOINLENL = 0x40;
 122   2          SYNCDELAY;
 123   2          EP8AUTOINLENL = 0x40;
 124   2        }
 125   1            
 126   1        Configuration = SETUPDAT[ 2 ];
 127   1        return( TRUE );        // Handled by user code
 128   1      }
 129          
 130          BOOL DR_GetConfiguration( void )   
 131          { // Called when a Get Configuration command is received
 132   1         EP0BUF[ 0 ] = Configuration;
 133   1         EP0BCH = 0;
 134   1         EP0BCL = 1;
 135   1         return(TRUE);          // Handled by user code
 136   1      }
 137          
 138          BOOL DR_SetInterface( void )       
 139          { // Called when a Set Interface command is received
 140   1         AlternateSetting = SETUPDAT[ 2 ];
 141   1         return( TRUE );        // Handled by user code
 142   1      }
 143          
 144          BOOL DR_GetInterface( void )       
 145          { // Called when a Set Interface command is received
 146   1         EP0BUF[ 0 ] = AlternateSetting;
 147   1         EP0BCH = 0;
 148   1         EP0BCL = 1;
 149   1         return( TRUE ); // Handled by user code
 150   1      }
 151          
 152          BOOL DR_GetStatus( void )
 153          {
 154   1         return( TRUE );
 155   1      }
 156          
 157          BOOL DR_ClearFeature( void )
 158          {
 159   1         return( TRUE );
 160   1      }
 161          
 162          BOOL DR_SetFeature( void )
 163          {
 164   1         return( TRUE );
 165   1      }
 166          
 167          BOOL DR_VendorCmnd( void )
 168          {
 169   1        return( TRUE );
 170   1      }
 171          
 172          //-----------------------------------------------------------------------------
 173          // USB Interrupt Handlers
 174          //   The following functions are called by the USB interrupt jump table.
 175          //-----------------------------------------------------------------------------
 176          
 177          // Setup Data Available Interrupt Handler
 178          void ISR_Sudav( void ) interrupt 0
 179          {
C51 COMPILER V6.10  BULKLOOP                                                               08/22/2006 11:32:24 PAGE 4   

 180   1         GotSUD = TRUE;         // Set flag
 181   1         EZUSB_IRQ_CLEAR( );
 182   1         USBIRQ = bmSUDAV;      // Clear SUDAV IRQ
 183   1      }
 184          
 185          // Setup Token Interrupt Handler
 186          void ISR_Sutok( void ) interrupt 0
 187          {
 188   1         EZUSB_IRQ_CLEAR( );
 189   1         USBIRQ = bmSUTOK;      // Clear SUTOK IRQ
 190   1      }
 191          
 192          void ISR_Sof( void ) interrupt 0
 193          {
 194   1         EZUSB_IRQ_CLEAR( );
 195   1         USBIRQ = bmSOF;        // Clear SOF IRQ
 196   1      }
 197          
 198          void ISR_Ures( void ) interrupt 0
 199          {
 200   1      	 if ( EZUSB_HIGHSPEED( ) )
 201   1         	{
 202   2            pConfigDscr = pHighSpeedConfigDscr;
 203   2            pOtherConfigDscr = pFullSpeedConfigDscr;
 204   2         }
 205   1         else
 206   1         {
 207   2            pConfigDscr = pFullSpeedConfigDscr;
 208   2            pOtherConfigDscr = pHighSpeedConfigDscr;
 209   2         }
 210   1         
 211   1         EZUSB_IRQ_CLEAR( );
 212   1         USBIRQ = bmURES;       // Clear URES IRQ
 213   1      }
 214          
 215          void ISR_Susp( void ) interrupt 0
 216          {
 217   1         Sleep = TRUE;
 218   1         EZUSB_IRQ_CLEAR( );
 219   1         USBIRQ = bmSUSP;
 220   1      }
 221          
 222          void ISR_Highspeed( void ) interrupt 0
 223          {
 224   1         if ( EZUSB_HIGHSPEED( ) )
 225   1         {
 226   2            pConfigDscr = pHighSpeedConfigDscr;
 227   2            pOtherConfigDscr = pFullSpeedConfigDscr;
 228   2         }
 229   1         else
 230   1         {
 231   2            pConfigDscr = pFullSpeedConfigDscr;
 232   2            pOtherConfigDscr = pHighSpeedConfigDscr;
 233   2         }
 234   1      
 235   1         EZUSB_IRQ_CLEAR( );
 236   1         USBIRQ = bmHSGRANT;
 237   1      }
 238          void ISR_Ep0ack( void ) interrupt 0
 239          {
 240   1      }
 241          void ISR_Stub( void ) interrupt 0
C51 COMPILER V6.10  BULKLOOP                                                               08/22/2006 11:32:24 PAGE 5   

 242          {
 243   1      }
 244          void ISR_Ep0in( void ) interrupt 0
 245          {
 246   1      }
 247          void ISR_Ep0out( void ) interrupt 0
 248          {
 249   1      }
 250          void ISR_Ep1in( void ) interrupt 0
 251          {
 252   1      }
 253          void ISR_Ep1out( void ) interrupt 0
 254          {
 255   1      }
 256          void ISR_Ep2inout( void ) interrupt 0
 257          {
 258   1      }
 259          void ISR_Ep4inout( void ) interrupt 0
 260          {
 261   1      }
 262          void ISR_Ep6inout( void ) interrupt 0
 263          {
 264   1      }
 265          void ISR_Ep8inout( void ) interrupt 0
 266          {
 267   1      }
 268          void ISR_Ibn( void ) interrupt 0
 269          {
 270   1      }
 271          void ISR_Ep0pingnak( void ) interrupt 0
 272          {
 273   1      }
 274          void ISR_Ep1pingnak( void ) interrupt 0
 275          {
 276   1      }
 277          void ISR_Ep2pingnak( void ) interrupt 0
 278          {
 279   1      }
 280          void ISR_Ep4pingnak( void ) interrupt 0
 281          {
 282   1      }
 283          void ISR_Ep6pingnak( void ) interrupt 0
 284          {
 285   1      }
 286          void ISR_Ep8pingnak( void ) interrupt 0
 287          {
 288   1      }
 289          void ISR_Errorlimit( void ) interrupt 0
 290          {
 291   1      }
 292          void ISR_Ep2piderror( void ) interrupt 0
 293          {
 294   1      }
 295          void ISR_Ep4piderror( void ) interrupt 0
 296          {
 297   1      }
 298          void ISR_Ep6piderror( void ) interrupt 0
 299          {
 300   1      }
 301          void ISR_Ep8piderror( void ) interrupt 0
 302          {
 303   1      }
C51 COMPILER V6.10  BULKLOOP                                                               08/22/2006 11:32:24 PAGE 6   

 304          void ISR_Ep2pflag( void ) interrupt 0
 305          {
 306   1      }
 307          void ISR_Ep4pflag( void ) interrupt 0
 308          {
 309   1      }
 310          void ISR_Ep6pflag( void ) interrupt 0
 311          {
 312   1      }
 313          void ISR_Ep8pflag( void ) interrupt 0
 314          {
 315   1      }
 316          void ISR_Ep2eflag( void ) interrupt 0
 317          {
 318   1      }
 319          void ISR_Ep4eflag( void ) interrupt 0
 320          {
 321   1      }
 322          void ISR_Ep6eflag( void ) interrupt 0
 323          {
 324   1      }
 325          void ISR_Ep8eflag( void ) interrupt 0
 326          {
 327   1      }
 328          void ISR_Ep2fflag( void ) interrupt 0
 329          {
 330   1      }
 331          void ISR_Ep4fflag( void ) interrupt 0
 332          {
 333   1      }
 334          void ISR_Ep6fflag( void ) interrupt 0
 335          {
 336   1      }
 337          void ISR_Ep8fflag( void ) interrupt 0
 338          {
 339   1      }
 340          void ISR_GpifComplete( void ) interrupt 0
 341          {
 342   1      }
 343          void ISR_GpifWaveform( void ) interrupt 0
 344          {
 345   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    500    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   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 + -