📄 upsd_usb.src
字号:
; SOURCE LINE # 381
; }
; SOURCE LINE # 382
SJMP ?C0111
?C0027:
; else if((setupPacket.wIndex.lo == 0x81) & (setupPacket.wIndex.hi == 0x00)){//endpoint1
; SOURCE LINE # 383
MOV A,R7
JNZ ?C0034
MOV R7,#01H
SJMP ?C0035
?C0034:
MOV R7,#00H
?C0035:
MOV A,R5
CJNE A,#081H,?C0036
MOV R6,#01H
SJMP ?C0037
?C0036:
MOV R6,#00H
?C0037:
MOV A,R6
ANL A,R7
JZ ?C0033
; if(ep1State == US_EP1STALL)
; SOURCE LINE # 384
MOV R0,#LOW (ep1State)
MOV A,@R0
CJNE A,#01H,?C0038
; UDT0 = 1;
; SOURCE LINE # 385
MOV UDT0,#01H
SJMP ?C0039
?C0038:
; else
; UDT0 = 0;
; SOURCE LINE # 387
CLR A
MOV UDT0,A
?C0039:
;
; UDT0 = 0;
; SOURCE LINE # 389
?C0111:
CLR A
MOV UDT0,A
; }
; SOURCE LINE # 390
SJMP ?C0032
?C0033:
; else{
; SOURCE LINE # 391
; STALL_EP0(); // No features currently implemented, so stall EP0
; SOURCE LINE # 392
LCALL STALL_EP0
; }
; SOURCE LINE # 393
?C0032:
; #pragma asm
; orl UCON0,#uTX0E ;enable transmit
orl UCON0,#0x20 ;enable transmit
; #pragma endasm
; }
; SOURCE LINE # 397
RET
; END OF OnGetStatus
;
;
;
;
;
;
; //the following function changed on April 30, 2004
;
; static void OnClearFeature()
RSEG ?PR?OnClearFeature?UPSD_USB
OnClearFeature:
USING 0
; SOURCE LINE # 406
; /******************************************************************************
; Function : static void OnClearFeature()
; Parameters : none
; Description: Handler for CLEAR_FEATURE control requests.
; ******************************************************************************/
; {
; SOURCE LINE # 412
; if((setupPacket.wValue.lo == 0x00) & (setupPacket.wIndex.lo == 0x81)){
; SOURCE LINE # 413
MOV DPTR,#setupPacket+04H
MOVX A,@DPTR
CJNE A,#081H,?C0043
MOV R7,#01H
SJMP ?C0044
?C0043:
MOV R7,#00H
?C0044:
MOV DPTR,#setupPacket+02H
MOVX A,@DPTR
JNZ ?C0045
MOV R6,#01H
SJMP ?C0046
?C0045:
MOV R6,#00H
?C0046:
MOV A,R6
ANL A,R7
JZ ?C0042
; ep1State = US_EP1DEFAULT;
; SOURCE LINE # 414
CLR A
MOV R0,#LOW (ep1State)
MOV @R0,A
; }
; SOURCE LINE # 415
SJMP ?C0047
?C0042:
; else{
; SOURCE LINE # 416
; STALL_EP0(); // No features currently implemented, so stall EP0
; SOURCE LINE # 417
LCALL STALL_EP0
; }
; SOURCE LINE # 418
?C0047:
;
; #pragma asm // Send back 0 length DATA1 packet
; anl UCON0,#uRX0E+uSTALL0+uTSEQ0+uTX0E ;mask, keep RX,TX flag
anl UCON0,#0x10+0x40+0x80+0x20 ;mask, keep RX,TX flag
; orl UCON0,#uTSEQ0+uTX0E ;set TSEQ bit+enable endpoint
orl UCON0,#0x80+0x20 ;set TSEQ bit+enable endpoint
; #pragma endasm
; }
; SOURCE LINE # 424
RET
; END OF OnClearFeature
;
;
;
; //the following function changed on April 30, 2004
;
; static void OnSetFeature()
RSEG ?PR?OnSetFeature?UPSD_USB
OnSetFeature:
USING 0
; SOURCE LINE # 430
; /******************************************************************************
; Function : static void OnSetFeature()
; Parameters : none
; Description: Handler for Set_FEATURE control requests.
; ******************************************************************************/
; {
; SOURCE LINE # 436
; if((setupPacket.wValue.lo == 0x00) & (setupPacket.wIndex.lo == 0x81)){
; SOURCE LINE # 437
MOV DPTR,#setupPacket+04H
MOVX A,@DPTR
CJNE A,#081H,?C0050
MOV R7,#01H
SJMP ?C0051
?C0050:
MOV R7,#00H
?C0051:
MOV DPTR,#setupPacket+02H
MOVX A,@DPTR
JNZ ?C0052
MOV R6,#01H
SJMP ?C0053
?C0052:
MOV R6,#00H
?C0053:
MOV A,R6
ANL A,R7
JZ ?C0049
; ep1State = US_EP1STALL;
; SOURCE LINE # 438
MOV R0,#LOW (ep1State)
MOV @R0,#01H
; }
; SOURCE LINE # 439
SJMP ?C0054
?C0049:
; else{
; SOURCE LINE # 440
; STALL_EP0(); // No features currently implemented, so stall EP0
; SOURCE LINE # 441
LCALL STALL_EP0
; }
; SOURCE LINE # 442
?C0054:
;
; #pragma asm // Send back 0 length DATA1 packet
; anl UCON0,#uRX0E+uSTALL0+uTSEQ0+uTX0E ;mask, keep RX,TX flag
anl UCON0,#0x10+0x40+0x80+0x20 ;mask, keep RX,TX flag
; orl UCON0,#uTSEQ0+uTX0E ;set TSEQ bit+enable endpoint
orl UCON0,#0x80+0x20 ;set TSEQ bit+enable endpoint
; #pragma endasm
; }
; SOURCE LINE # 448
RET
; END OF OnSetFeature
;
;
;
;
;
; static void OnSetAddress()
RSEG ?PR?OnSetAddress?UPSD_USB
OnSetAddress:
; SOURCE LINE # 454
; /******************************************************************************
; Function : static void OnSetAddress()
; Parameters : none
; Description: Handler for SET_ADDRESS SETUP packets
; ******************************************************************************/
; {
; SOURCE LINE # 460
; #pragma asm // Send back 0 length DATA1 packet
; anl UCON0,#uRX0E+uSTALL0+uTSEQ0+uTX0E ;mask, keep RX,TX flag
anl UCON0,#0x10+0x40+0x80+0x20 ;mask, keep RX,TX flag
; orl UCON0,#uTSEQ0+uTX0E ;set TSEQ bit+enable endpoint
orl UCON0,#0x80+0x20 ;set TSEQ bit+enable endpoint
; #pragma endasm
; }
; SOURCE LINE # 465
RET
; END OF OnSetAddress
;
;
;
;
; static void OnGetConfiguration()
RSEG ?PR?OnGetConfiguration?UPSD_USB
OnGetConfiguration:
USING 0
; SOURCE LINE # 470
; /******************************************************************************
; Function : static void OnGetConfiguration()
; Parameters : none
; Description: Handler for GET_CONFIGURATION SETUP requests.
; ******************************************************************************/
; {
; SOURCE LINE # 476
; #pragma asm // send one byte length packet
; orl UCON0,#uTSEQ0 ;set TSEQ bit
orl UCON0,#0x80 ;set TSEQ bit
; anl UCON0,#uTSEQ0+uRX0E ;mask, keep RX flag
anl UCON0,#0x80+0x10 ;mask, keep RX flag
; orl UCON0,#1 ;set FIFO size
orl UCON0,#1 ;set FIFO size
; #pragma endasm
;
; if (usbState == US_CONFIGURED)
; SOURCE LINE # 483
MOV R0,#LOW (usbState)
MOV A,@R0
CJNE A,#04H,?C0057
; {
; SOURCE LINE # 484
; UDT0 = 1; //non-zero bConfigurationValue when device is configured
; SOURCE LINE # 485
MOV UDT0,#01H
; }
; SOURCE LINE # 486
SJMP ?C0058
?C0057:
; else
; {
; SOURCE LINE # 488
; UDT0 = 0; //The value zero shall be returned in address state
; SOURCE LINE # 489
CLR A
MOV UDT0,A
; }
; SOURCE LINE # 490
?C0058:
; #pragma asm
; orl UCON0,#uTX0E ;enable transmit
orl UCON0,#0x20 ;enable transmit
; #pragma endasm
; }
; SOURCE LINE # 494
RET
; END OF OnGetConfiguration
;
;
;
;
; static void OnSetConfiguration()
RSEG ?PR?OnSetConfiguration?UPSD_USB
OnSetConfiguration:
USING 0
; SOURCE LINE # 499
; /******************************************************************************
; Function : static void OnSetConfiguration()
; Parameters : none
; Description: Handler for SET_CONFIGURATION SETUP requests.
; ******************************************************************************/
; {
; SOURCE LINE # 505
; if (setupPacket.wValue.lo == 0)
; SOURCE LINE # 506
MOV DPTR,#setupPacket+02H
MOVX A,@DPTR
MOV R7,A
JNZ ?C0060
; {
; SOURCE LINE # 507
; if (usbState == US_CONFIGURED )
; SOURCE LINE # 508
MOV R0,#LOW (usbState)
MOV A,@R0
CJNE A,#04H,?C0061
; {
; SOURCE LINE # 509
; #pragma asm // Send back 0 length DATA1 packet
; anl UCON0,#uRX0E ;mask, keep RX flag
anl UCON0,#0x10 ;mask, keep RX flag
; orl UCON0,#uTSEQ0+uTX0E ;set TSEQ bit+enable endpoint
orl UCON0,#0x80+0x20 ;set TSEQ bit+enable endpoint
; #pragma endasm
; }
; SOURCE LINE # 514
?C0061:
; usbState = US_ADDRESSED;
; SOURCE LINE # 515
MOV R0,#LOW (usbState)
MOV @R0,#03H
; }
; SOURCE LINE # 516
RET
?C0060:
; else
; if (setupPacket.wValue.lo == 1)
; SOURCE LINE # 518
MOV A,R7
CJNE A,#01H,?C0063
; {
; SOURCE LINE # 519
; usbState = US_CONFIGURED;
; SOURCE LINE # 520
MOV R0,#LOW (usbState)
MOV @R0,#04H
;
; #pragma asm // Send back 0 length DATA1 packet
; anl UCON0,#uRX0E ;mask, keep RX flag
anl UCON0,#0x10 ;mask, keep RX flag
; orl UCON0,#uTSEQ0+uTX0E ;set TSEQ bit+enable endpoint
orl UCON0,#0x80+0x20 ;set TSEQ bit+enable endpoint
; #pragma endasm
;
; OnDeviceConfigured();
; SOURCE LINE # 527
LJMP OnDeviceConfigured
; }
; SOURCE LINE # 528
?C0063:
; else
; {
; SOURCE LINE # 530
; STALL_EP0(); // stall EP0
; SOURCE LINE # 531
LCALL STALL_EP0
; }
; SOURCE LINE # 532
; }
; SOURCE LINE # 533
?C0065:
RET
; END OF OnSetConfiguration
;
;
;
;
; static void OnGetInterface()
RSEG ?PR?OnGetInterface?UPSD_USB
OnGetInterface:
; SOURCE LINE # 538
; /******************************************************************************
; Function : static void OnGetInterface()
; Parameters : none
; Description: Handler for OnGetInterface() control requests.
; ******************************************************************************/
; {
; SOURCE LINE # 544
;
; #pragma asm // Send back 0 length DATA1 packet
; anl UCON0,#uRX0E+uSTALL0 ;mask, keep RX flag
anl UCON0,#0x10+0x40 ;mask, keep RX flag
; orl UCON0,#uTSEQ0+uTX0E ;set TSEQ bit+enable endpoint
orl UCON0,#0x80+0x20 ;set TSEQ bit+enable endpoint
; #pragma endasm
;
; }
; SOURCE LINE # 551
RET
; END OF OnGetInterface
;
;
;
;
; static void OnSetInterface()
RSEG ?PR?OnSetInterface?UPSD_USB
OnSetInterface:
; SOURCE LINE # 556
; /******************************************************************************
; Function : static void OnSetInterface()
; Parameters : none
; Description: Handler for SET_INTERFACE() control requests.
; ******************************************************************************/
; {
; SOURCE LINE # 562
; STALL_EP0(); // No features currently implemented, so stall EP0
; SOURCE LINE # 563
LJMP STALL_EP0
; END OF OnSetInterface
; }
;
;
;
;
;
; static void OnGetDescriptor()
RSEG ?PR?OnGetDescriptor?UPSD_USB
OnGetDescriptor:
USING 0
; SOURCE LINE # 570
; /******************************************************************************
; Function : static void OnGetDescriptor()
; Parameters : none
; Description: Handler for GET_DESCRIPTOR() control requests
; ******************************************************************************/
; {
; SOURCE LINE # 576
; data unsigned int bytesRequested;
;
; switch (setupPacket.wValue.hi)
; SOURCE LINE # 579
MOV DPTR,#setupPacket+03H
MOVX A,@DPTR
ADD A,#0FEH
JZ ?C0070
DEC A
JZ ?C0071
ADD A,#0E2H
JZ ?C0074
DEC A
JNZ $ + 5H
LJMP ?C0075
DEC A
JNZ $ + 5H
LJMP ?C0076
ADD A,#022H
JZ $ + 5H
LJMP ?C0077
; {
; SOURCE LINE # 580
; case
; DT_DEVICE:
; SOURCE LINE # 582
?C0069:
; pTransmitBufferEP0 = (uchar*) &deviceDesc;
; SOURCE LINE # 583
MOV DPTR,#pTransmitBufferEP0
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#HIGH (deviceDesc)
MOVX @DPTR,A
INC DPTR
MOV A,#LOW (deviceDesc)
MOVX @DPTR,A
; bytesToTransmitEP0 = sizeof(deviceDesc);
; SOURCE LINE # 584
MOV DPTR,#bytesToTransmitEP0
CLR A
MOVX @DPTR,A
INC DPTR
MOV A,#012H
MOVX @DPTR,A
; break;
; SOURCE LINE # 585
LJMP ?C0068
;
; case
; DT_CONFIGURATION:
; SOURCE LINE # 588
?C0070:
; pTransmitBufferEP0 = (uchar*) &configDesc;
; SOURCE LINE # 589
MOV DPTR,#pTransmitBufferEP0
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#HIGH (configDesc)
MOVX @DPTR,A
INC DPTR
MOV A,#LOW (configDesc)
MOVX @DPTR,A
; bytesToTransmitEP0 = configDesc.wTotalLength.lo;
; SOURCE LINE # 590
MOV DPTR,#configDesc+02H
; break;
; SOURCE LINE # 591
SJMP ?C0112
;
; case
; DT_STRING:
; SOURCE LINE # 594
?C0071:
; pTransmitBufferEP0 = (uchar*) stringDescTable[setupPacket.wValue.lo<4?setupPacket.wValue.lo:4];
; SOURCE LINE # 595
MOV DPTR,#setupPacket+02H
MOVX A,@DPTR
MOV R7,A
CLR C
SUBB A,#04H
JNC ?C0072
SJMP ?C0073
?C0072:
MOV R7,#04H
?C0073:
MOV B,#03H
MOV A,R7
MUL AB
ADD A,#LOW (stringDescTable)
MOV DPL,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -