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

📄 usbimpl.lst

📁 C8051F120与串口、并口、D12、USB、LCD应用
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.01  USBIMPL                                                                06/30/2007 11:42:51 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE USBIMPL
OBJECT MODULE PLACED IN UsbImpl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE UsbImpl.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*-----------------------------------------------------------------------
   2          
   3            Copyright (C) 2006 Beijing Jiaotong University, Computer Science
   4            
   5            Creator: xiaoqiang
   6                  
   7            File: usbImpl.c
   8                    
   9            Description:
  10                  interpret USB protocol
  11                          
  12            History:
  13              2006-7-28 xiaoqiang created
  14              2006-9-19 xiaoqiang add a switch to hid code
  15                            
  16          ------------------------------------------------------------------------*/
  17          #include <d12interface.h>
  18          #include <usb.h>
  19          //#include <c8051f120.h>
  20          #include <uart0.h>
  21          
  22          EPPFLAGS        bEppflags;
  23          #define NUM_ENDPOINTS 4
  24          
  25          #ifdef  _HID_DEVICE
  26          #define CONFIG_DESCRIPTOR_LENGTH sizeof(CONFIG_DESCRIPTOR) \
  27                  + sizeof(INTERFACE_DESCRIPTOR) \
  28                  + sizeof(HID_DESCRIPTOR)        \
  29                  + (NUM_ENDPOINTS *sizeof(ENDPOINT_DESCRIPTOR))
  30          #else
              #define CONFIG_DESCRIPTOR_LENGTH sizeof(CONFIG_DESCRIPTOR) \
                      + sizeof(INTERFACE_DESCRIPTOR) \
                      + (NUM_ENDPOINTS *sizeof(ENDPOINT_DESCRIPTOR))
              #endif //_HID_DEVICE
  35          
  36          extern CONTROL_XFER ControlData;
  37          
  38          code DEVICE_DESCRIPTOR DeviceDescr =
  39          {
  40                  sizeof(DEVICE_DESCRIPTOR),
  41                          USB_DEVICE_DESCRIPTOR_TYPE,
  42                          SWAP(0x0110),
  43                          0, //CLASS CODE
  44                          0, //SUBCLASS code
  45                          0,      //protocol
  46                          EP0_PACKET_SIZE,        //max ep0 packet size
  47                          SWAP(0x045e),   //vendor id
  48                          SWAP(0x930a),   //product id
  49                          SWAP(0x0100),   //device version
  50                          1, //manufacturer 
  51                          2, //product
  52                          3,      //serial number
  53                          1                       //config num
  54          };
  55          
C51 COMPILER V7.01  USBIMPL                                                                06/30/2007 11:42:51 PAGE 2   

  56          code CONFIG_DESCRIPTOR ConfigDescr =
  57          {
  58                  sizeof(CONFIG_DESCRIPTOR),
  59                          USB_CONFIGURATION_DESCRIPTOR_TYPE,
  60                          SWAP(CONFIG_DESCRIPTOR_LENGTH),
  61                          1,      //support interrupt
  62                          1,      //config value
  63                          4,      //configuration string
  64                          0x80,   //config bus power
  65                          0x32    //max power x*2mV
  66          };
  67          code INTERFACE_DESCRIPTOR InterfaceDescr =
  68          {
  69                  sizeof(INTERFACE_DESCRIPTOR),
  70                          USB_INTERFACE_DESCRIPTOR_TYPE,
  71                          0,      //interrupt num
  72                          0,      //alter setup
  73                          NUM_ENDPOINTS,  
  74          #ifdef _HID_DEVICE
  75                          0x3, //class code, 03 for hid device
  76          #else
                              0x0,
              #endif //_HID_DEVICE
  79                          0, //subclass code
  80                          0, //protocol code
  81                          5       //interface string
  82          };
  83          
  84          #ifdef _HID_DEVICE
  85          code HID_DESCRIPTOR HidDescr = 
  86          {
  87                  sizeof(HID_DESCRIPTOR),
  88                  USB_HID_DESCRIPTOR_TYPE,
  89                  SWAP(0x101),                    //bcd hid class specification release
  90                  0,              //country code
  91                  1,              //number of hid class descr to follow
  92                  0x22,   //report descr type
  93                  SWAP(0X34)              //total length of report desc
  94          };
  95          #endif //_HID_DEVICE
  96          
  97          code ENDPOINT_DESCRIPTOR EP1_TXDescr =
  98          {
  99                  sizeof(ENDPOINT_DESCRIPTOR),
 100                          USB_ENDPOINT_DESCRIPTOR_TYPE,
 101                          0x81,   //ep1 in
 102          #ifdef _HID_DEVICE
 103                          0x2, //USB_ENDPOINT_TYPE_BULK
 104          #else
                              0x3, //USB_ENDPOINT_TYPE_INTERRUPT,
              #endif //_HID_DEVICE
 107                          SWAP(EP1_PACKET_SIZE),  //MAX packet size
 108                          10      //interval 10ms
 109          };
 110          code ENDPOINT_DESCRIPTOR EP1_RXDescr =
 111          {
 112                  sizeof(ENDPOINT_DESCRIPTOR),
 113                          USB_ENDPOINT_DESCRIPTOR_TYPE,
 114                          0x1,    //ep1 out
 115          #ifdef _HID_DEVICE
 116                          0x2, //USB_ENDPOINT_TYPE_BULK
 117          #else
C51 COMPILER V7.01  USBIMPL                                                                06/30/2007 11:42:51 PAGE 3   

                              0x3, //USB_ENDPOINT_TYPE_INTERRUPT,
              #endif //_HID_DEVICE
 120                          SWAP(EP1_PACKET_SIZE),
 121                          10
 122          };
 123          
 124          code ENDPOINT_DESCRIPTOR EP2_TXDescr =
 125          {
 126                  sizeof(ENDPOINT_DESCRIPTOR),
 127                          USB_ENDPOINT_DESCRIPTOR_TYPE,
 128                          0x82,
 129          #ifdef _HID_DEVICE
 130                          0x3, //USB_ENDPOINT_TYPE_INTERRUPT
 131          #else
                              0x2, //USB_ENDPOINT_TYPE_BULK
              #endif //_HID_DEVICE
 134                          SWAP(EP2_PACKET_SIZE),
 135                          1
 136          };
 137          code ENDPOINT_DESCRIPTOR EP2_RXDescr =
 138          {
 139                  sizeof(ENDPOINT_DESCRIPTOR),
 140                          USB_ENDPOINT_DESCRIPTOR_TYPE,
 141                          0x2,
 142          #ifdef _HID_DEVICE
 143                          0x3, //USB_ENDPOINT_TYPE_INTERRUPT
 144          #else
                              0x2, //USB_ENDPOINT_TYPE_BULK,
              #endif //_HID_DEVICE
 147                          SWAP(EP2_PACKET_SIZE),
 148                          1
 149          };
 150          
 151          code u8 StringLANGID[] =         //字符描述符
 152          {
 153                  4,                                                      // bLength
 154                  USB_STRING_DESCRIPTOR_TYPE,     // bDescriptorType  0x03
 155                  0x09, 0x04//SWAP(0x0409)        // wLANGID
 156          };
 157          
 158          code u8 szManufacturer[] =       //厂商描述符字符串
 159          {
 160                  46,                                                                             // bLength
 161                  USB_STRING_DESCRIPTOR_TYPE,                             // bDescriptorType  0x03
 162                  // String... http://www.njtu.edu.cn
 163                  'h', 0, 't', 0, 't', 0, 'p', 0, ':', 0, 
 164                  '/', 0, '/', 0, 'w', 0, 'w', 0, 'w', 0,
 165                  '.', 0, 'n', 0, 'j', 0, 't', 0, 'u', 0, 
 166                  '.', 0, 'e', 0, 'd', 0, 'u', 0, '.', 0,
 167                  'c', 0, 'n', 0
 168          };
 169          
 170          
 171          code u8 szProduct[] =           //产品描述符字符串
 172          {
 173                  36,                                                                             // bLength
 174                  USB_STRING_DESCRIPTOR_TYPE,                             // bDescriptorType
 175                  // String... USB Develop Board
 176                  'U', 0, 'S', 0, 'B', 0, ' ', 0, 'D', 0, 
 177                  'e', 0, 'v', 0, 'e', 0, 'l', 0, 'o', 0,
 178                  'p', 0, ' ', 0, 'B', 0, 'o', 0, 'a', 0,
 179                  'r', 0, 'd', 0
C51 COMPILER V7.01  USBIMPL                                                                06/30/2007 11:42:51 PAGE 4   

 180          };
 181          
 182          code u8 szSerialNumber[] =       //设备序列号字符串
 183          {
 184                  22,                                                                             // bLength
 185                  USB_STRING_DESCRIPTOR_TYPE,                             // bDescriptorType
 186                  // String... 0001-10000
 187                  '0', 0, '0', 0, '0', 0, '1', 0, '-', 0, 
 188                  '1', 0, '0', 0, '0', 0, '0', 0, '0', 0
 189          };
 190          
 191          code u8 szConfiguration[] =      //用于描述该配置字符串
 192          {
 193                  72,                                                                             // bLength
 194                  USB_STRING_DESCRIPTOR_TYPE,                             // bDescriptorType
 195                  // String...This configuration is used for Test
 196                  'T', 0, 'h', 0, 'i', 0, 's', 0, ' ', 0, 
 197                  'c', 0, 'o', 0, 'n', 0, 'f', 0, 'i', 0,
 198                  'g', 0, 'u', 0, 'r', 0, 'a', 0, 't', 0, 
 199                  'i', 0, 'o', 0, 'n', 0, ' ', 0, 'i', 0,
 200                  's', 0, ' ', 0, 'u', 0, 's', 0, 'e', 0, 
 201                  'd', 0, ' ', 0, 'f', 0, 'o', 0, 'r', 0,
 202                  ' ', 0, 'T', 0, 'e', 0, 's', 0, 't', 0
 203          };
 204          
 205          code u8 szInterface[] =          //用于描述该接口字符串
 206          {
 207                  50,                                                                             // bLength
 208                  USB_STRING_DESCRIPTOR_TYPE,                             // bDescriptorType
 209                  // String...Interface to the AStart UDK12 T00L
 210                  'I', 0, 'n', 0, 't', 0, 'e', 0, 'r', 0, 
 211                  'f', 0, 'a', 0, 'c', 0, 'e', 0, ' ', 0,
 212                  't', 0, 'o', 0, ' ', 0, 't', 0, 'h', 0, 
 213                  'e', 0, ' ', 0, 'U', 0, 'S', 0, 'B', 0,
 214                  ' ', 0, 'K', 0, 'i', 0, 't', 0
 215          };
 216          
 217          code u8 szUserInfo[] =
 218          {
 219                  48,                                                                     // bLength
 220                  USB_STRING_DESCRIPTOR_TYPE,                             // bDescriptorType
 221                  // String...   Created by Tu xiaoqiang
 222                  'C', 0, 'r', 0, 'e', 0, 'a', 0, 't', 0, 
 223                  'e', 0, 'd', 0, ' ', 0, 'b', 0, 'y', 0,
 224                  ' ', 0, 'T', 0, 'u', 0, ' ', 0, 'x', 0, 
 225                  'i', 0, 'a', 0, 'o', 0, 'q', 0, 'i', 0,
 226                  'a', 0, 'n', 0, 'g', 0
 227          };
 228          
 229          // used for HID 
 230          #ifdef _HID_DEVICE
 231          code u8 szHidReport[] =
 232          {
 233                   0x06,  0xA0,  0xFF,//    Usage Page (FFA0h, vendor defined)
 234                   0x09, 0x01,            //       Usage (vendor defined)
 235                    0xA1, 0x01,           //       Collection (Application)
 236                   0x09, 0x02 ,           //       Usage (vendor defined)
 237                    0xA1, 0x00,           //       Collection (Physical)
 238                   0x06,  0xA1,  0xFF, //    Usage Page (vendor defined)
 239          
 240          /// The Input report
 241                   0x09, 0x03 ,    //       Usage (vendor defined)
C51 COMPILER V7.01  USBIMPL                                                                06/30/2007 11:42:51 PAGE 5   

 242                   0x09, 0x04,     //       Usage (vendor defined)
 243                   0x15, 0x80,    //      Logical minimum  0x80 or -128)
 244                   0x25, 0x7F,    //      Logical maximum  0x7F or 127)
 245                   0x35, 0x00,    //      Physical minimum (0)
 246                   0x45,  0xFF,   //      Physical maximum (255)
 247                   0x75, 0x08,    //      Report size (8 bits)
 248                   0x95, 0x40,    //      Report count (64 fields)

⌨️ 快捷键说明

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