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

📄 tcxmaster.lst

📁 used for fx2 usb design
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.02b   TCXMASTER                    04/24/2005 19:33:18 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE TCXMASTER
OBJECT MODULE PLACED IN tcxmaster.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tcxmaster.c OPTIMIZE(6,SPEED) DEBUG
                    - OBJECTEXTEND CODE SYMBOLS PAGEWIDTH(80)

stmt level    source

   1          #pragma NOIV                    // Do not generate interrupt vecto
             -rs
   2          //----------------------------------------------------------------
             --------------
   3          //   File:      tcxmaster.c
   4          //   Contents:  Hooks required to implement USB peripheral functio
             -n.
   5          //              Code written for FX2 56-pin REVD...
   6          //              This firmware is used to test the FX ext. master C
             -Y3682 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          // EZUSB FX2 PORTA = slave fifo enable(s), when IFCFG[1:0]=11
  22          sbit PA0 = IOA ^ 0;             // alt. func., INT0#
  23          sbit PA1 = IOA ^ 1;             // alt. func., INT1#
  24          // sbit PA2 = IOA ^ 2;          // is SLOE
  25          sbit PA3 = IOA ^ 3;             // alt. func., WU2
  26          // sbit PA4 = IOA ^ 4;          // is FIFOADR0
  27          // sbit PA5 = IOA ^ 5;          // is FIFOADR1
  28          // sbit PA6 = IOA ^ 6;          // is PKTEND
  29          // sbit PA7 = IOA ^ 7;          // is FLAGD
  30          
  31          // EZUSB FX2 PORTC i/o...       port NA for 56-pin FX2
  32          // sbit PC0 = IOC ^ 0;
  33          // sbit PC1 = IOC ^ 1;
  34          // sbit PC2 = IOC ^ 2;
  35          // sbit PC3 = IOC ^ 3;
  36          // sbit PC4 = IOC ^ 4;
  37          // sbit PC5 = IOC ^ 5;
  38          // sbit PC6 = IOC ^ 6;
  39          // sbit PC7 = IOC ^ 7;
  40          
  41          // EZUSB FX2 PORTB = FD[7:0], when IFCFG[1:0]=11
  42          // sbit PB0 = IOB ^ 0;
  43          // sbit PB1 = IOB ^ 1;
  44          // sbit PB2 = IOB ^ 2;
  45          // sbit PB3 = IOB ^ 3;
  46          // sbit PB4 = IOB ^ 4;
  47          // sbit PB5 = IOB ^ 5;
  48          // sbit PB6 = IOB ^ 6;
  49          // sbit PB7 = IOB ^ 7;
C51 COMPILER V7.02b   TCXMASTER                    04/24/2005 19:33:18 PAGE 2   

  50          
  51          // EZUSB FX2 PORTD = FD[15:8], when IFCFG[1:0]=11 and WORDWIDE=1
  52          //sbit PD0 = IOD ^ 0;
  53          //sbit PD1 = IOD ^ 1;
  54          //sbit PD2 = IOD ^ 2;
  55          //sbit PD3 = IOD ^ 3;
  56          //sbit PD4 = IOD ^ 4;
  57          //sbit PD5 = IOD ^ 5;
  58          //sbit PD6 = IOD ^ 6;
  59          //sbit PD7 = IOD ^ 7;
  60          
  61          // EZUSB FX2 PORTE is not bit-addressable...
  62          
  63          //----------------------------------------------------------------
             --------------
  64          // Task Dispatcher hooks
  65          //   The following hooks are called by the task dispatcher.
  66          //----------------------------------------------------------------
             --------------
  67          void TD_Init( void )
  68          { // Called once at startup
  69   1      
  70   1        CPUCS = 0x10;                 // CLKSPD[1:0]=10, for 48MHz opera
             -tion
  71   1      
  72   1        IFCONFIG = 0xCB;
  73   1        // IFCLKSRC=1   , FIFOs executes on internal clk source
  74   1        // xMHz=1       , 48MHz internal clk rate
  75   1        // IFCLKOE=0    , Don't drive IFCLK pin signal at 48MHz
  76   1        // IFCLKPOL=0   , Don't invert IFCLK pin signal from internal cl
             -k
  77   1        // ASYNC=1      , master samples asynchronous
  78   1        // GSTATE=0     , Don't drive GPIF states out on PORTE[2:0], deb
             -ug WF
  79   1        // IFCFG[1:0]=11, FX2 in slave FIFO mode
  80   1      
  81   1      
  82   1        // Registers which require a synchronization delay, see section 
             -15.14
  83   1        // FIFORESET        FIFOPINPOLAR
  84   1        // INPKTEND         OUTPKTEND
  85   1        // EPxBCH:L         REVCTL
  86   1        // GPIFTCB3         GPIFTCB2
  87   1        // GPIFTCB1         GPIFTCB0
  88   1        // EPxFIFOPFH:L     EPxAUTOINLENH:L
  89   1        // EPxFIFOCFG       EPxGPIFFLGSEL
  90   1        // PINFLAGSxx       EPxFIFOIRQ
  91   1        // EPxFIFOIE        GPIFIRQ
  92   1        // GPIFIE           GPIFADRH:L
  93   1        // UDMACRCH:L       EPxGPIFTRIG
  94   1        // GPIFTRIG
  95   1        
  96   1        // Note: The pre-REVE EPxGPIFTCH/L register are affected, as wel
             -l...
  97   1        //      ...these have been replaced by GPIFTC[B3:B0] registers
  98   1      
  99   1        SYNCDELAY;
 100   1        FIFORESET = 0x80;             // activate NAK-ALL to avoid race 
             -conditions
 101   1        SYNCDELAY;                    // see TRM section 15.14
 102   1        FIFORESET = 0x02;             // reset, FIFO 2
 103   1        SYNCDELAY;                    // 
C51 COMPILER V7.02b   TCXMASTER                    04/24/2005 19:33:18 PAGE 3   

 104   1        FIFORESET = 0x04;             // reset, FIFO 4
 105   1        SYNCDELAY;                    // 
 106   1        FIFORESET = 0x06;             // reset, FIFO 6
 107   1        SYNCDELAY;                    // 
 108   1        FIFORESET = 0x08;             // reset, FIFO 8
 109   1        SYNCDELAY;                    // 
 110   1        FIFORESET = 0x00;             // deactivate NAK-ALL
 111   1      
 112   1        SYNCDELAY;
 113   1        PINFLAGSAB = 0x00; //0x98;            // FLAGA - fixed EP2EF, FL
             -AGB - fixed EP4EF
 114   1        SYNCDELAY;
 115   1        PINFLAGSCD = 0x00; //0xFE;            // FLAGC - fixed EP6FF, FL
             -AGD - fixed EP8FF
 116   1        SYNCDELAY;
 117   1        PORTACFG |= 0x80;             // FLAGD, set alt. func. of PA7 pi
             -n
 118   1        SYNCDELAY;
 119   1        FIFOPINPOLAR = 0x00;          // all signals active low
 120   1        SYNCDELAY;
 121   1        
 122   1        // handle the case where we were already in AUTO mode...
 123   1        EP2FIFOCFG = 0x01;            // AUTOOUT=0, WORDWIDE=0
 124   1        SYNCDELAY;
 125   1        
 126   1        EP2FIFOCFG = 0x11;            // AUTOOUT=1, WORDWIDE=0
 127   1        SYNCDELAY;
 128   1        
 129   1        // handle the case where we were already in AUTO mode...
 130   1        EP4FIFOCFG = 0x01;            // AUTOOUT=0, WORDWIDE=0
 131   1        SYNCDELAY;
 132   1        
 133   1        EP4FIFOCFG = 0x11;            // AUTOOUT=1, WORDWIDE=0
 134   1        SYNCDELAY;
 135   1        
 136   1        EP6FIFOCFG = 0x0D;            // AUTOIN=1, ZEROLENIN=1, WORDWIDE
             -=0
 137   1        SYNCDELAY;
 138   1        EP8FIFOCFG = 0x0d;            // AUTOIN=1, ZEROLENIN=1, WORDWIDE
             -=0
 139   1      
 140   1       /*
 141   1       SYNCDELAY;
 142   1       EP6AUTOINLENH = 0x02;
 143   1       SYNCDELAY;
 144   1       EP6AUTOINLENL = 0x00;
 145   1       */
 146   1       }
 147          
 148          void TD_Poll( void )
 149          { // Called repeatedly while the device is idle
 150   1      
 151   1        // ...nothing to do... slave fifo's are in AUTO mode...
 152   1      
 153   1      }
 154          
 155          BOOL TD_Suspend( void )          
 156          { // Called before the device goes into suspend mode
 157   1         return( TRUE );
 158   1      }
 159          
 160          BOOL TD_Resume( void )          
C51 COMPILER V7.02b   TCXMASTER                    04/24/2005 19:33:18 PAGE 4   

 161          { // Called after the device resumes
 162   1         return( TRUE );
 163   1      }
 164          
 165          //----------------------------------------------------------------
             --------------
 166          // Device Request hooks
 167          //   The following hooks are called by the end point 0 device requ
             -est parser.
 168          //----------------------------------------------------------------
             --------------
 169          BOOL DR_GetDescriptor( void )
 170          {
 171   1         return( TRUE );
 172   1      }
 173          
 174          BOOL DR_SetConfiguration( void )   
 175          { // Called when a Set Configuration command is received
 176   1        
 177   1        if( EZUSB_HIGHSPEED( ) )
 178   1        { // ...FX2 in high speed mode
 179   2          EP6AUTOINLENH = 0x02;
 180   2          SYNCDELAY;
 181   2          EP8AUTOINLENH = 0x02;   // set core AUTO commit len = 512 byte
             -s
 182   2          SYNCDELAY;
 183   2          EP6AUTOINLENL = 0x00;
 184   2          SYNCDELAY;
 185   2          EP8AUTOINLENL = 0x00;
 186   2        }
 187   1        else
 188   1        { // ...FX2 in full speed mode
 189   2          EP6AUTOINLENH = 0x00;
 190   2          SYNCDELAY;
 191   2          EP8AUTOINLENH = 0x00;   // set core AUTO commit len = 64 bytes
 192   2          SYNCDELAY;
 193   2          EP6AUTOINLENL = 0x40;
 194   2          SYNCDELAY;
 195   2          EP8AUTOINLENL = 0x40;
 196   2        }
 197   1            
 198   1        Configuration = SETUPDAT[ 2 ];
 199   1        return( TRUE );        // Handled by user code
 200   1      }
 201          
 202          BOOL DR_GetConfiguration( void )   
 203          { // Called when a Get Configuration command is received
 204   1         EP0BUF[ 0 ] = Configuration;
 205   1         EP0BCH = 0;
 206   1         EP0BCL = 1;
 207   1         return(TRUE);          // Handled by user code
 208   1      }
 209          
 210          BOOL DR_SetInterface( void )       
 211          { // Called when a Set Interface command is received
 212   1         AlternateSetting = SETUPDAT[ 2 ];
 213   1         return( TRUE );        // Handled by user code
 214   1      }
 215          
 216          BOOL DR_GetInterface( void )       
 217          { // Called when a Set Interface command is received
 218   1         EP0BUF[ 0 ] = AlternateSetting;
C51 COMPILER V7.02b   TCXMASTER                    04/24/2005 19:33:18 PAGE 5   

 219   1         EP0BCH = 0;
 220   1         EP0BCL = 1;
 221   1         return( TRUE );        // Handled by user code
 222   1      }
 223          
 224          BOOL DR_GetStatus( void )
 225          {
 226   1         return( TRUE );
 227   1      }
 228          
 229          BOOL DR_ClearFeature( void )
 230          {
 231   1         return( TRUE );
 232   1      }
 233          
 234          BOOL DR_SetFeature( void )
 235          {
 236   1         return( TRUE );
 237   1      }
 238          
 239          BOOL DR_VendorCmnd( void )
 240          {
 241   1        return( TRUE );

⌨️ 快捷键说明

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