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

📄 usbproto.ls1

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

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

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

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

⌨️ 快捷键说明

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