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

📄 protozlg.lst

📁 通过PDIUSBD12对步进电机进行控制
💻 LST
字号:
C51 COMPILER V6.12  PROTOZLG                                                               06/08/2007 20:53:42 PAGE 1   


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

stmt 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 V6.12  PROTOZLG                                                               06/08/2007 20:53:42 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 V6.12  PROTOZLG                                                               06/08/2007 20:53:42 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        =    205    ----
   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 + -