📄 usbex.lst
字号:
C51 COMPILER V7.06 USBEX 04/03/2006 15:21:51 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE USBEX
OBJECT MODULE PLACED IN E:\PROJECT\USB_MOUSE\USBEX.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\PROJECT\USB_MOUSE\USBEX.C DB SB OE
stmt level source
1 /*;CH372/CH375 USB device mode & external firmware
2 ; U2(AT89C51) Program
3 ;
4 ; Website: http://winchiphead.com
5 ; Email: tech@winchiphead.com
6 ; Author: W.ch 2003.12, 2005.03
7 ;
8 ;****************************************************************************
9 CH375 外部固件方式范例
10 这里仅处理标准请求和端点2的简单读写
11
12 */
13
14 /* MCS-51单片机C语言的示例程序 */
15 #pragma NOAREGS
16 #include <reg52.h>
17 #include "CH375INC.H"
18
19 typedef union _REQUEST_PACK{
20 unsigned char buffer[8];
21 struct{
22 unsigned char bmReuestType; //标准请求字
23 unsigned char bRequest; //请求代码
24 unsigned int wValue; //特性选择高
25 unsigned int wIndx; //索引
26 unsigned int wLength; //数据长度
27 }r;
28 } mREQUEST_PACKET, *mpREQUEST_PACKET;
29
30 //设备描述符
31 unsigned char code DevDes[]={
32 0x12 //描述符大小
33 , 0x01 //常数DEVICE
34 , 0x10 //USB规范版本信息
35 , 0x01
36 , 0xFF //类别码,
37 , 0x80 //子类别码
38 , 0x37 //协议码
39 , 0x08 //端点0的最大信息包大小
40 , 0x48 //厂商ID
41 , 0x43
42 , 0x37 //产品ID
43 , 0x55
44 , 0x00 //设备版本信息
45 , 0x01
46 , 0x00 //索引值
47 , 0x00
48 , 0x00
49 , 0x01 //可能配置的数目
50 , 00 //无意义
51 , 00
52 , 00
53 , 00
54 , 00
55 , 00
C51 COMPILER V7.06 USBEX 04/03/2006 15:21:51 PAGE 2
56 };
57 //配置描述符
58 unsigned char code ConDes[]={ //配置描述符
59 0x09 //描述符大小
60 , 0x02 //常数CONFIG
61 , 0x27 //此配置传回所有数据大小
62 , 0x00 //
63 , 0x01 //接口数
64 , 0x01 //配置值
65 , 0x00 //索引
66 , 0x80 //电源设置
67 , 0x40 //需要总线电源
68 //接口描述符
69 , 0x09 //描述符大小
70 , 0x04 //常数INTERFACE
71 , 0x00 //识别码
72 , 0x00 //代替数值
73 , 0x03 //支持的端点数
74 , 0xFF //类别码
75 , 0x80 //子类别码
76 , 0x37 //协议码
77 , 0x00 //索引
78 //端点描述符
79 , 0x07 //述符大小
80 , 0x05 //常数ENDPOINT
81 , 0x82 //端点数目及方向
82 , 0x02 //支持的传输类型
83 , 0x40 //支持的最大信息包大小
84 , 0x00
85 , 0x00 //
86
87 , 0x07
88 , 0x05
89 , 0x02
90 , 0x02
91 , 0x40
92 , 0x00
93 , 0x00
94
95 , 0x07
96 , 0x05
97 , 0x81
98 , 0x03
99 , 0x08
100 , 0x00
101 , 0x01
102
103 , 0x07
104 , 0x05
105 , 0x01
106 , 0x02
107 , 0x08
108 , 0x00
109 , 0x00
110 }; //配置描述符
111 unsigned char code LangDes[]={0x04,0x03,0x09,0x04}; //语言描述符
112 unsigned char code SerDes[]={0x12,0x03,'C',0,'H',0,'3',0,'7',0,'5',0,'U',0,'S',0,'B',0}; //字符串描述符
113
114 unsigned char mVarSetupRequest; // ;USB请求码
115 unsigned char mVarSetupLength; // ;后续数据长度
116 unsigned char code * VarSetupDescr; // ;描述符偏移地址
117
C51 COMPILER V7.06 USBEX 04/03/2006 15:21:51 PAGE 3
118 unsigned char VarUsbAddress ; //
119
120 bit CH375FLAGERR; //错误清0
121 bit CH375CONFLAG;
122 //配置标志
123
124 unsigned char volatile xdata CH375_CMD_PORT _at_ 0x7fff; /* CH375命令端口的I/O地址 */
125 unsigned char volatile xdata CH375_DAT_PORT _at_ 0x3fff; /* CH375数据端口的I/O地址 */
126
127 mREQUEST_PACKET request;
128 sbit CH375ACT = P1^0;
129
130
131 /* 延时2微秒,不精确 */
132 void Delay1us(){
133 1 ;
134 1 }
135
136 void Delay2us( )
137 {
138 1 unsigned char i;
139 1 #define DELAY_START_VALUE 1 /* 根据单片机的时钟选择初值,20MHz以下为0,30MHz以上为2 */
140 1 for ( i=DELAY_START_VALUE; i!=0; i-- );
141 1 }
142
143 /* 延时50毫秒,不精确 */
144 void Delay50ms( )
145 {
146 1 unsigned char i, j;
147 1 for ( i=200; i!=0; i-- ) for ( j=250; j!=0; j-- );
148 1 }
149
150 /* 将PC机的低字节在前的16位字数据转换为C51的高字节在前的数据 */
151 //unsigned int BIG_ENDIAN( unsigned int value )
152 //{
153 // unsigned int in, out;
154 // in = value;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -