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

📄 protozlg.lst

📁 飞利浦USB D12的官方评估板固件代码
💻 LST
字号:
C51 COMPILER V7.50   PROTOZLG                                                              11/22/2005 21:08:12 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE PROTOZLG
OBJECT MODULE PLACED IN Protozlg.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Protozlg.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************Copyright (c)**************************************************
   2          **                               广州周立功单片机发展有限公司
   3          **                                     研    究    所
   4          **                                        产品一部 
   5          **
   6          **                                 http://www.zlgmcu.com
   7          **
   8          ** 文   件   名: Protozlg.c
   9          ** 最后修改日期: 2004年11月15日
  10          ** 描        述: USB驱动程序软件包: PDIUSBD12 厂商请求
  11          ** 版        本: V5.0
  12          **********************************************************************************************************
             -/
  13          
  14          
  15          #include <reg52.h>                /* special function register declarations   */
  16          #include "D12Config.h"
  17          #include "protozlg.h"
  18          #include "Chap_9.h"
  19          #include "Descriptor.h"
  20          #include "D12CI.h"
  21          #include "D12Driver.h"
  22          
  23          byte_count byte_cnt;
  24          
  25          //厂商请求入口地址
  26          code void (*VendorDeviceRequest[])(void) =
  27          {
  28                  reserved,
  29                  reserved,
  30                  reserved,
  31                  reserved,
  32                  reserved,
  33                  reserved,
  34                  reserved,
  35                  reserved,
  36                  reserved,
  37                  reserved,
  38                  reserved,
  39                  reserved,
  40                  read_write_register,
  41                  reserved,
  42                  reserved,
  43                  reserved
  44          };
  45          
  46          /*******************************************************
  47          ** 函数名称: get_firmware_version()
  48          ** 功能描述: 获得厂商请求的版本号
  49          ** 输    入: 无
  50          ** 输    出: 无
  51          ********************************************************/
  52          void get_firmware_version(void)
  53          {
  54   1              INT8U i;
C51 COMPILER V7.50   PROTOZLG                                                              11/22/2005 21:08:12 PAGE 2   

  55   1      
  56   1              i = 0x30;                                                       // firmware version number
  57   1              single_transmit((unsigned char *)&i, 1);
  58   1      }
  59          
  60          /*******************************************************
  61          ** 函数名称: get_firmware_version()
  62          ** 功能描述: 获得厂商请求的版本号
  63          ** 输    入: 无
  64          ** 输    出: 无
  65          ********************************************************/
  66          void get_buffer_size(void)
  67          {
  68   1              INT8U i[4];
  69   1      
  70   1              i[0] = EP2_PACKET_SIZE;
  71   1              i[1] = 0;
  72   1              i[2] = 0;
  73   1              i[3] = 0;
  74   1              single_transmit((INT8U *)&i, 4);
  75   1      }
  76          
  77          /*******************************************************
  78          ** 函数名称: read_write_register()
  79          ** 功能描述: 读写D12端点2寄存器
  80          ** 输    入: 无
  81          ** 输    出: 无
  82          ********************************************************/
  83          void read_write_register(void)
  84          {
  85   1              if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
  86   2                      if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
  87   2                              ControlData.DeviceRequest.wValue == 0 &&
  88   2                              ControlData.DeviceRequest.wLength == 1)
  89   2                              get_firmware_version();
  90   2                      else
  91   2                      if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
  92   2                              ControlData.DeviceRequest.wValue == 0 &&
  93   2                              ControlData.DeviceRequest.wLength == 4)
  94   2                              get_buffer_size();
  95   2                      else
  96   2                              stall_ep0();
  97   2      
  98   2              }// if read register
  99   1              else{
 100   2                      if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
 101   2                              ControlData.DeviceRequest.wValue == 0 &&
 102   2                              ControlData.DeviceRequest.wLength == 6)
 103   2                              {
 104   3                                      if(ControlData.dataBuffer[5]==0x81)
 105   3                                      {
 106   4                                              byte_cnt.byte.high = ControlData.dataBuffer[4];
 107   4                                              byte_cnt.byte.low = ControlData.dataBuffer[3];
 108   4                                              if(byte_cnt.word<64)
 109   4                                              {
 110   5                                                      D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
 111   5                                                      byte_cnt.word=0;
 112   5                                              }
 113   4                                              else
 114   4                                              {
 115   5                                                      byte_cnt.word=byte_cnt.word-64;
 116   5                                                      D12_WriteEndpoint(5, 64, EpBuf);
C51 COMPILER V7.50   PROTOZLG                                                              11/22/2005 21:08:12 PAGE 3   

 117   5                                              }
 118   4                                      }
 119   3      
 120   3                                      if(ControlData.dataBuffer[5]==0x82)
 121   3                                      {
 122   4      //                                      i = D12_ReadEndpoint(4, 64, EpBuf);             //读空端点2数据
 123   4      //                                      i = D12_ReadEndpoint(4, 64, EpBuf);
 124   4                                      }
 125   3                                      single_transmit(0, 0);
 126   3                              }
 127   2                      else
 128   2                              stall_ep0();
 129   2              }// if write register
 130   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    204    ----
   CONSTANT SIZE    =     48    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       5
   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 + -