📄 upsd_usb.ls1
字号:
000D 9408 839 SUBB A,#08H
000F EC 840 MOV A,R4
0010 6480 841 XRL A,#080H
0012 9480 842 SUBB A,#080H
0014 4005 843 JC ?C0015
0016 750008 F 844 MOV xBytes?444,#08H
0019 8002 845 SJMP ?C0016
001B 846 ?C0015:
001B 8D00 F 847 MOV xBytes?444,R5
001D 848 ?C0016:
849 ;
A51 MACRO ASSEMBLER UPSD_USB 10/15/2004 20:55:31 PAGE 14
850 ; // Disable endpoint, set DATA0/1 sequence bit and FIFO size
851 ; #pragma asm
852 ; xrl UCON0,#uTSEQ0 ;toggle TSEQ bit
001D 63EA80 853 xrl UCON0,#0x80 ;toggle TSEQ bit
854 ; anl UCON0,#(uTSEQ0+uRX0E)
0020 53EA90 855 anl UCON0,#(0x80+0x10)
856 ; #pragma endasm
857 ; UCON0 |=xBytes; // set FIFO size
858 ; SOURCE LINE # 304
0023 E500 F 859 MOV A,xBytes?444
0025 42EA 860 ORL UCON0,A
0027 861 ?C0017:
862 ;
863 ; while (xBytes--)
864 ; SOURCE LINE # 306
0027 AF00 F 865 MOV R7,xBytes?444
0029 1500 F 866 DEC xBytes?444
002B EF 867 MOV A,R7
002C 6017 868 JZ ?C0018
869 ; {
870 ; SOURCE LINE # 307
871 ; UDT0 = *pData++; // Load data into FIFO
872 ; SOURCE LINE # 308
002E 900000 F 873 MOV DPTR,#pData?442
0031 E0 874 MOVX A,@DPTR
0032 FB 875 MOV R3,A
0033 A3 876 INC DPTR
0034 E4 877 CLR A
0035 75F001 878 MOV B,#01H
0038 120000 F 879 LCALL ?C?ILDIX
003B A9F0 880 MOV R1,B
003D FA 881 MOV R2,A
003E 120000 F 882 LCALL ?C?CLDPTR
0041 F5E7 883 MOV UDT0,A
884 ; }
885 ; SOURCE LINE # 309
0043 80E2 886 SJMP ?C0017
0045 887 ?C0018:
888 ; UCON0 |= uTX0E; // Enable endpoint
889 ; SOURCE LINE # 310
0045 43EA20 890 ORL UCON0,#020H
891 ; }
892 ; SOURCE LINE # 311
0048 22 893 RET
894 ; END OF _TransmitDataEP0
895
896 ;
897 ;
898 ;
899 ;
900 ;
901 ;
902 ;
903 ; void TransmitDataEPx(int x, uchar* pData, int nBytes)
904
---- 905 RSEG ?PR?_TransmitDataEPx?UPSD_USB
0000 906 _TransmitDataEPx:
907 USING 0
908 ; SOURCE LINE # 319
0000 900000 F 909 MOV DPTR,#pData?546
0003 EB 910 MOV A,R3
0004 F0 911 MOVX @DPTR,A
0005 A3 912 INC DPTR
0006 EA 913 MOV A,R2
0007 F0 914 MOVX @DPTR,A
0008 A3 915 INC DPTR
A51 MACRO ASSEMBLER UPSD_USB 10/15/2004 20:55:31 PAGE 15
0009 E9 916 MOV A,R1
000A F0 917 MOVX @DPTR,A
918 ;---- Variable 'x?545' assigned to Register 'R6/R7' ----
919 ; /******************************************************************************
920 ; Function : void TransmitDataEPx()
921 ; Parameters : (int x, uchar* pData, int nBytes)
922 ; Description: Loads EP1 or EP2 transmit FIFO.
923 ; Caller must then clear FIFO status flag (uTXD1F) to arm endpoint.
924 ; ******************************************************************************/
925 ; {
926 ; SOURCE LINE # 326
927 ;
928 ; data unsigned char xBytes;
929 ;
930 ; if (nBytes > 8) xBytes = 8; else xBytes = nBytes;
931 ; SOURCE LINE # 330
000B D3 932 SETB C
000C 900000 F 933 MOV DPTR,#nBytes?547+01H
000F E0 934 MOVX A,@DPTR
0010 9408 935 SUBB A,#08H
0012 900000 F 936 MOV DPTR,#nBytes?547
0015 E0 937 MOVX A,@DPTR
0016 6480 938 XRL A,#080H
0018 9480 939 SUBB A,#080H
001A 4005 940 JC ?C0020
001C 750008 F 941 MOV xBytes?548,#08H
001F 8006 942 SJMP ?C0021
0021 943 ?C0020:
0021 900000 F 944 MOV DPTR,#nBytes?547+01H
0024 E0 945 MOVX A,@DPTR
0025 F500 F 946 MOV xBytes?548,A
0027 947 ?C0021:
948 ; // Disable endpoint, set DATA0/1 sequence bit, endpoint selection, and FIFO size
949 ; UCON1 &= ~uEP12SEL; //mask
950 ; SOURCE LINE # 332
0027 53EBBF 951 ANL UCON1,#0BFH
952 ; UCON1 |= ((x == 2) ? uEP12SEL : 0); //set endpoint
953 ; SOURCE LINE # 333
002A EF 954 MOV A,R7
002B 6402 955 XRL A,#02H
002D 4E 956 ORL A,R6
002E 7004 957 JNZ ?C0022
0030 7F40 958 MOV R7,#040H
0032 8002 959 SJMP ?C0023
0034 960 ?C0022:
0034 7F00 961 MOV R7,#00H
0036 962 ?C0023:
0036 EF 963 MOV A,R7
0037 42EB 964 ORL UCON1,A
965 ; UCON1 &= uTSEQ1+uEP12SEL; //mask
966 ; SOURCE LINE # 334
0039 53EBC0 967 ANL UCON1,#0C0H
968 ; UCON1 ^= uTSEQ1; //toggle DATAx bit
969 ; SOURCE LINE # 335
003C 63EB80 970 XRL UCON1,#080H
971 ; UCON1 |= xBytes; //set FIFO size
972 ; SOURCE LINE # 336
003F E500 F 973 MOV A,xBytes?548
0041 42EB 974 ORL UCON1,A
0043 975 ?C0024:
976 ; while (nBytes--)
977 ; SOURCE LINE # 337
0043 900000 F 978 MOV DPTR,#nBytes?547
0046 74FF 979 MOV A,#0FFH
0048 F5F0 980 MOV B,A
004A 120000 F 981 LCALL ?C?ILDIX
A51 MACRO ASSEMBLER UPSD_USB 10/15/2004 20:55:31 PAGE 16
004D 45F0 982 ORL A,B
004F 6017 983 JZ ?C0025
984 ; {
985 ; SOURCE LINE # 338
986 ; UDT1 = *pData++; // Load data into FIFO
987 ; SOURCE LINE # 339
0051 900000 F 988 MOV DPTR,#pData?546
0054 E0 989 MOVX A,@DPTR
0055 FB 990 MOV R3,A
0056 A3 991 INC DPTR
0057 E4 992 CLR A
0058 75F001 993 MOV B,#01H
005B 120000 F 994 LCALL ?C?ILDIX
005E A9F0 995 MOV R1,B
0060 FA 996 MOV R2,A
0061 120000 F 997 LCALL ?C?CLDPTR
0064 F5E6 998 MOV UDT1,A
999 ; }
1000 ; SOURCE LINE # 340
0066 80DB 1001 SJMP ?C0024
0068 1002 ?C0025:
1003 ; UCON1 |= uTX1E; // Enable endpoint
1004 ; SOURCE LINE # 341
0068 43EB20 1005 ORL UCON1,#020H
1006 ; UIEN |= uTXD1IE; // enable INT
1007 ; SOURCE LINE # 342
006B 43E904 1008 ORL UIEN,#04H
1009 ; }
1010 ; SOURCE LINE # 343
006E 22 1011 RET
1012 ; END OF _TransmitDataEPx
1013
1014 ;
1015 ;
1016 ;
1017 ;
1018 ;
1019 ;
1020 ;
1021 ;
1022 ;
1023 ;
1024 ;
1025 ;
1026 ;
1027 ;
1028 ;
1029 ;
1030 ;
1031 ;
1032 ;
1033 ;
1034 ; //the following function changed on April 30, 2004
1035 ;
1036 ; static void OnGetStatus()
1037
---- 1038 RSEG ?PR?OnGetStatus?UPSD_USB
0000 1039 OnGetStatus:
1040 USING 0
1041 ; SOURCE LINE # 366
1042 ; /******************************************************************************
1043 ; Function : static void OnGetStatus()
1044 ; Parameters : none
1045 ; Description: Handler for GET_STATUS control requests.
1046 ; ******************************************************************************/
1047 ; {
A51 MACRO ASSEMBLER UPSD_USB 10/15/2004 20:55:31 PAGE 17
1048 ; SOUR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -