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

📄 usb.lst

📁 usb demo controller
💻 LST
字号:
C51 COMPILER V7.00  USB                                                                    12/15/2004 13:45:58 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE USB
OBJECT MODULE PLACED IN USB.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE USB.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <intrins.h>
   2          #include "usb.h"
   3          
   4          void ServiceSetupPacket(void)
   5          {
   6   1        s = RequestType;
   7   1        SendData = sb7;
   8   1        if ((sb6 & sb4 & sb3 & sb2) | (sb1 & sb0) != 0)
   9   1        {
  10   2          Invalid();
  11   2        }
  12   1        else
  13   1        {
  14   2          if (sb5 == 1)
  15   2            s = 0x03;
  16   2          s &= 0x03;
  17   2      
  18   2          s = _cror_ (s, 4);
  19   2      
  20   2          i = Request;
  21   2          if (i > 15)
  22   2          {
  23   3            Invalid();
  24   3          }
  25   2          else
  26   2          {
  27   3            i &= 0x0f;
  28   3            s |= i;
  29   3            ReplyCount = 1;
  30   3            ReplyBuffer[0] = 0;
  31   3            ReplyBuffer[1] = 0;
  32   3            SetAddr = 0;
  33   3            STALL = 0;
  34   3            IsDescriptor = 0;
  35   3            switch (s) {
  36   4            case 0x00:
  37   4              DeviceGetStatus();
  38   4              break;
  39   4            case 0x01:
  40   4              DeviceClearFeature();
  41   4              break;
  42   4            case 0x03:
  43   4              DeviceSetFeature();
  44   4              break;
  45   4            case 0x05:
  46   4              SetAddress();
  47   4              break;
  48   4            case 0x06:
  49   4              GetDescriptor();
  50   4              break;
  51   4            case 0x07:
  52   4              SetDescriptor();
  53   4              break;
  54   4            case 0x08:
  55   4              GetConfiguration();
C51 COMPILER V7.00  USB                                                                    12/15/2004 13:45:58 PAGE 2   

  56   4              break;
  57   4            case 0x09:
  58   4              SetConfiguration();
  59   4              break;
  60   4      
  61   4            case 0x10:
  62   4              InterfaceGetStatus();
  63   4              break;
  64   4            case 0x11:
  65   4              InterfaceClearFeature();
  66   4              break;
  67   4            case 0x13:
  68   4              InterfaceSetFeature();
  69   4              break;
  70   4            case 0x16:
  71   4              GetClassDescriptor();
  72   4              break;
  73   4            case 0x17:
  74   4              SetClassDescriptor();
  75   4              break;
  76   4            case 0x1a:
  77   4              GetInterface();
  78   4              break;
  79   4            case 0x1b:
  80   4              SetInterface();
  81   4              break;
  82   4             case 0x20:
  83   4              EndpointGetStatus();
  84   4              break;
  85   4            case 0x21:
  86   4              EndpointClearFeature();
  87   4              break;
  88   4            case 0x23:
  89   4              EndpointSetFeature();
  90   4              break;
  91   4            case 0x2c:
  92   4              EndpointSyncFrame();
  93   4              break;
  94   4      
  95   4            case 0x31:
  96   4              GetReport();
  97   4              break;
  98   4            case 0x32:
  99   4              GetIdle();
 100   4              break;
 101   4            case 0x33:
 102   4              GetProtocol();
 103   4              break;
 104   4            case 0x34:
 105   4              GetProtocol();
 106   4              break;
 107   4            case 0x39:
 108   4              SetReport();
 109   4              break;
 110   4            case 0x3a:
 111   4              SetIdle();
 112   4              break;
 113   4            case 0x3b:
 114   4              SetProtocol();
 115   4              break;
 116   4      
 117   4            default:
C51 COMPILER V7.00  USB                                                                    12/15/2004 13:45:58 PAGE 3   

 118   4              ;
 119   4            }
 120   3          }  
 121   2        }
 122   1      }
 123          
 124          void DeviceGetStatus(void)
 125          {
 126   1        *ReplyBuffer = 1;
 127   1      }
 128          
 129          void DeviceClearFeature(void)
 130          {
 131   1        Invalid();
 132   1      }
 133          
 134          void DeviceSetFeature(void)
 135          {
 136   1        Invalid();
 137   1      }
 138          
 139          void SetAddress(void)
 140          {
 141   1        SetAddr = 1;
 142   1      }
 143          
 144          void GetDescriptor(void)
 145          {
 146   1        IsDescriptor = 1;
 147   1      /*
 148   1        if (i != 1)
 149   1        {
 150   1        Output(i);
 151   1        delay(4000);
 152   1        }
 153   1      */
 154   1        switch (wValueHigh) {
 155   2        case 1:
 156   2          PTR = DeviceDescriptor;
 157   2          ReturnLength = *DeviceDescriptor;
 158   2          break;
 159   2        case 2:
 160   2          PTR = ConfigurationDescriptor;
 161   2          ReturnLength = ConfigLength;
 162   2          break;
 163   2        case 3:
 164   2      //    PTR = ConfigurationDescriptor;
 165   2          PTR = String;
 166   2          i = wValueLow;
 167   2          while (i != 0 && *PTR != 0)
 168   2          {
 169   3            PTR += *PTR;
 170   3            i--;
 171   3          }
 172   2          if (i == 0)
 173   2          {
 174   3            ReturnLength = *PTR;
 175   3          }
 176   2          else if (*PTR == 0)
 177   2          {
 178   3            Invalid();
 179   3          }
C51 COMPILER V7.00  USB                                                                    12/15/2004 13:45:58 PAGE 4   

 180   2          break;
 181   2        default:
 182   2          Invalid();
 183   2        }
 184   1      }
 185          
 186          void SetDescriptor(void)
 187          {
 188   1        Invalid();
 189   1      }
 190          
 191          void GetConfiguration(void)
 192          {
 193   1        *ReplyBuffer = CurrentConfiguration;
 194   1      }
 195          
 196          void SetConfiguration(void)
 197          {
 198   1        switch (wValueLow) {
 199   2        case 0:
 200   2          Configured = 0;
 201   2          CurrentConfiguration = 0;
 202   2          break;
 203   2        case 1:
 204   2          Configured = 1;
 205   2          CurrentConfiguration = 1;
 206   2          break;
 207   2        default:
 208   2          ;
 209   2        }
 210   1      }
 211          
 212          void InterfaceGetStatus(void)
 213          {
 214   1        ReplyCount = 2;
 215   1      }
 216          
 217          void InterfaceClearFeature(void)
 218          {
 219   1        Invalid();
 220   1      }
 221          
 222          void InterfaceSetFeature(void)
 223          {
 224   1        Invalid();
 225   1      }
 226          
 227          void GetClassDescriptor(void)
 228          {
 229   1        IsDescriptor = 1;
 230   1        i = wValueHigh;
 231   1        i -= 0x21;
 232   1        if (i == 0)
 233   1        {
 234   2          PTR = HIDDescriptor;
 235   2          ReturnLength = *HIDDescriptor;
 236   2        }
 237   1        else
 238   1        {
 239   2          i--;
 240   2          if (i == 0)
 241   2          {
C51 COMPILER V7.00  USB                                                                    12/15/2004 13:45:58 PAGE 5   

 242   3            PTR = ReportDescriptor;
 243   3            ReturnLength = ReportLength;
 244   3          }
 245   2          else
 246   2            Invalid();
 247   2        }
 248   1      }
 249          
 250          void SetClassDescriptor(void)
 251          {
 252   1        Invalid();
 253   1      }
 254          
 255          void GetInterface(void)
 256          {
 257   1        Invalid();
 258   1      }
 259          
 260          void SetInterface(void)
 261          {
 262   1        Invalid();
 263   1      }
 264          
 265          void EndpointGetStatus(void)
 266          {
 267   1        ReplyCount = 2;
 268   1      }
 269          
 270          void EndpointClearFeature(void)
 271          {
 272   1        Invalid();
 273   1      }
 274          
 275          void EndpointSetFeature(void)
 276          {
 277   1        Invalid();
 278   1      }
 279          
 280          void EndpointSyncFrame(void)
 281          {
 282   1        Invalid();
 283   1      }
 284          
 285          void GetReport(void)
 286          {
 287   1        if (Configured == 1)
 288   1        {
 289   2          *ReplyBuffer = 0x42;
 290   2        }
 291   1        else
 292   1          Invalid();
 293   1      }
 294          
 295          void GetIdle(void)
 296          {
 297   1        Invalid();
 298   1      }
 299          
 300          void GetProtocol(void)
 301          {
 302   1        Invalid();
 303   1      }
C51 COMPILER V7.00  USB                                                                    12/15/2004 13:45:58 PAGE 6   

 304          
 305          void SetReport(void)
 306          {
 307   1        if (Configured == 1)
 308   1        {
 309   2          Wait4D();
 310   2        }
 311   1        else
 312   1          Invalid();
 313   1      }
 314          
 315          void SetIdle(void)
 316          {
 317   1        Invalid();
 318   1      }
 319          
 320          void SetProtocol(void)
 321          {
 322   1        Invalid();
 323   1      }
 324          
 325          void Invalid(void)
 326          {
 327   1        STALL = 1;
 328   1      }


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