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

📄 chap_9.lst

📁 PDIUSBD12 firmware USB communication C51 real timer and UART
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   CHAP_9                                                                06/04/2004 18:36:43 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE CHAP_9
OBJECT MODULE PLACED IN CHAP_9.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE CHAP_9.c DB OE SMALL ROM(LARGE)

stmt level    source

   1          //**********************************************************************************************//
   2          /*                                                                                              */
   3          /*                             USB to Serial V1.0版                                             */
   4          /*                                                                                              */
   5          /*                               FirmWare  Files                                                */
   6          /*                  COPYRIGHT (c)  2004 BY  GARY 应用物理学 物理实验中心                        */
   7          /*                                                                                              */
   8          /*    Files Name:        CHAP_9.C                                                               */
   9          /*    Author:            Gary Zou LuDing                                                        */
  10          /*    Created:           March  2004                                                            */
  11          /*    Modified:                                                                                 */
  12          /*    Revision:          1.0                                                                    */
  13          /*    Other Details:                                                                            */
  14          /*                                                                                              */
  15          /*                                                                                              */
  16          /*                                                                                              */
  17          //**********************************************************************************************//
  18          
  19          #include        <stdio.h>
  20          #include        <string.h>
  21          
  22          #include        "usb100.h"
  23          #include        "reg52.h"                
  24          #include        "hal.h"
  25          #include        "d12ci.h"
  26          #include        "isr.h"
  27          #include        "chap_9.h"
  28          #include        "vendor.h"
  29          #include        "main.h"
  30          
  31          extern  FLAG             flag;
  32          extern  CTRL_BUF         ctrl_buf;
  33          extern unsigned char idata  enp1_buf[16];
  34          extern unsigned char idata  enp2_buf[64];
  35          
  36          
  37          
  38          /***************************************
  39          设备描述符实例
  40          ***************************************/
  41          code USB_DEVICE_DESCRIPTOR DeviceDescr=
  42          {
  43                  sizeof(USB_DEVICE_DESCRIPTOR),
  44                  USB_DEVICE_DESCRIPTOR_TYPE,
  45                  SWAP(0x0110),
  46                  USB_CLASS_CODE_TEST_CLASS_DEVICE,
  47                  0,0,
  48                  EP0_PACKET_SIZE,
  49                  SWAP(0x0990),
  50                  SWAP(0x0880),
  51                  SWAP(0x0100),
  52                  0,0,0,
  53                  1
  54          };
  55          /***************************************
C51 COMPILER V7.07   CHAP_9                                                                06/04/2004 18:36:43 PAGE 2   

  56          配置描述符实例
  57          ***************************************/
  58          code USB_CONFIGURATION_DESCRIPTOR ConfigDescr=
  59          {
  60                  sizeof(USB_CONFIGURATION_DESCRIPTOR),
  61                  USB_CONFIGURATION_DESCRIPTOR_TYPE,
  62                  SWAP(CONFIG_DESCRIPTOR_LENGTH),
  63                  1,
  64                  1,
  65                  0,
  66                  0xa0,
  67                  0x32
  68          };
  69          /***************************************
  70          接口描述符实例
  71          ***************************************/
  72          code USB_INTERFACE_DESCRIPTOR InterfaceDescr=
  73          {
  74                  sizeof(USB_INTERFACE_DESCRIPTOR),
  75                  USB_INTERFACE_DESCRIPTOR_TYPE,
  76                  0,
  77                  0,
  78                  NUM_ENDPOINTS,
  79                  USB_CLASS_CODE_TEST_CLASS_DEVICE,
  80                  USB_SUBCLASS_CODE_TEST_CLASS_D12,
  81                  USB_PROTOCOL_CODE_TEST_CLASS_D12,
  82                  0       
  83          };
  84          /***************************************
  85          端点描述符实例
  86          端点1输入
  87          ***************************************/
  88          code USB_ENDPOINT_DESCRIPTOR EP1_TXDescr=
  89          {
  90                  sizeof(USB_ENDPOINT_DESCRIPTOR),
  91                  USB_ENDPOINT_DESCRIPTOR_TYPE,
  92                  0x81,
  93                  USB_ENDPOINT_TYPE_INTERRUPT,
  94                  SWAP(EP1_PACKET_SIZE),
  95                  1
  96          };
  97          /***************************************
  98          端点描述符实例
  99          端点1输出
 100          ***************************************/
 101          code USB_ENDPOINT_DESCRIPTOR EP1_RXDescr=
 102          {
 103                  sizeof(USB_ENDPOINT_DESCRIPTOR),
 104                  USB_ENDPOINT_DESCRIPTOR_TYPE,
 105                  0x1,
 106                  USB_ENDPOINT_TYPE_INTERRUPT,
 107                  SWAP(EP1_PACKET_SIZE),
 108                  1
 109          };
 110          /***************************************
 111          端点描述符实例
 112          端点2输入
 113          ***************************************/
 114          code USB_ENDPOINT_DESCRIPTOR EP2_TXDescr=
 115          {
 116                  sizeof(USB_ENDPOINT_DESCRIPTOR),
 117                  USB_ENDPOINT_DESCRIPTOR_TYPE,
C51 COMPILER V7.07   CHAP_9                                                                06/04/2004 18:36:43 PAGE 3   

 118                  0x82,
 119                  USB_ENDPOINT_TYPE_BULK,
 120                  SWAP(EP2_PACKET_SIZE),
 121                  10
 122          };
 123          /***************************************
 124          端点描述符实例
 125          端点2输出
 126          ***************************************/
 127          code USB_ENDPOINT_DESCRIPTOR EP2_RXDescr=
 128          {
 129                  sizeof(USB_ENDPOINT_DESCRIPTOR),
 130                  USB_ENDPOINT_DESCRIPTOR_TYPE,
 131                  0x2,
 132                  USB_ENDPOINT_TYPE_BULK,
 133                  SWAP(EP2_PACKET_SIZE),
 134                  10
 135          };
 136          
 137          
 138          
 139          
 140          
 141          /**************************************
 142          USB 标准设备请求服务程序
 143          **************************************/
 144          void get_status()
 145          {
 146   1              unsigned char endp,txdat[2];
 147   1              unsigned char bRecipient = ctrl_buf.dev_req.req_type & USB_RECIPIENT;
 148   1              unsigned char c;
 149   1              if(bRecipient==USB_RECIPIENT_DEVICE)
 150   1              {
 151   2                      if(flag.bits.remote_wakup==1) //总线供电
 152   2                              txdat[0]=2;
 153   2                      else
 154   2                              txdat[0]=0;
 155   2                      txdat[1]=0;
 156   2                      single_transmit(txdat,2);
 157   2              }
 158   1              else if(bRecipient== USB_RECIPIENT_INTERFACE)
 159   1              {
 160   2                      txdat[0]=0;
 161   2                      txdat[1]=0;
 162   2                      single_transmit(txdat,2);
 163   2              }
 164   1              else if(bRecipient==USB_RECIPIENT_ENDPOINT)
 165   1              {
 166   2                      endp=(unsigned char )(ctrl_buf.dev_req.index & 0x0F);
 167   2                      if(ctrl_buf.dev_req.index & (unsigned char )USB_ENDPOINT_DIRECTION_MASK )
 168   2                              c = d12_select_endpoint(endp*2+1);
 169   2                      else
 170   2                              c = d12_select_endpoint(endp*2);
 171   2                      if((c & ENDPOINT_STALL_MASK)!=0)
 172   2                              txdat[0]=1;
 173   2                      else
 174   2                              txdat[0]=0;
 175   2                      txdat[1]=0;
 176   2                      single_transmit(txdat,2);
 177   2              }
 178   1              else    stall_ep0();
 179   1      }
C51 COMPILER V7.07   CHAP_9                                                                06/04/2004 18:36:43 PAGE 4   

 180          /**************************************
 181          
 182          **************************************/
 183          void set_address()
 184          {
 185   1              //printf("set address\n");
 186   1              d12_set_address_enable((unsigned char )((ctrl_buf.dev_req.value) & DEVICE_ADDRESS_MASK),1);
 187   1              single_transmit(0,0);
 188   1      }
 189          /**************************************
 190          
 191          **************************************/
 192          void get_descriptor()
 193          {
 194   1              
 195   1              unsigned char bDescriptor=MSB(ctrl_buf.dev_req.value);
 196   1              //printf ("call get descriptor\n");
 197   1              if(bDescriptor==USB_DEVICE_DESCRIPTOR_TYPE)
 198   1              {
 199   2                      code_transmit((unsigned char *)&DeviceDescr,sizeof(USB_DEVICE_DESCRIPTOR));
 200   2              }
 201   1              else if(bDescriptor==USB_CONFIGURATION_DESCRIPTOR_TYPE)
 202   1              {
 203   2                      if(ctrl_buf.dev_req.len>CONFIG_DESCRIPTOR_LENGTH)       //第二次发送配置描述符集合
 204   2                              ctrl_buf.dev_req.len=CONFIG_DESCRIPTOR_LENGTH;
 205   2                      code_transmit((unsigned char *)&ConfigDescr,ctrl_buf.dev_req.len);
 206   2              }
 207   1              else
 208   1                      stall_ep0();
 209   1      }
 210          /**************************************
 211          
 212          **************************************/
 213          void get_configuration()
 214          {
 215   1              //-unsigned char c;
 216   1              //-flag.bits.config=1;
 217   1              //-c=flag.bits.config;
 218   1              unsigned char c=flag.bits.config;//+
 219   1              single_transmit(&c,1);
 220   1      }
 221          /**************************************
 222          
 223          **************************************/
 224          void set_configuration()
 225          {
 226   1              if(ctrl_buf.dev_req.value==0)
 227   1              {
 228   2                      single_transmit(0,0);
 229   2                      DISABLE_ALL_INTERRUPT;
 230   2                      flag.bits.config=0;
 231   2                      ENABLE_ALL_INTERRUPT;
 232   2                      init_unconfig();
 233   2              }

⌨️ 快捷键说明

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