📄 protozlg.lst
字号:
C51 COMPILER V7.06 PROTOZLG 11/29/2007 09:43:57 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE PROTOZLG
OBJECT MODULE PLACED IN Protozlg.OBJ
COMPILER INVOKED BY: C:\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 V7.06 PROTOZLG 11/29/2007 09:43:57 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 unsigned char len,epstatus;
86 1 if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {
87 2 if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
88 2 ControlData.DeviceRequest.wValue == 0 &&
89 2 ControlData.DeviceRequest.wLength == 1)
90 2 get_firmware_version();
91 2 else
92 2 if(ControlData.DeviceRequest.wIndex == GET_BUFFER_SIZE &&
93 2 ControlData.DeviceRequest.wValue == 0 &&
94 2 ControlData.DeviceRequest.wLength == 4)
95 2 get_buffer_size();
96 2 else
97 2 stall_ep0();
98 2
99 2 }// if read register
100 1 else{
101 2 if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
102 2 ControlData.DeviceRequest.wValue == 0 &&
103 2 ControlData.DeviceRequest.wLength == 6)
104 2 {
105 3 if(ControlData.dataBuffer[5]==0x81)
106 3 {
107 4 byte_cnt.byte.high = ControlData.dataBuffer[4];
108 4 byte_cnt.byte.low = ControlData.dataBuffer[3];
109 4 if(byte_cnt.word<64)
110 4 {
111 5 D12_WriteEndpoint(5, byte_cnt.byte.low, EpBuf);
112 5 byte_cnt.word=0;
113 5 }
114 4 else
115 4 {
116 5 byte_cnt.word=byte_cnt.word-64;
C51 COMPILER V7.06 PROTOZLG 11/29/2007 09:43:57 PAGE 3
117 5 D12_WriteEndpoint(5, 64, EpBuf);
118 5 }
119 4 }
120 3
121 3 if(ControlData.dataBuffer[5]==0x80)
122 3 {
123 4 epstatus = D12_ReadEndpointStatus(4);
124 4 epstatus = epstatus & 0x60;
125 4 if(epstatus = 0x60)
*** WARNING C276 IN LINE 125 OF PROTOZLG.C: constant in condition expression
126 4 {
127 5 len = D12_ReadEndpoint(4,64,EpBuf);
128 5 }
129 4 // i = D12_ReadEndpoint(4, 64, EpBuf); //读空端点2数据
130 4 // i = D12_ReadEndpoint(4, 64, EpBuf);
131 4 }
132 3 single_transmit(0, 0);
133 3 }
134 2 else
135 2 stall_ep0();
136 2 }// if write register
137 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 233 ----
CONSTANT SIZE = 48 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -