?? 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; //數(shù)據(jù)長度
27 }r;
28 } mREQUEST_PACKET, *mpREQUEST_PACKET;
29
30 //設(shè)備描述符
31 unsigned char code DevDes[]={
32 0x12 //描述符大小
33 , 0x01 //常數(shù)DEVICE
34 , 0x10 //USB規(guī)范版本信息
35 , 0x01
36 , 0xFF //類別碼,
37 , 0x80 //子類別碼
38 , 0x37 //協(xié)議碼
39 , 0x08 //端點0的最大信息包大小
40 , 0x48 //廠商ID
41 , 0x43
42 , 0x37 //產(chǎn)品ID
43 , 0x55
44 , 0x00 //設(shè)備版本信息
45 , 0x01
46 , 0x00 //索引值
47 , 0x00
48 , 0x00
49 , 0x01 //可能配置的數(shù)目
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 //常數(shù)CONFIG
61 , 0x27 //此配置傳回所有數(shù)據(jù)大小
62 , 0x00 //
63 , 0x01 //接口數(shù)
64 , 0x01 //配置值
65 , 0x00 //索引
66 , 0x80 //電源設(shè)置
67 , 0x40 //需要總線電源
68 //接口描述符
69 , 0x09 //描述符大小
70 , 0x04 //常數(shù)INTERFACE
71 , 0x00 //識別碼
72 , 0x00 //代替數(shù)值
73 , 0x03 //支持的端點數(shù)
74 , 0xFF //類別碼
75 , 0x80 //子類別碼
76 , 0x37 //協(xié)議碼
77 , 0x00 //索引
78 //端點描述符
79 , 0x07 //述符大小
80 , 0x05 //常數(shù)ENDPOINT
81 , 0x82 //端點數(shù)目及方向
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; // ;后續(xù)數(shù)據(jù)長度
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數(shù)據(jù)端口的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 /* 根據(jù)單片機的時鐘選擇初值,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機的低字節(jié)在前的16位字數(shù)據(jù)轉(zhuǎn)換為C51的高字節(jié)在前的數(shù)據(jù) */
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 + -