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

📄 fpusb.lst

📁 文件中是CY7C68013 USB2.0芯片的驱动程序
💻 LST
字号:
C51 COMPILER V7.20   FPUSB                                                                 01/07/2009 09:48:47 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE FPUSB
OBJECT MODULE PLACED IN FPUSB.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FPUSB.c BROWSE INCDIR(C:\Cypress\USB\Target\Inc\) DEBUG OBJECTEXTEND

line level    source

   1          #pragma NOIV               // Do not generate interrupt vectors
   2          
   3          #include "fx2.h"
   4          #include "fx2regs.h"
   5          #include "fx2sdly.h"            // SYNCDELAY macro
   6          
   7          extern BOOL GotSUD;             // Received setup data flag
   8          extern BOOL Sleep;
   9          extern BOOL Rwuen;
  10          extern BOOL Selfpwr;
  11          
  12          BYTE Configuration;             // Current configuration
  13          BYTE AlternateSetting;          // Alternate settings
  14          
  15          //-----------------------------------------------------------------------------
  16          // Constants
  17          //-----------------------------------------------------------------------------
  18          #define VR_UPLOAD           0xc0
  19          #define VR_DOWNLOAD         0x40
  20          
  21          #define VR_ANCHOR_DLD       0xa0 // handled by core
  22          
  23          #define VR_Reset        0xb0
  24          #define VR_Intr         0xb1
  25          #define VR_Chn_Sel      0xb2
  26          #define VR_test_WR              0xb3
  27          
  28          //-----------------------------------------------------------------------------
  29          // Task Dispatcher hooks
  30          //   The following hooks are called by the task dispatcher.
  31          //-----------------------------------------------------------------------------
  32          
  33          sbit PA0 = IOA ^ 0;
  34          sbit PA1 = IOA ^ 1;
  35          sbit PA2 = IOA ^ 2;
  36          sbit PA3 = IOA ^ 3;
  37          sbit PA4 = IOA ^ 4;
  38          sbit PA5 = IOA ^ 5;
  39          sbit PA6 = IOA ^ 6;
  40          sbit PA7 = IOA ^ 7;
  41          
  42          void TD_Init(void)              // Called once at startup
  43          {
  44   1        // set the CPU clock to 48MHz
  45   1        CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ;
  46   1      
  47   1        SYNCDELAY;
  48   1        IFCONFIG = 0xcb;    // slave fifo, internal clk, ifclk not output, async
  49   1      
  50   1        SYNCDELAY;
  51   1        EP2CFG = 0xA2; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x
  52   1      
  53   1        SYNCDELAY;
  54   1        FIFORESET = 0x80; // reset all FIFOs
  55   1        SYNCDELAY;
C51 COMPILER V7.20   FPUSB                                                                 01/07/2009 09:48:47 PAGE 2   

  56   1        FIFORESET = 0x02;
  57   1        SYNCDELAY;
  58   1        FIFORESET = 0x04;
  59   1        SYNCDELAY;
  60   1        FIFORESET = 0x06;
  61   1        SYNCDELAY;
  62   1        FIFORESET = 0x08;
  63   1        SYNCDELAY;
  64   1        FIFORESET = 0x00;
  65   1      
  66   1              SYNCDELAY;
  67   1              EP2FIFOCFG = 0x00;
  68   1              SYNCDELAY;
  69   1              EP2FIFOCFG = 0x11; // EP2 is AUTOOUT=1, AUTOIN=0, ZEROLEN=0, WORDWIDE=1
  70   1              
  71   1              SYNCDELAY;
  72   1              OUTPKTEND = 0x82;
  73   1              SYNCDELAY;
  74   1              OUTPKTEND = 0x82;
  75   1      
  76   1        SYNCDELAY;
  77   1        EP6AUTOINLENH = 2;  // EP6 auto in length: 512
  78   1        SYNCDELAY;
  79   1        EP6AUTOINLENL = 0;
  80   1        
  81   1      
  82   1        SYNCDELAY;
  83   1        EP6FIFOCFG = 0x09;  // EP6 is AUTOOUT=0, AUTOIN=1, ZEROLEN=0, WORDWIDE=1
  84   1      
  85   1        SYNCDELAY;
  86   1        EP4FIFOCFG = 0x00;
  87   1      
  88   1        SYNCDELAY;
  89   1        EP8FIFOCFG = 0x00;
  90   1      
  91   1        SYNCDELAY;
  92   1        PINFLAGSAB = 0x00; // defines FLAGA as prog-level flag, pointed to by FIFOADR[1:0]
  93   1                           // FLAGB as full flag, pointed to by FIFOADR[1:0]
  94   1      
  95   1        SYNCDELAY;
  96   1        PINFLAGSCD = 0x00; // FLAGC as empty flag
  97   1      
  98   1        SYNCDELAY;
  99   1        PORTACFG = 0x00;   // used PA7/FLAGD as a port pin
 100   1      
 101   1        SYNCDELAY;
 102   1        FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low
 103   1        
 104   1        OEA = 0x80;
 105   1        IOA = 0x00;
 106   1      }
 107          
 108          void TD_Poll(void)              // Called repeatedly while the device is idle
 109          {
 110   1         // if there is some data in EP2 OUT, re-arm it
 111   1         if(!(EP2468STAT & bmEP2EMPTY))
 112   1         {
 113   2                        //OUTPKTEND = 0x02; 
 114   2                SYNCDELAY;
 115   2         }
 116   1      }
 117          
C51 COMPILER V7.20   FPUSB                                                                 01/07/2009 09:48:47 PAGE 3   

 118          BOOL TD_Suspend(void)          // Called before the device goes into suspend mode
 119          {
 120   1         return(TRUE);
 121   1      }
 122          
 123          BOOL TD_Resume(void)          // Called after the device resumes
 124          {
 125   1         return(TRUE);
 126   1      }
 127          
 128          //-----------------------------------------------------------------------------
 129          // Device Request hooks
 130          //   The following hooks are called by the end point 0 device request parser.
 131          //-----------------------------------------------------------------------------
 132          
 133          BOOL DR_GetDescriptor(void)
 134          {
 135   1         return(TRUE);
 136   1      }
 137          
 138          BOOL DR_SetConfiguration(void)   // Called when a Set Configuration command is received
 139          {
 140   1         Configuration = SETUPDAT[2];
 141   1         return(TRUE);            // Handled by user code
 142   1      }
 143          
 144          BOOL DR_GetConfiguration(void)   // Called when a Get Configuration command is received
 145          {
 146   1         EP0BUF[0] = Configuration;
 147   1         EP0BCH = 0;
 148   1         EP0BCL = 1;
 149   1         return(TRUE);            // Handled by user code
 150   1      }
 151          
 152          BOOL DR_SetInterface(void)       // Called when a Set Interface command is received
 153          {
 154   1         AlternateSetting = SETUPDAT[2];
 155   1         return(TRUE);            // Handled by user code
 156   1      }
 157          
 158          BOOL DR_GetInterface(void)       // Called when a Set Interface command is received
 159          {
 160   1         EP0BUF[0] = AlternateSetting;
 161   1         EP0BCH = 0;
 162   1         EP0BCL = 1;
 163   1         return(TRUE);            // Handled by user code
 164   1      }
 165          
 166          BOOL DR_GetStatus(void)
 167          {
 168   1         return(TRUE);
 169   1      }
 170          
 171          BOOL DR_ClearFeature(void)
 172          {
 173   1         return(TRUE);
 174   1      }
 175          
 176          BOOL DR_SetFeature(void)
 177          {
 178   1         return(TRUE);
 179   1      }
C51 COMPILER V7.20   FPUSB                                                                 01/07/2009 09:48:47 PAGE 4   

 180          
 181          BOOL DR_VendorCmnd(void)
 182          {
 183   1      //      BYTE i;
 184   1              int i;
 185   1              switch(SETUPDAT[1])
 186   1          {
 187   2                      case VR_Reset:
 188   2                              TD_Init();
 189   2                 break;
 190   2      
 191   2                      case VR_Intr:
 192   2                              PA7 = 1;
 193   2                              for(i=0;i<10;i++);
 194   2                              PA7 = 0;
 195   2                         break;
 196   2      
 197   2                      case VR_Chn_Sel:
 198   2                              *(BYTE xdata *)0x4001 = SETUPDAT[2];
 199   2                         break;
 200   2      
 201   2                      case VR_test_WR:
 202   2                              *(BYTE xdata *)0x2001 = 0x02;
 203   2                         break;
 204   2          }
 205   1      
 206   1              return(FALSE); // no error; command handled OK
 207   1      }
 208          
 209          //-----------------------------------------------------------------------------
 210          // USB Interrupt Handlers
 211          //   The following functions are called by the USB interrupt jump table.
 212          //-----------------------------------------------------------------------------
 213          
 214          // Setup Data Available Interrupt Handler
 215          void ISR_Sudav(void) interrupt 0
 216          {
 217   1         GotSUD = TRUE;            // Set flag
 218   1         EZUSB_IRQ_CLEAR();
 219   1         USBIRQ = bmSUDAV;         // Clear SUDAV IRQ
 220   1      }
 221          
 222          // Setup Token Interrupt Handler
 223          void ISR_Sutok(void) interrupt 0
 224          {
 225   1         EZUSB_IRQ_CLEAR();
 226   1         USBIRQ = bmSUTOK;         // Clear SUTOK IRQ
 227   1      }
 228          
 229          void ISR_Sof(void) interrupt 0
 230          {
 231   1         EZUSB_IRQ_CLEAR();
 232   1         USBIRQ = bmSOF;            // Clear SOF IRQ
 233   1      }
 234          
 235          void ISR_Ures(void) interrupt 0
 236          {
 237   1         if (EZUSB_HIGHSPEED())
 238   1         {
 239   2            pConfigDscr = pHighSpeedConfigDscr;
 240   2            pOtherConfigDscr = pFullSpeedConfigDscr;
 241   2         }
C51 COMPILER V7.20   FPUSB                                                                 01/07/2009 09:48:47 PAGE 5   

 242   1         else
 243   1         {
 244   2            pConfigDscr = pFullSpeedConfigDscr;
 245   2            pOtherConfigDscr = pHighSpeedConfigDscr;
 246   2         }
 247   1         
 248   1         EZUSB_IRQ_CLEAR();
 249   1         USBIRQ = bmURES;         // Clear URES IRQ
 250   1      }
 251          
 252          void ISR_Susp(void) interrupt 0
 253          {
 254   1         Sleep = TRUE;
 255   1         EZUSB_IRQ_CLEAR();
 256   1         USBIRQ = bmSUSP;
 257   1      }
 258          
 259          void ISR_Highspeed(void) interrupt 0
 260          {
 261   1         if (EZUSB_HIGHSPEED())
 262   1         {
 263   2            pConfigDscr = pHighSpeedConfigDscr;
 264   2            pOtherConfigDscr = pFullSpeedConfigDscr;
 265   2         }
 266   1         else
 267   1         {
 268   2            pConfigDscr = pFullSpeedConfigDscr;
 269   2            pOtherConfigDscr = pHighSpeedConfigDscr;
 270   2         }
 271   1      
 272   1         EZUSB_IRQ_CLEAR();
 273   1         USBIRQ = bmHSGRANT;
 274   1      }
 275          void ISR_Ep0ack(void) interrupt 0
 276          {
 277   1      }
 278          void ISR_Stub(void) interrupt 0
 279          {
 280   1      }
 281          void ISR_Ep0in(void) interrupt 0
 282          {
 283   1      }
 284          void ISR_Ep0out(void) interrupt 0
 285          {
 286   1      }
 287          void ISR_Ep1in(void) interrupt 0
 288          {
 289   1      }
 290          void ISR_Ep1out(void) interrupt 0
 291          {
 292   1      }
 293          void ISR_Ep2inout(void) interrupt 0
 294          {
 295   1      }
 296          void ISR_Ep4inout(void) interrupt 0
 297          {
 298   1      }
 299          void ISR_Ep6inout(void) interrupt 0
 300          {
 301   1      }
 302          void ISR_Ep8inout(void) interrupt 0
 303          {
C51 COMPILER V7.20   FPUSB                                                                 01/07/2009 09:48:47 PAGE 6   

 304   1      }
 305          void ISR_Ibn(void) interrupt 0
 306          {
 307   1      }
 308          void ISR_Ep0pingnak(void) interrupt 0
 309          {
 310   1      }
 311          void ISR_Ep1pingnak(void) interrupt 0
 312          {
 313   1      }
 314          void ISR_Ep2pingnak(void) interrupt 0
 315          {
 316   1      }
 317          void ISR_Ep4pingnak(void) interrupt 0
 318          {
 319   1      }
 320          void ISR_Ep6pingnak(void) interrupt 0
 321          {
 322   1      }
 323          void ISR_Ep8pingnak(void) interrupt 0
 324          {
 325   1      }
 326          void ISR_Errorlimit(void) interrupt 0
 327          {
 328   1      }
 329          void ISR_Ep2piderror(void) interrupt 0
 330          {
 331   1      }
 332          void ISR_Ep4piderror(void) interrupt 0
 333          {
 334   1      }
 335          void ISR_Ep6piderror(void) interrupt 0
 336          {
 337   1      }
 338          void ISR_Ep8piderror(void) interrupt 0
 339          {
 340   1      }
 341          void ISR_Ep2pflag(void) interrupt 0
 342          {
 343   1      }
 344          void ISR_Ep4pflag(void) interrupt 0
 345          {
 346   1      }
 347          void ISR_Ep6pflag(void) interrupt 0
 348          {
 349   1      }
 350          void ISR_Ep8pflag(void) interrupt 0
 351          {
 352   1      }
 353          void ISR_Ep2eflag(void) interrupt 0
 354          {
 355   1      }
 356          void ISR_Ep4eflag(void) interrupt 0
 357          {
 358   1      }
 359          void ISR_Ep6eflag(void) interrupt 0
 360          {
 361   1      }
 362          void ISR_Ep8eflag(void) interrupt 0
 363          {
 364   1      }
 365          void ISR_Ep2fflag(void) interrupt 0
C51 COMPILER V7.20   FPUSB                                                                 01/07/2009 09:48:47 PAGE 7   

 366          {
 367   1      }
 368          void ISR_Ep4fflag(void) interrupt 0
 369          {
 370   1      }
 371          void ISR_Ep6fflag(void) interrupt 0
 372          {
 373   1      }
 374          void ISR_Ep8fflag(void) interrupt 0
 375          {
 376   1      }
 377          void ISR_GpifComplete(void) interrupt 0
 378          {
 379   1      }
 380          void ISR_GpifWaveform(void) interrupt 0
 381          {
 382   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    538    ----
   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 + -