⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbproto.ls1

📁 Comlete files for fullfile the slave USB function!
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     829                             ; SOURCE LINE # 308
0000 E500     F      830             MOV     A,ControlData
0002 541F            831             ANL     A,#01FH
0004 F500     F      832             MOV     bRecipient?245,A
                     833     ; 
                     834     ;       if (bRecipient == USB_RECIPIENT_DEVICE
                     835                             ; SOURCE LINE # 310
0006 7015            836             JNZ     ?C0015
0008 E500     F      837             MOV     A,ControlData+03H
000A 6401            838             XRL     A,#01H
000C 4500     F      839             ORL     A,ControlData+02H
000E 700D            840             JNZ     ?C0015
                     841     ;               && ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
                     842                             ; SOURCE LINE # 311
                     843     ;               DISABLE;
                     844                             ; SOURCE LINE # 312
0010 C2AF            845             CLR     EA
                     846     ;               bEPPflags.bits.remote_wakeup = 0;
                     847                             ; SOURCE LINE # 313
0012 AF00     F      848             MOV     R7,bEPPflags
0014 EF              849             MOV     A,R7
0015 54EF            850             ANL     A,#0EFH
0017 F500     F      851             MOV     bEPPflags,A
                     852     ;               ENABLE;
                     853                             ; SOURCE LINE # 314
0019 D2AF            854             SETB    EA
                     855     ;               single_transmit(0, 0);
                     856                             ; SOURCE LINE # 315
                     857     ;       }
                     858                             ; SOURCE LINE # 316
001B 8028            859             SJMP    ?C0076
001D                 860     ?C0015:
                     861     ;       else if (bRecipient == USB_RECIPIENT_ENDPOINT
                     862                             ; SOURCE LINE # 317
001D E500     F      863             MOV     A,bRecipient?245
001F 6402            864             XRL     A,#02H
0021 702D            865             JNZ     ?C0017
0023 E500     F      866             MOV     A,ControlData+03H
0025 4500     F      867             ORL     A,ControlData+02H
0027 7027            868             JNZ     ?C0017
                     869     ;               && ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
                     870                             ; SOURCE LINE # 318
                     871     ;               endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
                     872                             ; SOURCE LINE # 319
0029 E500     F      873             MOV     A,ControlData+05H
002B 5403            874             ANL     A,#03H
002D F500     F      875             MOV     endp?244,A
                     876     ;               if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTIO
                             N_MASK)
                     877                             ; SOURCE LINE # 320
002F E500     F      878             MOV     A,ControlData+05H
0031 30E707          879             JNB     ACC.7,?C0018
                     880     ;                       /* clear TX stall for IN on EPn. */
                     881     ;                       D12_SetEndpointStatus(endp*2 + 1, 0);
                     882                             ; SOURCE LINE # 322
0034 E500     F      883             MOV     A,endp?244
0036 25E0            884             ADD     A,ACC
0038 04              885             INC     A
0039 8004            886             SJMP    ?C0075
A51 MACRO ASSEMBLER  USBPROTO                                                             03/23/2005 21:15:54 PAGE    15

003B                 887     ?C0018:
                     888     ;               else
                     889     ;                       /* clear RX stall for OUT on EPn. */
                     890     ;                       D12_SetEndpointStatus(endp*2, 0);
                     891                             ; SOURCE LINE # 325
003B E500     F      892             MOV     A,endp?244
003D 25E0            893             ADD     A,ACC
003F                 894     ?C0075:
003F FF              895             MOV     R7,A
0040 E4              896             CLR     A
0041 FD              897             MOV     R5,A
0042 120000   F      898             LCALL   _D12_SetEndpointStatus
0045                 899     ?C0019:
                     900     ;               single_transmit(0, 0);
                     901                             ; SOURCE LINE # 326
0045                 902     ?C0076:
0045 7B00            903             MOV     R3,#00H
0047 7A00            904             MOV     R2,#00H
0049 7900            905             MOV     R1,#00H
004B E4              906             CLR     A
004C FD              907             MOV     R5,A
004D 020000   F      908             LJMP    _single_transmit
                     909     ;       } else
                     910                             ; SOURCE LINE # 327
0050                 911     ?C0017:
                     912     ;               stall_ep0();
                     913                             ; SOURCE LINE # 328
0050 120000   F      914             LCALL   stall_ep0
                     915     ; }
                     916                             ; SOURCE LINE # 329
0053                 917     ?C0021:
0053 22              918             RET     
                     919     ; END OF clear_feature
                     920     
                     921     ; 
                     922     ; void set_feature(void)
                     923     
----                 924             RSEG  ?PR?set_feature?USBPROTO
0000                 925     set_feature:
                     926             USING   0
                     927                             ; SOURCE LINE # 331
                     928     ; {
                     929                             ; SOURCE LINE # 332
                     930     ;       unsigned char endp;
                     931     ;       unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
                     932                             ; SOURCE LINE # 334
0000 E500     F      933             MOV     A,ControlData
0002 541F            934             ANL     A,#01FH
0004 F500     F      935             MOV     bRecipient?347,A
                     936     ; 
                     937     ;       if (bRecipient == USB_RECIPIENT_DEVICE
                     938                             ; SOURCE LINE # 336
0006 7015            939             JNZ     ?C0022
0008 E500     F      940             MOV     A,ControlData+03H
000A 6401            941             XRL     A,#01H
000C 4500     F      942             ORL     A,ControlData+02H
000E 700D            943             JNZ     ?C0022
                     944     ;               && ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
                     945                             ; SOURCE LINE # 337
                     946     ;               DISABLE;
                     947                             ; SOURCE LINE # 338
0010 C2AF            948             CLR     EA
                     949     ;               bEPPflags.bits.remote_wakeup = 1;
                     950                             ; SOURCE LINE # 339
0012 AF00     F      951             MOV     R7,bEPPflags
0014 EF              952             MOV     A,R7
A51 MACRO ASSEMBLER  USBPROTO                                                             03/23/2005 21:15:54 PAGE    16

0015 4410            953             ORL     A,#010H
0017 F500     F      954             MOV     bEPPflags,A
                     955     ;               ENABLE;
                     956                             ; SOURCE LINE # 340
0019 D2AF            957             SETB    EA
                     958     ;               single_transmit(0, 0);
                     959                             ; SOURCE LINE # 341
                     960     ;       }
                     961                             ; SOURCE LINE # 342
001B 8028            962             SJMP    ?C0078
001D                 963     ?C0022:
                     964     ;       else if (bRecipient == USB_RECIPIENT_ENDPOINT
                     965                             ; SOURCE LINE # 343
001D E500     F      966             MOV     A,bRecipient?347
001F 6402            967             XRL     A,#02H
0021 702D            968             JNZ     ?C0024
0023 E500     F      969             MOV     A,ControlData+03H
0025 4500     F      970             ORL     A,ControlData+02H
0027 7027            971             JNZ     ?C0024
                     972     ;               && ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
                     973                             ; SOURCE LINE # 344
                     974     ;               endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
                     975                             ; SOURCE LINE # 345
0029 E500     F      976             MOV     A,ControlData+05H
002B 5403            977             ANL     A,#03H
002D F500     F      978             MOV     endp?346,A
                     979     ;               if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTIO
                             N_MASK)
                     980                             ; SOURCE LINE # 346
002F E500     F      981             MOV     A,ControlData+05H
0031 30E707          982             JNB     ACC.7,?C0025
                     983     ;                       /* clear TX stall for IN on EPn. */
                     984     ;                       D12_SetEndpointStatus(endp*2 + 1, 1);
                     985                             ; SOURCE LINE # 348
0034 E500     F      986             MOV     A,endp?346
0036 25E0            987             ADD     A,ACC
0038 04              988             INC     A
0039 8004            989             SJMP    ?C0077
003B                 990     ?C0025:
                     991     ;               else
                     992     ;                       /* clear RX stall for OUT on EPn. */
                     993     ;                       D12_SetEndpointStatus(endp*2, 1);
                     994                             ; SOURCE LINE # 351
003B E500     F      995             MOV     A,endp?346
003D 25E0            996             ADD     A,ACC
003F                 997     ?C0077:
003F FF              998             MOV     R7,A
0040 7D01            999             MOV     R5,#01H
0042 120000   F     1000             LCALL   _D12_SetEndpointStatus
0045                1001     ?C0026:
                    1002     ;               single_transmit(0, 0);
                    1003                             ; SOURCE LINE # 352
0045                1004     ?C0078:
0045 7B00           1005             MOV     R3,#00H
0047 7A00           1006             MOV     R2,#00H
0049 7900           1007             MOV     R1,#00H
004B E4             1008             CLR     A
004C FD             1009             MOV     R5,A
004D 020000   F     1010             LJMP    _single_transmit
                    1011     ;       } else
                    1012                             ; SOURCE LINE # 353
0050                1013     ?C0024:
                    1014     ;               stall_ep0();
                    1015                             ; SOURCE LINE # 354
0050 120000   F     1016             LCALL   stall_ep0
                    1017     ; }
A51 MACRO ASSEMBLER  USBPROTO                                                             03/23/2005 21:15:54 PAGE    17

                    1018                             ; SOURCE LINE # 355
0053                1019     ?C0028:
0053 22             1020             RET     
                    1021     ; END OF set_feature
                    1022     
                    1023     ; 
                    1024     ; void set_address(void)
                    1025     
----                1026             RSEG  ?PR?set_address?USBPROTO
0000                1027     set_address:
                    1028             USING   0
                    1029                             ; SOURCE LINE # 357
                    1030     ; {
                    1031                             ; SOURCE LINE # 358
                    1032     ;       D12_SetAddressEnable((unsigned char)(ControlData.DeviceRequest.wValue &
                    1033                             ; SOURCE LINE # 359
0000 E500     F     1034             MOV     A,ControlData+03H
0002 547F           1035             ANL     A,#07FH
0004 FF             1036             MOV     R7,A
0005 7D01           1037             MOV     R5,#01H
0007 120000   F     1038             LCALL   _D12_SetAddressEnable
                    1039     ;               DEVICE_ADDRESS_MASK), 1);
                    1040     ;       single_transmit(0, 0);
           

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -