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