📄 usb.ls1
字号:
741 ; SOURCE LINE # 33
003C AF00 F 742 MOV R7,bEPPflags
003E EF 743 MOV A,R7
003F 54FD 744 ANL A,#0FDH
0041 F500 F 745 MOV bEPPflags,A
746 ; ENABLE;
747 ; SOURCE LINE # 34
0043 D2AF 748 SETB EA
749 ; // Release D12's SUSPEND pin after bus reset
750 ; // Enable 74HCT123 pulse generation before disconnect
751 ; D12SUSPD = 1;
752 ; SOURCE LINE # 37
0045 D2B3 753 SETB D12SUSPD
754 ; }
755 ; SOURCE LINE # 38
0047 756 ?C0005:
757 ; if (bEPPflags.bits.suspend)
758 ; SOURCE LINE # 39
0047 AF00 F 759 MOV R7,bEPPflags
0049 EF 760 MOV A,R7
004A 13 761 RRC A
004B 13 762 RRC A
004C 543F 763 ANL A,#03FH
004E 30E028 764 JNB ACC.0,?C0006
765 ; { //挂起改变处理
766 ; SOURCE LINE # 40
767 ; DISABLE;
768 ; SOURCE LINE # 41
0051 C2AF 769 CLR EA
770 ; bEPPflags.bits.suspend= 0;
771 ; SOURCE LINE # 42
0053 AF00 F 772 MOV R7,bEPPflags
0055 EF 773 MOV A,R7
0056 54FB 774 ANL A,#0FBH
0058 F500 F 775 MOV bEPPflags,A
776 ; ENABLE;
777 ; SOURCE LINE # 43
005A D2AF 778 SETB EA
779 ; if(D12SUSPD == 1)
780 ; SOURCE LINE # 44
005C 30B31A 781 JNB D12SUSPD,?C0006
782 ; { //挂起处理
783 ; SOURCE LINE # 45
A51 MACRO ASSEMBLER USB 07/13/2004 13:08:43 PAGE 15
784 ; D12SUSPD = 0;
785 ; SOURCE LINE # 46
005F C2B3 786 CLR D12SUSPD
787 ; P0 = 0xFF;
788 ; SOURCE LINE # 47
0061 7580FF 789 MOV P0,#0FFH
790 ; P1 = 0xFF;
791 ; SOURCE LINE # 48
0064 7590FF 792 MOV P1,#0FFH
793 ; P2 = 0xFF;
794 ; SOURCE LINE # 49
0067 75A0FF 795 MOV P2,#0FFH
796 ; P3 = 0xFF;
797 ; SOURCE LINE # 50
006A 75B0FF 798 MOV P3,#0FFH
799 ; D12_SetDMA(0xC3);
800 ; SOURCE LINE # 51
006D 7FC3 801 MOV R7,#0C3H
006F 120000 F 802 LCALL _D12_SetDMA
803 ; D12SUSPD = 1;
804 ; SOURCE LINE # 52
0072 D2B3 805 SETB D12SUSPD
806 ; PCON |= 0x02;
807 ; SOURCE LINE # 53
0074 438702 808 ORL PCON,#02H
0077 809 ?C0008:
810 ; while (1);
811 ; SOURCE LINE # 54
0077 80FE 812 SJMP ?C0008
813 ; }
814 ; SOURCE LINE # 55
815 ; }
816 ; SOURCE LINE # 56
0079 817 ?C0006:
818 ; if (bEPPflags.bits.setup_packet)
819 ; SOURCE LINE # 57
0079 AF00 F 820 MOV R7,bEPPflags
007B EF 821 MOV A,R7
007C 13 822 RRC A
007D 13 823 RRC A
007E 13 824 RRC A
007F 541F 825 ANL A,#01FH
0081 30E010 826 JNB ACC.0,?C0010
827 ; { //Setup包处理
828 ; SOURCE LINE # 58
829 ; DISABLE;
830 ; SOURCE LINE # 59
0084 C2AF 831 CLR EA
832 ; bEPPflags.bits.setup_packet = 0;
833 ; SOURCE LINE # 60
0086 AF00 F 834 MOV R7,bEPPflags
0088 EF 835 MOV A,R7
0089 54F7 836 ANL A,#0F7H
008B F500 F 837 MOV bEPPflags,A
838 ; ENABLE;
839 ; SOURCE LINE # 61
008D D2AF 840 SETB EA
841 ; control_handler(); //调用请求处理子程序
842 ; SOURCE LINE # 62
008F 120000 F 843 LCALL control_handler
844 ; D12SUSPD = 1;
845 ; SOURCE LINE # 63
0092 D2B3 846 SETB D12SUSPD
847 ; }
848 ; SOURCE LINE # 64
0094 849 ?C0010:
A51 MACRO ASSEMBLER USB 07/13/2004 13:08:43 PAGE 16
850 ; if(bEPPflags.bits.ep1_rxdone)
851 ; SOURCE LINE # 65
0094 AF00 F 852 MOV R7,bEPPflags+01H
0096 EF 853 MOV A,R7
0097 13 854 RRC A
0098 13 855 RRC A
0099 543F 856 ANL A,#03FH
009B 30E014 857 JNB ACC.0,?C0011
858 ; {
859 ; SOURCE LINE # 66
860 ; D12_WriteEndpoint(3,rcv_data_len,GenEpBuf);
861 ; SOURCE LINE # 67
009E 7B00 862 MOV R3,#00H
00A0 7A00 F 863 MOV R2,#HIGH (GenEpBuf)
00A2 7900 F 864 MOV R1,#LOW (GenEpBuf)
00A4 AD00 F 865 MOV R5,rcv_data_len
00A6 7F03 866 MOV R7,#03H
00A8 120000 F 867 LCALL _D12_WriteEndpoint
868 ; bEPPflags.bits.ep1_rxdone = 0 ;
869 ; SOURCE LINE # 68
00AB AF00 F 870 MOV R7,bEPPflags+01H
00AD EF 871 MOV A,R7
00AE 54FB 872 ANL A,#0FBH
00B0 F500 F 873 MOV bEPPflags+01H,A
874 ; }
875 ; SOURCE LINE # 69
00B2 876 ?C0011:
877 ; if(bEPPflags.bits.ep2_rxdone)
878 ; SOURCE LINE # 70
00B2 AF00 F 879 MOV R7,bEPPflags+02H
00B4 EF 880 MOV A,R7
00B5 20E003 881 JB ACC.0,$ + 6H
00B8 020000 F 882 LJMP ?C0001
883 ; {
884 ; SOURCE LINE # 71
885 ; D12_WriteEndpoint(5,rcv_data_len,EpBuf);
886 ; SOURCE LINE # 72
00BB 7B00 887 MOV R3,#00H
00BD 7A00 F 888 MOV R2,#HIGH (EpBuf)
00BF 7900 F 889 MOV R1,#LOW (EpBuf)
00C1 AD00 F 890 MOV R5,rcv_data_len
00C3 7F05 891 MOV R7,#05H
00C5 120000 F 892 LCALL _D12_WriteEndpoint
893 ; bEPPflags.bits.ep2_rxdone = 0 ;
894 ; SOURCE LINE # 73
00C8 AF00 F 895 MOV R7,bEPPflags+02H
00CA EF 896 MOV A,R7
00CB 54FE 897 ANL A,#0FEH
00CD F500 F 898 MOV bEPPflags+02H,A
899 ; }
900 ; SOURCE LINE # 74
901 ; }
902 ; SOURCE LINE # 75
00CF 020000 F 903 LJMP ?C0001
904 ; END OF main
905
906 ; }
907 ;
908 ; //返回stall应答
909 ; void stall_ep0(void)
910
---- 911 RSEG ?PR?stall_ep0?USB
0000 912 stall_ep0:
913 USING 0
914 ; SOURCE LINE # 79
915 ; {
A51 MACRO ASSEMBLER USB 07/13/2004 13:08:43 PAGE 17
916 ; SOURCE LINE # 80
917 ; D12_SetEndpointStatus(0, 1);
918 ; SOURCE LINE # 81
0000 120000 F 919 LCALL L?0215
920 ; D12_SetEndpointStatus(1, 1);
921 ; SOURCE LINE # 82
0003 7D01 922 MOV R5,#01H
0005 7F01 923 MOV R7,#01H
0007 020000 F 924 LJMP _D12_SetEndpointStatus
925 ; END OF stall_ep0
926
927 ; }
928 ;
929 ; //断开USB总线
930 ; void disconnect_USB(void)
931
---- 932 RSEG ?PR?disconnect_USB?USB
0000 933 disconnect_USB:
934 USING 0
935 ; SOURCE LINE # 86
936 ; {
937 ; SOURCE LINE # 87
938 ; // Initialize D12 configuration
939 ; D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
940 ; SOURCE LINE # 89
0000 7D43 941 MOV R5,#043H
0002 7F02 942 MOV R7,#02H
0004 020000 F 943 LJMP _D12_SetMode
944 ; END OF disconnect_USB
945
946 ; }
947 ;
948 ; //连接USB总线
949 ; void connect_USB(void)
950
---- 951 RSEG ?PR?connect_USB?USB
0000 952 connect_USB:
953 USING 0
954 ; SOURCE LINE # 93
955 ; {
956 ; SOURCE LINE # 94
957 ; // reset event flags
958 ; DISABLE;
959 ; SOURCE LINE # 96
0000 C2AF 960 CLR EA
961 ; bEPPflags.value = 0;//清乘
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -