📄 07_08.lst
字号:
898 00261 0A58 BS FLAG1,MOTORR_ON
899
900 00262 0E03 JBS STATUS,C
901 00263 0858 BC FLAG1,MOTORR_ON
902
903 00264 TURN_EXIT:
904 00264 15F8 JMP MODE1
905
906 ;*************************************************
907
908 00265 MODE1_L:
909 00265 0CD7 JBC FLAG0,DYONL_FLAG ;test the dyonl_flag if dyonl_flag=1,speedl=off 0
910 00266 1672 JMP SPEED_OFF_L
911
912 00267 SPEED_ON_L:
913 00267 0A95 BS R5_BUF,CONT1_L ;cont1+=1 for delay_on_l
914
915 00268 046B MOV DELAY_ON_L,DELAY_ON_L ;test the motor play timer is not out
916 00269 0C83 JBC STATUS,Z
917 0026A 166D JMP $+3
918 0026B 01EB DEC DELAY_ON_L
919 0026C 1672 JMP SPEED_OFF_L
920
921 0026D 0422 MOV A,SPEED_L ;the delay_on_l time is from the speedl
922 0026E 1068 CALL DELAYON_L_TAB
923 0026F 006B MOV DELAY_ON_L,A
924 00270 0895 BC R5_BUF,CONT1_L
925 00271 0AD7 BS FLAG0,DYONL_FLAG
926
927 00272 SPEED_OFF_L:
928 00272 046C MOV DELAY_OFF_L,DELAY_OFF_L ;test the total cycle is not out
929 00273 0C83 JBC STATUS,Z
930 00274 1677 JMP $+3
931 00275 01EC DEC DELAY_OFF_L
932 00276 0012 RET
933
934 00277 1812 MOV A,@0X12
935 00278 006C MOV DELAY_OFF_L,A
936 00279 08D7 BC FLAG0,DYONL_FLAG
937 0027A 0012 RET
938
939 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
940
941 0027B MODE1_L_NEV:
942 0027B 0CD7 JBC FLAG0,DYONL_FLAG
943 0027C 1688 JMP SPEED_OFF_L_NEV
944
945 0027D SPEED_ON_L_NEV:
946 0027D 0A55 BS R5_BUF,CONT2_L
947 0027E 046B MOV DELAY_ON_L,DELAY_ON_L
948 0027F 0C83 JBC STATUS,Z
949 00280 1683 JMP $+3
950 00281 01EB DEC DELAY_ON_L
951 00282 1688 JMP SPEED_OFF_L_NEV
952
953 00283 0422 MOV A,SPEED_L
954 00284 1068 CALL DELAYON_L_TAB
955 00285 006B MOV DELAY_ON_L,A
956 00286 0AD7 BS FLAG0,DYONL_FLAG
957 00287 0855 BC R5_BUF,CONT2_L
958
959 00288 SPEED_OFF_L_NEV:
960 00288 046C MOV DELAY_OFF_L,DELAY_OFF_L
961 00289 0C83 JBC STATUS,Z
962 0028A 168D JMP $+3
963 0028B 01EC DEC DELAY_OFF_L
964 0028C 0012 RET
965
966 0028D 1812 MOV A,@0X12
967 0028E 006C MOV DELAY_OFF_L,A
968 0028F 08D7 BC FLAG0,DYONL_FLAG
969 00290 0012 RET
970 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
971
972 00291 MODE1_R:
973 00291 0D17 JBC FLAG0,DYONR_FLAG
974 00292 169E JMP SPEED_OFF_R
975
976 00293 SPEED_ON_R:
977 00293 0AD5 BS R5_BUF,CONT1_R
978 00294 046D MOV DELAY_ON_R,DELAY_ON_R
979 00295 0C83 JBC STATUS,Z
980 00296 1699 JMP DELAY_R
981 00297 01ED DEC DELAY_ON_R
982 00298 169E JMP SPEED_OFF_R
983 00299 DELAY_R:
984 00299 0423 MOV A,SPEED_R
985 0029A 1072 CALL DELAYON_R_TAB
986 0029B 006D MOV DELAY_ON_R,A
987 0029C 08D5 BC R5_BUF,CONT1_R
988 0029D 0B17 BS FLAG0,DYONR_FLAG
989
990 0029E SPEED_OFF_R:
991 0029E 046E MOV DELAY_OFF_R,DELAY_OFF_R
992 0029F 0C83 JBC STATUS,Z
993 002A0 16A3 JMP $+3
994 002A1 01EE DEC DELAY_OFF_R
995 002A2 0012 RET
996
997 002A3 180C MOV A,@0X0C
998 002A4 006E MOV DELAY_OFF_R,A
999 002A5 0917 BC FLAG0,DYONR_FLAG
1000 002A6 0012 RET
1001
1002 ;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1003
1004 002A7 MODE1_R_NEV:
1005 002A7 0D17 JBC FLAG0,DYONR_FLAG
1006 002A8 16B4 JMP SPEED_OFF_R_NEV
1007
1008 002A9 SPEED_ON_R_NEV:
1009 002A9 0B15 BS R5_BUF,CONT2_R
1010 002AA 046D MOV DELAY_ON_R,DELAY_ON_R
1011 002AB 0C83 JBC STATUS,Z
1012 002AC 16AF JMP $+3
1013 002AD 01ED DEC DELAY_ON_R
1014 002AE 16B4 JMP SPEED_OFF_R_NEV
1015
1016 002AF 0423 MOV A,SPEED_R
1017 002B0 1072 CALL DELAYON_R_TAB
1018 002B1 006D MOV DELAY_ON_R,A
1019 002B2 0B17 BS FLAG0,DYONR_FLAG
1020 002B3 0915 BC R5_BUF,CONT2_R
1021
1022 002B4 SPEED_OFF_R_NEV:
1023 002B4 046E MOV DELAY_OFF_R,DELAY_OFF_R
1024 002B5 0C83 JBC STATUS,Z
1025 002B6 16B9 JMP $+3
1026 002B7 01EE DEC DELAY_OFF_R
1027 002B8 0012 RET
1028
1029 002B9 180C MOV A,@0X0C
1030 002BA 006E MOV DELAY_OFF_R,A
1031 002BB 0917 BC FLAG0,DYONR_FLAG
1032 002BC 0012 RET
1033
1034 ;*************************************exit interrupter
1035
1036 002BD INT_EXIT:
1037
1038 002BD 080F BC ISR,TCIF ;clean the TCC intterrupt flag
1039
1040 002BE 0413 MOV A,R4_BUF
1041 002BF 0044 MOV RSR,A
1042
1043 002C0 0412 MOV A,R3_BUF
1044 002C1 0043 MOV STATUS,A
1045
1046 002C2 0711 SWAPA ACC_BUF
1047
1048 002C3 0013 RETI
1049
1050 002C4 POWERON:
1051 002C4 0011 DISI ;colse the intterrupt
1052 002C5 1800 MOV A,@0X00 ;clean the special register
1053 002C6 0045 MOV PORT5,A
1054 002C7 0046 MOV PORT6,A
1055
1056 002C8 004E MOV WPC,A
1057 002C9 004F MOV ISR,A
1058
1059 002CA 1800 MOV A,@0X00 ;PORT6 set as output
1060 002CB 0006 IOW P6CR
1061 002CC 1860 MOV A,@0X60
1062 002CD 0005 IOW P5CR
1063 002CE 18FF MOV A,@0XFF
1064 002CF 000B IOW PDCR
1065 002D0 180F MOV A,@0X0F
1066 002D1 000D IOW PHCR
1067
1068
1069
1070 002D2 1855 MOV A,@0X55 ;power on test1
1071 002D3 0332 XOR A,POWERTEST1
1072 002D4 0E83 JBS STATUS,Z
1073 002D5 16DF JMP CLR_RAM
1074
1075 002D6 18AA MOV A,@0XAA ;power on test2
1076 002D7 0333 XOR A,POWERTEST2
1077 002D8 0E83 JBS STATUS,Z
1078 002D9 16DF JMP CLR_RAM
1079
1080 002DA 1818 MOV A,@0X18 ;test power on T=1,P=1
1081 002DB 0283 AND A,STATUS
1082 002DC 1B18 XOR A,@0X18
1083 002DD 0C83 JBC STATUS,Z
1084 002DE 16E9 JMP MAIN
1085
1086
1087 002DF CLR_RAM: ;clean the RAM
1088 002DF 182F MOV A,@0X2F
1089 002E0 0050 MOV TEMP,A
1090 002E1 1811 MOV A,@0X11
1091 002E2 0044 MOV RSR,A
1092 002E3 LOOP1:
1093 002E3 0080 CLRA
1094 002E4 0040 MOV R0,A
1095 002E5 0544 INC RSR
1096 002E6 05D0 DJZ TEMP
1097 002E7 16E3 JMP LOOP1
1098 002E8 00D0 CLR TEMP
1099
1100 ;*********************************************************
1101 002E9 MAIN:
1102 002E9 1855 MOV A,@0X55
1103 002EA 0072 MOV POWERTEST1,A
1104
1105 002EB 18AA MOV A,@0XAA
1106 002EC 0073 MOV POWERTEST2,A
1107
1108 002ED 1806 MOV A,@0X06 ;set TCC time equal 250
1109 002EE 0041 MOV TCC,A
1110 002EF 1849 MOV A,@0X49 ;set TCC prescaler as 1:4 (256*4/4)*4=1ms
1111 002F0 0002 CONTW
1112
1113 002F1 188C MOV A,@0X8C ;close the WDT
1114 002F2 000E IOW WDTCR
1115
1116 002F3 1801 MOV A,@0X01 ;enable TCC time intterrupt flag
1117 002F4 000F IOW IMR
1118 002F5 0A18 BS FLAG1,MOTORL_ON
1119 002F6 0A58 BS FLAG1,MOTORR_ON
1120 002F7 0010 ENI ;enable the intterrupt
1121
1122 002F8 LOOP2:
1123 002F8 0004 WDTC
1124 002F9 1864 MOV A,@0X64
1125 002FA 0334 XOR A,SLEEP_FLAG
1126 002FB 0E83 JBS STATUS,Z
1127 002FC 16F8 JMP LOOP2
1128
1129 002FD 00F4 CLR SLEEP_FLAG
1130
1131 002FE 0011 DISI
1132
1133
1134
1135 002FF 1800 MOV A,@0X00
1136 00300 0005 IOW P5CR
1137 00301 1800 MOV A,@0X00
1138 00302 0045 MOV PORT5,A
1139
1140 00303 180F MOV A,@0X0F
1141 00304 0006 IOW P6CR
1142 00305 1800 MOV A,@0X00
1143 00306 0046 MOV PORT6,A
1144
1145 00307 18F0 MOV A,@0XF0
1146 00308 000D IOW PHCR
1147
1148 00309 1800 MOV A,@0X00
1149 0030A 000E IOW WDTCR
1150
1151 0030B 1800 MOV A,@0X00
1152 0030C 000F IOW 0X0F
1153
1154 0030D 0446 MOV PORT6,PORT6
1155
1156 0030E 1802 MOV A,@0X02
1157 0030F 004E MOV WPC,A
1158
1159 00310 0003 SLEP
1160
1161
1162 00311 WAKE_UP:
1163 00311 0000 NOP
1164 00312 0000 NOP
1165 00313 0000 NOP
1166 00314 0000 NOP
1167 00315 0000 NOP
1168 00316 0000 NOP
1169 00317 0000 NOP
1170
1171 00318 0011 DISI ;colse the intterrupt
1172 00319 0004 WDTC
1173
1174 0031A 188C MOV A,@0X8C ;close the WDT
1175 0031B 000E IOW WDTCR
1176
1177 0031C 1800 MOV A,@0X00
1178 0031D 004E MOV WPC,A
1179
1180 0031E 1800 MOV A,@0X00 ;PORT6 set as output
1181 0031F 0006 IOW P6CR
1182 00320 1860 MOV A,@0X60
1183 00321 0005 IOW P5CR
1184 00322 180F MOV A,@0X0F
1185 00323 000D IOW PHCR
1186 00324 1801 MOV A,@0X01 ;enable TCC time intterrupt flag
1187 00325 000F IOW IMR
1188 00326 0010 ENI ;enable the intterrupt
1189
1190 00327 16F8 JMP LOOP2
1191
1192
1193
1194
0 Error(s), 0 Warning(s), 0 User Message(s)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -