📄 protozlg.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 + -