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