📄 mainloop.ls1
字号:
856 ; //D12SUSPD = 1; /* release D12 suspend control */
857 ; } // if bus reset
858 ; SOURCE LINE # 237
0045 859 ?C0014:
860 ;
861 ; if (bEPPflags.bits.suspend) {
862 ; SOURCE LINE # 239
0045 AF00 F 863 MOV R7,bEPPflags
0047 EF 864 MOV A,R7
0048 13 865 RRC A
0049 13 866 RRC A
004A 543F 867 ANL A,#03FH
004C 30E00B 868 JNB ACC.0,?C0015
869 ; DISABLE;
870 ; SOURCE LINE # 240
A51 MACRO ASSEMBLER MAINLOOP 03/23/2005 21:15:56 PAGE 15
004F C2AF 871 CLR EA
872 ; bEPPflags.bits.suspend= 0;
873 ; SOURCE LINE # 241
0051 AF00 F 874 MOV R7,bEPPflags
0053 EF 875 MOV A,R7
0054 54FB 876 ANL A,#0FBH
0056 F500 F 877 MOV bEPPflags,A
878 ; ENABLE;
879 ; SOURCE LINE # 242
0058 D2AF 880 SETB EA
881 ; //suspend_change();
882 ; } // if suspend change
883 ; SOURCE LINE # 244
005A 884 ?C0015:
885 ;
886 ; if (bEPPflags.bits.setup_packet){
887 ; SOURCE LINE # 246
005A AF00 F 888 MOV R7,bEPPflags
005C EF 889 MOV A,R7
005D 13 890 RRC A
005E 13 891 RRC A
005F 13 892 RRC A
0060 541F 893 ANL A,#01FH
0062 30E0AF 894 JNB ACC.0,?C0010
895 ; DISABLE;
896 ; SOURCE LINE # 247
0065 C2AF 897 CLR EA
898 ; bEPPflags.bits.setup_packet = 0;
899 ; SOURCE LINE # 248
0067 AF00 F 900 MOV R7,bEPPflags
0069 EF 901 MOV A,R7
006A 54F7 902 ANL A,#0F7H
006C F500 F 903 MOV bEPPflags,A
904 ; ENABLE;
905 ; SOURCE LINE # 249
006E D2AF 906 SETB EA
907 ; control_handler();
908 ; SOURCE LINE # 250
0070 120000 F 909 LCALL control_handler
910 ; } // if setup_packet
911 ; SOURCE LINE # 251
912 ;
913 ; } // Main Loop
914 ; SOURCE LINE # 253
0073 809F 915 SJMP ?C0010
916 ;
917 ; }
918 ; SOURCE LINE # 255
0075 919 ?C0017:
0075 22 920 RET
921 ; END OF main
922
923 ;
924 ; /* wakeup D12, make MCU into low power mode, then suspend D12 again */
925 ; void suspend_change(void)
926
---- 927 RSEG ?PR?suspend_change?MAINLOOP
0000 928 suspend_change:
929 ; SOURCE LINE # 258
930 ; {
931 ; SOURCE LINE # 259
932 ; if (D12SUSPD == 1)
933 ; SOURCE LINE # 260
0000 30B302 934 JNB D12SUSPD,?C0018
935 ; D12SUSPD = 0;
936 ; SOURCE LINE # 261
A51 MACRO ASSEMBLER MAINLOOP 03/23/2005 21:15:56 PAGE 16
0003 C2B3 937 CLR D12SUSPD
0005 938 ?C0018:
939 ;
940 ; P0 = 0xFF;
941 ; SOURCE LINE # 263
0005 7580FF 942 MOV P0,#0FFH
943 ; P1 = 0xFF;
944 ; SOURCE LINE # 264
0008 7590FF 945 MOV P1,#0FFH
946 ; P2 = 0xFF;
947 ; SOURCE LINE # 265
000B 75A0FF 948 MOV P2,#0FFH
949 ; P3 = 0xFF;
950 ; SOURCE LINE # 266
000E 75B0FF 951 MOV P3,#0FFH
952 ; D12SUSPD = 1; /* suspend D12 */
953 ; SOURCE LINE # 267
0011 D2B3 954 SETB D12SUSPD
955 ; PCON |= 0x02; /* into low power mode */
956 ; SOURCE LINE # 268
0013 438702 957 ORL PCON,#02H
0016 958 ?C0019:
959 ; while (1) ; /* hangup, only reset could wake up MCU */
960 ; SOURCE LINE # 269
0016 80FE 961 SJMP ?C0019
962 ; END OF suspend_change
963
964 ; }
965 ;
966 ; /* Stall Enpoints */
967 ; void stall_ep0(void)
968
---- 969 RSEG ?PR?stall_ep0?MAINLOOP
0000 970 stall_ep0:
971 USING 0
972 ; SOURCE LINE # 273
973 ; {
974 ; SOURCE LINE # 274
975 ; D12_SetEndpointStatus(0, 1);
976 ; SOURCE LINE # 275
0000 7D01 977 MOV R5,#01H
0002 E4 978 CLR A
0003 FF 979 MOV R7,A
0004 120000 F 980 LCALL _D12_SetEndpointStatus
981 ; D12_SetEndpointStatus(1, 1);
982 ; SOURCE LINE # 276
0007 7D01 983 MOV R5,#01H
0009 7F01 984 MOV R7,#01H
000B 020000 F 985 LJMP _D12_SetEndpointStatus
986 ; END OF stall_ep0
987
988 ; }
989 ;
990 ; void disconnect_USB(void)
991
---- 992 RSEG ?PR?disconnect_USB?MAINLOOP
0000 993 disconnect_USB:
994 USING 0
995 ; SOURCE LINE # 279
996 ; {
997 ; SOURCE LINE # 280
998 ; //D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING, D12_SETTOONE | D12_CLOCK_12M);
999 ; /* Clear Soft_Connect bit, disconnect pull-up resistor */
1000 ; D12_SetMode(0x00, 0x00);
1001 ; SOURCE LINE # 283
0000 E4 1002 CLR A
A51 MACRO ASSEMBLER MAINLOOP 03/23/2005 21:15:56 PAGE 17
0001 FD 1003 MOV R5,A
0002 FF 1004 MOV R7,A
0003 020000 F 1005 LJMP _D12_SetMode
1006 ; END OF disconnect_USB
1007
1008 ; }
1009 ;
1010 ; void connect_USB(void)
1011
---- 1012 RSEG ?PR?connect_USB?MAINLOOP
0000 1013 connect_USB:
1014 USING 0
1015 ; SOURCE LINE # 286
1016 ; {
1017 ; SOURCE LINE # 287
1018 ; unsigned int i;
1019 ; // reset event flags
1020 ; DISABLE;
1021 ; SOURCE LINE # 290
0000 C2AF 1022 CLR EA
1023 ; bEPPflags.value = 0; //for (i=0; i<11; i++) bEPPflags.c_value[i] = 0;
1024 ; SOURCE LINE # 291
0002 E4 1025 CLR A
0003 F500 F 1026 MOV bEPPflags,A
0005 F500 F 1027 MOV bEPPflags+01H,A
1028 ; ENABLE;
1029 ; SOURCE LINE # 292
0007 D2AF 1030 SETB EA
1031 ;
1032 ; // disable normal+sof interrupt
1033 ; D12_SetDMA(0x00);
1034 ; SOURCE LINE # 295
0009 FF 1035 MOV R7,A
000A 120000 F 1036 LCALL _D12_SetDMA
1037 ;
1038 ; // Initialize D12 working mode
1039 ; D12_SetMode(D12_NOLAZYCLOCK|D12_CLOCKRUNNING|D12_SOFTCONNECT, D12_SETTOONE | D12_CL
OCK_12M);
1040 ; SOURCE LINE # 298
000D 7D43 1041 MOV R5,#043H
000F 7F16 1042 MOV R7,#016H
0011 020000 F 1043 LJMP _D12_SetMode
1044 ; END OF connect_USB
1045
1046 ; //D12_SetMode(D12_SOFTCONNECT, 0x00); /* Enable softconnect */
1047 ; }
1048 ;
1049 ;
1050 ; void reconnect_USB(void)
1051
---- 1052 RSEG ?PR?reconnect_USB?MAINLOOP
0000 1053 reconnect_USB:
1054 USING 0
1055 ; SOURCE LINE # 303
1056 ; {
1057 ; SOURCE LINE # 304
1058 ; unsigned long clk_cnt;
1059 ;
1060 ; //Turn on LEDs
1061 ; MCU_LED0 = 0;
1062 ; SOURCE LINE # 308
0000 C292 1063 CLR MCU_LED0
1064 ; MCU_LED1 = 0;
1065 ; SOURCE LINE # 309
0002 C293 1066 CLR MCU_LED1
1067 ;
A51 MACRO ASSEMBLER MAINLOOP 03/23/2005 21:15:56 PAGE 18
1068 ; //D12SUSPD = 0; /* wakeup D12 */
1069 ; disconnect_USB();
1070 ; SOURCE LINE # 312
0004 120000 F 1071 LCALL disconnect_USB
1072 ;
1073 ; clk_cnt = ClockTicks;
1074 ; SOURCE LINE # 314
0007 850000 F 1075 MOV clk_cnt?946+03H,ClockTicks+03H
000A 850000 F 1076 MOV clk_cnt?946+02H,ClockTicks+02H
000D 850000 F 1077 MOV clk_cnt?946+01H,ClockTic
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -