📄 usbproto.ls1
字号:
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 + -