?? usbex.lst
字號(hào):
313 5 VarSetupDescr=DevDes;
314 5 else if(request.buffer[3]==2) //配置描述符上傳
315 5 VarSetupDescr=ConDes;
316 5 else if(request.buffer[3]==3) {
317 6 if ( request.buffer[2]== 0 ) VarSetupDescr=LangDes;
318 6 else VarSetupDescr=SerDes; //做字符串處理
319 6 }
320 5 mCh375DesUp(); //其余描述符不支持
321 5 break;
322 5 case DEF_USB_GET_CONFIG: //獲得配置
323 5 request.buffer[0]=0; //沒(méi)有配置則傳0
324 5 if(CH375CONFLAG) request.buffer[0]=1; //已經(jīng)配置則傳1;這是在描述符里規(guī)定的
325 5 break;
326 5 case DEF_USB_SET_CONFIG: //設(shè)置配置
327 5 CH375CONFLAG=0;
328 5 CH375ACT=1;
329 5 if ( request.buffer[2] != 0 ) {
330 6 CH375CONFLAG=1; //設(shè)置配置標(biāo)志
331 6 CH375ACT=0; //輸出配置完成信號(hào)
332 6 }
333 5 break;
334 5 case DEF_USB_GET_INTERF: //得到接口
335 5 request.buffer[0]=1; //上傳接口數(shù),本事例只支持一個(gè)接口
336 5 break;
337 5 default :
338 5 CH375FLAGERR=1; //不支持的標(biāo)準(zhǔn)請(qǐng)求
339 5 break;
340 5 }
341 4 }
342 3 }
343 2 else { //不支持的控制傳輸,不是8字節(jié)的控制傳輸
344 3 CH375FLAGERR=1;
345 3 }
346 2 if(!CH375FLAGERR) mCh375Ep0Up(); //沒(méi)有錯(cuò)誤/調(diào)用數(shù)據(jù)上傳,,長(zhǎng)度為0上傳為狀態(tài)
347 2 else {
348 3 CH375_WR_CMD_PORT(CMD_SET_ENDP3); //設(shè)置端點(diǎn)1為STALL,指示一個(gè)錯(cuò)誤
349 3 CH375_WR_DAT_PORT(0x0F);
350 3 }
351 2 break;
352 2 case USB_INT_EP0_IN: //控制端點(diǎn)上傳成功
353 2 if(mVarSetupRequest==DEF_USB_GET_DESCR){ //描述符上傳
354 3 mCh375DesUp();
355 3 mCh375Ep0Up();
356 3 }
357 2 else if(mVarSetupRequest==DEF_USB_SET_ADDRESS){ //設(shè)置地址
358 3 CH375_WR_CMD_PORT(CMD_SET_USB_ADDR);
359 3 CH375_WR_DAT_PORT(VarUsbAddress); //設(shè)置USB地址,設(shè)置下次事務(wù)的USB地址
360 3 }
361 2 CH375_WR_CMD_PORT (CMD_UNLOCK_USB); //釋放緩沖區(qū)
362 2 break;
C51 COMPILER V7.06 USBEX 04/03/2006 15:21:51 PAGE 7
363 2 case USB_INT_EP0_OUT: //控制端點(diǎn)下傳成功
364 2 CH375_WR_CMD_PORT(CMD_RD_USB_DATA); //發(fā)出讀數(shù)據(jù)命令
365 2 if(length=CH375_RD_DAT_PORT()){ //長(zhǎng)度為0跳出
366 3 for(len=0;len!=length;len++)c1=CH375_RD_DAT_PORT(); //取出下傳數(shù)據(jù)
367 3 }
368 2 break;
369 2 default:
370 2 if((InterruptStatus&0x03)==0x03){ //總線復(fù)位
371 3 CH375FLAGERR=0; //錯(cuò)誤清0
372 3 CH375CONFLAG=0; //配置清0
373 3 mVarSetupLength=0;
374 3 CH375ACT=1; //清配置完成輸出
375 3 }
376 2 else{ //命令不支持
377 3 ;
378 3 }
379 2 CH375_WR_CMD_PORT (CMD_UNLOCK_USB); //釋放緩沖區(qū)
380 2 break;
381 2 }
382 1 }
383
384 main( ) {
385 1 Delay50ms( ); /* 延時(shí)等待CH375初始化完成,如果單片機(jī)由CH375提供復(fù)位信號(hào)則不必延時(shí) */
386 1 CH375_WR_CMD_PORT( CMD_RESET_ALL ); //似乎是他模擬了一次插拔
387 1 Delay50ms( );Delay50ms( );Delay50ms( );Delay50ms( );Delay50ms( );
388 1 CH375_Init( ); /* 初始化CH375 */
389 1 EA=1;
390 1 while(1); /* 主程序 */
391 1 }
C51 COMPILER V7.06 USBEX 04/03/2006 15:21:51 PAGE 8
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
CH375_RD_DAT_PORT. . . . . . . . . . . PUBLIC CODE PROC 0005H -----
CH375ACT . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
CH375_CMD_PORT . . . . . . . . . . . . PUBLIC XDATA U_CHAR 7FFFH 1
Delay1us . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
CH375_DAT_PORT . . . . . . . . . . . . PUBLIC XDATA U_CHAR 3FFFH 1
_REQUEST_PACK. . . . . . . . . . . . . * TAG * ----- UNION ----- 8
buffer . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 8
r. . . . . . . . . . . . . . . . . . MEMBER ----- STRUCT 0000H 8
Delay2us . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
request. . . . . . . . . . . . . . . . PUBLIC DATA UNION 0000H 8
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
mVarSetupLength. . . . . . . . . . . . PUBLIC DATA U_CHAR 0008H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
mVarSetupRequest . . . . . . . . . . . PUBLIC DATA U_CHAR 0009H 1
mCh375DesUp. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
CH375_Init . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
VarUsbAddress. . . . . . . . . . . . . PUBLIC DATA U_CHAR 000AH 1
LangDes. . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0046H 4
mpREQUEST_PACKET . . . . . . . . . . . TYPEDEF ----- PTR ----- 3
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
CH375CONFLAG . . . . . . . . . . . . . PUBLIC DATA BIT 0000H 1
CH375FLAGERR . . . . . . . . . . . . . PUBLIC DATA BIT 0001H 1
VarSetupDescr. . . . . . . . . . . . . PUBLIC DATA PTR 000BH 2
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
mREQUEST_PACKET. . . . . . . . . . . . TYPEDEF ----- UNION ----- 8
buffer . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 8
r. . . . . . . . . . . . . . . . . . MEMBER ----- STRUCT 0000H 8
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
Delay50ms. . . . . . . . . . . . . . . PUBLIC CODE PROC 0003H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
DevDes . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 24
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
ConDes . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0018H 46
SerDes . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 004AH 18
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
mCh375Ep0Up. . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
len. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
mCH375Interrupt. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
InterruptStatus. . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
length . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
c1 . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0002H 1
len. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0003H 1
pBuf . . . . . . . . . . . . . . . . * REG * DATA PTR 0009H 3
mBuf . . . . . . . . . . . . . . . . AUTO DATA ARRAY 0004H 64
_CH375_WR_CMD_PORT . . . . . . . . . . PUBLIC CODE PROC 0000H -----
cmd. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_CH375_WR_DAT_PORT . . . . . . . . . . PUBLIC CODE PROC 0000H -----
dat. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
C51 COMPILER V7.06 USBEX 04/03/2006 15:21:51 PAGE 9
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 741 ----
CONSTANT SIZE = 92 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 13 68
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -