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

📄 cmds.lst

📁 Comlete files for fullfile the slave USB function!
💻 LST
字号:
C51 COMPILER V7.50   CMDS                                                                  04/22/2005 11:54:44 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CMDS
OBJECT MODULE PLACED IN cmds.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cmds.c DEBUG OBJECTEXTEND SRC(.\cmds.SRC)

line level    source

   1          /*
   2          //*************************************************************************
   3          //
   4          //                  BASBA   P R O P R I E T A R Y
   5          //
   6          //           COPYRIGHT (c)   2003 BY BASBA USA.
   7          //                     --  ALL RIGHTS RESERVED  --
   8          //
   9          // File Name:   D12CI.C
  10          // Author:              Shuming Yu
  11          // Created:             10 May 2003
  12          // Modified:
  13          // Revision:            1.0
  14          //
  15          //*************************************************************************
  16          */
  17          #include <reg51.h>                /* special function register declarations   */
  18          
  19          #include "d12hal.h"
  20          #include "mainloop.h"
  21          #include "cmds.h"
  22          
  23          extern EPPFLAGS bEPPflags;
  24          
  25          void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
  26          {
  27   1              if(bEPPflags.bits.in_isr == 0)
  28   1                      DISABLE;
  29   1      
  30   1              outportb(D12_COMMAND, 0xD0);
  31   1              if(bEnable)
  32   1                      bAddress |= 0x80;
  33   1              outportb(D12_DATA, bAddress);
  34   1      
  35   1              if(bEPPflags.bits.in_isr == 0)
  36   1                      ENABLE;
  37   1      }
  38          
  39          void D12_SetEndpointEnable(unsigned char bEnable)
  40          {
  41   1              if(bEPPflags.bits.in_isr == 0)
  42   1                      DISABLE;
  43   1      
  44   1              outportb(D12_COMMAND, 0xD8);
  45   1              if(bEnable)
  46   1                      outportb(D12_DATA, 1);
  47   1              else
  48   1                      outportb(D12_DATA, 0);
  49   1      
  50   1              if(bEPPflags.bits.in_isr == 0)
  51   1                      ENABLE;
  52   1      }
  53          
  54          void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
  55          {
C51 COMPILER V7.50   CMDS                                                                  04/22/2005 11:54:44 PAGE 2   

  56   1              if(bEPPflags.bits.in_isr == 0)
  57   1                      DISABLE;
  58   1      
  59   1              outportb(D12_COMMAND, 0xF3);
  60   1              outportb(D12_DATA, bConfig);
  61   1              outportb(D12_DATA, bClkDiv);
  62   1      
  63   1              if(bEPPflags.bits.in_isr == 0)
  64   1                      ENABLE;
  65   1      }
  66          
  67          void D12_SetDMA(unsigned char bMode)
  68          {
  69   1              if(bEPPflags.bits.in_isr == 0)
  70   1                      DISABLE;
  71   1      
  72   1              outportb(D12_COMMAND, 0xFB);
  73   1              outportb(D12_DATA, bMode);
  74   1      
  75   1              if(bEPPflags.bits.in_isr == 0)
  76   1                      ENABLE;
  77   1      }
  78          
  79          unsigned short D12_ReadInterruptRegister(void)
  80          {
  81   1              unsigned char b1;
  82   1              unsigned int j;
  83   1      
  84   1              outportb(D12_COMMAND, 0xF4);
  85   1              b1 = inportb(D12_DATA);
  86   1              j = inportb(D12_DATA);
  87   1      
  88   1              j <<= 8;
  89   1              j += b1;
  90   1      
  91   1              return j;
  92   1      }
  93          
  94          unsigned char D12_SelectEndpoint(unsigned char bEndp)
  95          {
  96   1              unsigned char c;
  97   1      
  98   1              if(bEPPflags.bits.in_isr == 0)
  99   1                      DISABLE;
 100   1      
 101   1              outportb(D12_COMMAND, bEndp);
 102   1              c = inportb(D12_DATA);
 103   1      
 104   1              if(bEPPflags.bits.in_isr == 0)
 105   1                      ENABLE;
 106   1      
 107   1              return c;
 108   1      }
 109          
 110          unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
 111          {
 112   1              outportb(D12_COMMAND, 0x40 + bEndp);
 113   1              return inportb(D12_DATA);
 114   1      }
 115          
 116          unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
 117          {
C51 COMPILER V7.50   CMDS                                                                  04/22/2005 11:54:44 PAGE 3   

 118   1              unsigned char c;
 119   1      
 120   1              if(bEPPflags.bits.in_isr == 0)
 121   1                      DISABLE;
 122   1      
 123   1              outportb(D12_COMMAND, 0x80 + bEndp);
 124   1              c = inportb(D12_DATA);
 125   1      
 126   1              if(bEPPflags.bits.in_isr == 0)
 127   1                      ENABLE;
 128   1      
 129   1              return c;
 130   1      }
 131          
 132          void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
 133          {
 134   1              if(bEPPflags.bits.in_isr == 0)
 135   1                      DISABLE;
 136   1      
 137   1              outportb(D12_COMMAND, 0x40 + bEndp);
 138   1              outportb(D12_DATA, bStalled);
 139   1      
 140   1              if(bEPPflags.bits.in_isr == 0)
 141   1                      ENABLE;
 142   1      }
 143          
 144          void D12_SendResume(void)
 145          {
 146   1              outportb(D12_COMMAND, 0xF6);
 147   1      }
 148          
 149          unsigned short D12_ReadCurrentFrameNumber(void)
 150          {
 151   1              unsigned short i,j;
 152   1      
 153   1              if(bEPPflags.bits.in_isr == 0)
 154   1                      DISABLE;
 155   1      
 156   1              outportb(D12_COMMAND, 0xF5);
 157   1              i= inportb(D12_DATA);
 158   1              j = inportb(D12_DATA);
 159   1      
 160   1              i += (j<<8);
 161   1      
 162   1              if(bEPPflags.bits.in_isr == 0)
 163   1                      ENABLE;
 164   1      
 165   1              return i;
 166   1      }
 167          
 168          unsigned short D12_ReadChipID(void)
 169          {
 170   1              unsigned short i,j;
 171   1      
 172   1              if(bEPPflags.bits.in_isr == 0)
 173   1                      DISABLE;
 174   1      
 175   1              outportb(portbase+D12_COMMAND, 0xFD);
 176   1              i=inportb(portbase+D12_DATA);
 177   1              j=inportb(portbase+D12_DATA);
 178   1              i += (j<<8);
 179   1      
C51 COMPILER V7.50   CMDS                                                                  04/22/2005 11:54:44 PAGE 4   

 180   1              if(bEPPflags.bits.in_isr == 0)
 181   1                      ENABLE;
 182   1      
 183   1              return i;
 184   1      }
 185          
 186          unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
 187          {
 188   1              unsigned char i, j;
 189   1      
 190   1              if(bEPPflags.bits.in_isr == 0)
 191   1                      DISABLE;
 192   1      
 193   1              outportb(D12_COMMAND, endp);
 194   1              if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
 195   2                      if(bEPPflags.bits.in_isr == 0)
 196   2                              ENABLE;
 197   2                      return 0;
 198   2              }
 199   1      
 200   1              outportb(D12_COMMAND, 0xF0);
 201   1              j = inportb(D12_DATA);
 202   1              j = inportb(D12_DATA);
 203   1      
 204   1              if(j > len)
 205   1                      j = len;
 206   1      
 207   1              for(i=0; i<j; i++)
 208   1                      *(buf+i) = inportb(D12_DATA);
 209   1      
 210   1              outportb(D12_COMMAND, 0xF2);
 211   1      
 212   1              if(bEPPflags.bits.in_isr == 0)
 213   1                      ENABLE;
 214   1      
 215   1              return j;
 216   1      }
 217          
 218          // D12_ReadMainEndpoint() added by V2.2 to support double-buffering.
 219          // Caller should assume maxium 128 bytes of returned data.
 220          unsigned char D12_ReadMainEndpoint(unsigned char * buf)
 221          {
 222   1              unsigned char i, j, k = 0, bDblBuf = 1;
 223   1      
 224   1              if(bEPPflags.bits.in_isr == 0)
 225   1                      DISABLE;
 226   1      
 227   1      //      outportb(D12_COMMAND, 0x84);
 228   1      //      if( (inportb(D12_DATA) & 0x60) == 0x60)
 229   1                      bDblBuf = 2;
 230   1      
 231   1              while(bDblBuf) {
 232   2                      outportb(D12_COMMAND, 4);
 233   2                      if((inportb(D12_DATA) & D12_FULLEMPTY) == 0)
 234   2                              break;
 235   2      
 236   2                      outportb(D12_COMMAND, 0xF0);
 237   2                      j = inportb(D12_DATA);
 238   2                      j = inportb(D12_DATA);
 239   2      
 240   2                      for(i=0; i<j; i++)
 241   2                              *(buf+i+k) = inportb(D12_DATA);
C51 COMPILER V7.50   CMDS                                                                  04/22/2005 11:54:44 PAGE 5   

 242   2      
 243   2                      k += j;
 244   2      
 245   2                      outportb(D12_COMMAND, 0xF2);
 246   2      
 247   2                      bDblBuf --;
 248   2              }
 249   1      
 250   1              if(bEPPflags.bits.in_isr == 0)
 251   1                      ENABLE;
 252   1      
 253   1              return k;
 254   1      }
 255          
 256          unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)
 257          {
 258   1              unsigned char i;
 259   1      
 260   1              if(bEPPflags.bits.in_isr == 0)
 261   1                      DISABLE;
 262   1      
 263   1              /* Select Endpoint */
 264   1              outportb(D12_COMMAND, endp);    
 265   1              inportb(D12_DATA);                              
 266   1      
 267   1              /* Write Buffer */
 268   1              outportb(D12_COMMAND, 0xF0);
 269   1              outportb(D12_DATA, 0);                  /* first byte is reserved */
 270   1              outportb(D12_DATA, len);                /* how many actual data bytes to be sent to host */
 271   1      
 272   1              for(i=0; i<len; i++)
 273   1                      outportb(D12_DATA, *(buf+i));
 274   1      
 275   1              /* Inform D12 that the buffer is now fully loaded and ready to send data out */
 276   1              outportb(D12_COMMAND, 0xFA);    
 277   1      
 278   1              if(bEPPflags.bits.in_isr == 0)
 279   1                      ENABLE;
 280   1      
 281   1              return len;
 282   1      }
 283          
 284          /* When a SETUP token is received, the data in the endpoint buffer is locked, this means
 285             that a ClearBuffer command or Validate command has no effect till Ack_SETUP issued */
 286          void D12_AcknowledgeEndpoint(unsigned char endp)
 287          {
 288   1              outportb(D12_COMMAND, endp);
 289   1              outportb(D12_COMMAND, 0xF1);
 290   1              if(endp == 0)
 291   1                      outportb(D12_COMMAND, 0xF2);
 292   1      }
 293          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    972    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      33
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V7.50   CMDS                                                                  04/22/2005 11:54:44 PAGE 6   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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