📄 main.lst
字号:
993 00000A
994 00000A ;Program Begin
995 00000A org 0ah
996 00000A include pro.asm ; Main Routine
997 00000A ;**********************************
998 00000A ; Initialize *
999 00000A ;**********************************
1000 00000A @@int_main:
1001 00000A 2D0F mov a,#00001111b
1002 00000B 2FDF b0mov stkp,a ; Disable interrupt and Stack
1003 00000C 3600 b0mov pflag,#0 ; clear C,DW,Z flag
1004 00000D ; b0mov rbank,#0 ; Ram bank0 operate
1005 00000D
1006 00000D C01B call @@clr_ram ; clear ram
1007 00000E C022 call @@initcpu ; initial cpu register
1008 00000F C033 call @@init_int ; initial Interrupt
1009 000010
1010 000010 6FDF b0bset fgie ; Enable Global Interrupt
1011 000011 ;**********************************
1012 000011 ; System initial *
1013 000011 ;**********************************
1014 000011 @@premain:
1015 000011 C05D call @@INTface_init
1016 000012 C08C call const_init
1017 000013 Play_Music1
1018 000013 68D1 b0bset O_Music_Clk
1019 000014 61D1 b0bclr O_Music_Data0
1020 000015 62D1 b0bclr O_Music_Data1
1021 000016 ; call
1022 000016 ;**********************************
1023 000016 ; Main program *
1024 000016 ;**********************************
1025 000016 @@main:
1026 000016 6ECA b0bset fwdrst ; clear WatchDog timer, or clear in interrupt routine!
1027 000017
1028 000017 C067 call @@Intface
1029 000018 C187 call RF_Pilot_detect
1030 000019 C091 call update_information
1031 00001A ; call
1032 00001A ; call
1033 00001A /*
1034 00001A IF @Powerdown_set == 1
1035 00001A b0bset fcpum0
1036 00001A jmp $+1
1037 00001A jmp $+1
1038 00001A jmp $+1
1039 00001A jmp $+1
1040 00001A jmp $+1
1041 00001A ENDIF
1042 00001A IF @GreenMode_set == 1
1043 00001A b0bclr fcpum0
1044 00001A b0bset fcpum1
1045 00001A jmp $+1
1046 00001A jmp $+1
1047 00001A jmp $+1
1048 00001A ENDIF
1049 00001A */
1050 00001A 8016 jmp @@main
1051 00001B include com.asm ; Common Ram/Pin/Register preset
1052 00001B ;Clear Ram
1053 00001B @@clr_ram:
1054 00001B 3400 b0mov y,#0 ; clear bank0
1055 00001C 3330 b0mov z,@Rambank0_val
1056 00001D 2BE7 @@: clr @yz
1057 00001E 2683 decms z
1058 00001F 801D jmp @b
1059 000020 2BE7 clr @yz
1060 000021 0E00 ret
1061 000022 ;================================================
1062 000022 ;Initial CPU Register and I/O Direction
1063 000022 @@initcpu:
1064 000022 ; b0mov r,#0x00 ; If use these registers, you add delete them
1065 000022 ; b0mov z,#0x00 ; |
1066 000022 ; b0mov y,#0x00 ; |
1067 000022 ; |
1068 000022 ; b0mov x,#0x00 ; |
1069 000022 ; b0mov l,#0x00 ; |
1070 000022 ; b0mov h,#0x00 ; If use these registers, you add delete them
1071 000022 ;************************************************************
1072 000022 ;I/O port(Pur register Set/Port Value Set/IO direction Set) *
1073 000022 ;************************************************************
1074 000022 @SET_PUR @Pur_set
1075 000022 2D01 mov a, #@Pur_set
1076 000023 2FBE DC 0x2FBE ; B0MOV PUR, A
1077 000024 ;...............
1078 000024 mov_ p1,@p1set
1079 000024 2D00 mov a, @p1set
1080 000025 1FD1 mov p1, a
1081 000026 mov_ p1m,@p1Mset
1082 000026 2DFF mov a, @p1Mset
1083 000027 1FC1 mov p1m, a
1084 000028 mov_ p1w,@p1Wset
1085 000028 2D00 mov a, @p1Wset
1086 000029 1FC0 mov p1w, a
1087 00002A mov_ p2,@p2set
1088 00002A 2D00 mov a, @p2set
1089 00002B 1FD2 mov p2, a
1090 00002C mov_ p2m,@p2Mset
1091 00002C 2DFF mov a, @p2Mset
1092 00002D 1FC2 mov p2m, a
1093 00002E ;================================================
1094 00002E ;Other settings!
1095 00002E ;oscm
1096 00002E mov_ oscm,@Oscm_set
1097 00002E 2D40 mov a, @Oscm_set
1098 00002F 1FCA mov oscm, a
1099 000030 /*
1100 000030 IF @ADappl_set == 1
1101 000030 ;A/D transform
1102 000030 clr adm
1103 000030 ENDIF
1104 000030 IF @DAappl_set == 1
1105 000030 ;D/A transform
1106 000030 clr dam
1107 000030 ENDIF
1108 000030 IF @Lcdappl_set == 1
1109 000030 ;LCD display
1110 000030 clr lcdm
1111 000030 ENDIF
1112 000030 */
1113 000030 ;Pedge setting
1114 000030 mov_ pedge,@Pedge_fall_val
1115 000030 2D88 mov a, @Pedge_fall_val
1116 000031 1FBF mov pedge, a
1117 000032 0E00 ret
1118 000033 ;========================================================
1119 000033
1120 000033
1121 000033 include int.asm ; Interrupt
1122 000033 ;**************************************
1123 000033 ; Initial Interrupt *
1124 000033 ;**************************************
1125 000033 @@init_int:
1126 000033 2BC9 clr inten
1127 000034 2BC8 clr intrq
1128 000035 ;P00
1129 000035 ; b0bset fp00ien ; enable p00 interrupt
1130 000035 ; Timer/Event0 (TC0)
1131 000035 ; b0bclr ftc0enb ; To disable Tc0 timer/event
1132 000035 2D60 mov A,@SysTc0m ; Set tC0 RATE=XXX
1133 000036 2FDA b0mov TC0M,A ; To set Tc0 clock=fcpu/xx
1134 000037 2D38 mov A,@SysTc0c ; SET INITIAL tC0 BASETIME= XXMS
1135 000038 2FDB b0mov TC0C,A
1136 000039 6DC9 b0bset ftc0ien ; To enable Tc0 interrupt service
1137 00003A 6FDA b0bset ftc0enb ; To enable Tc0 timer
1138 00003B 0E00 ret
1139 00003C ;************************************************
1140 00003C ; Interrupt Service Routine *
1141 00003C ;************************************************
1142 00003C @@int_rs:
1143 00003C 020F b0xch a,accbuf ; save a
1144 00003D 2E86 b0mov a,pflag ; save pflag
1145 00003E 2F10 b0mov pflagbuf,a
1146 00003F ; PUSH
1147 00003F ; b0mov a,y ; if you use y,z,r,x,h,l in interrupt routine,please add these structions!
1148 00003F ; b0mov ybuf,a ; |
1149 00003F ; b0mov a,z ; |
1150 00003F ; b0mov zbuf,a ; |
1151 00003F ; b0mov a,r ; |
1152 00003F ; b0mov rbuf,a ; |
1153 00003F ; b0mov a,x ; |
1154 00003F ; b0mov xbuf,a ; |
1155 00003F ; B0MOV a,h ; |
1156 00003F ; B0MOV hbuf,a ; |
1157 00003F ; B0MOV a,l ; |
1158 00003F ; B0MOV lbuf,a ; if you use y,z,r,x,h,l in interrupt routine,please add these structions!
1159 00003F ;*******************************
1160 00003F ;auto check proper interrupt *
1161 00003F ;*******************************
1162 00003F ; Is P00 Interrupt
1163 00003F 78C9 b0bts1 fp00ien
1164 000040 8043 jmp @f
1165 000041 70C8 b0bts0 fp00irq
1166 000042 804B jmp @@Int_P00
1167 000043 @@:
1168 000043 ; Is Timer 0 Interrupt
1169 000043 7DC9 b0bts1 ftc0ien
1170 000044 8047 jmp @f
1171 000045 75C8 b0bts0 ftc0irq
1172 000046 804E jmp @@Int_Tc0
1173 000047 @@:
1174 000047
1175 000047 ; End interrupt!
1176 000047 @@Int_rs90:
1177 000047 2E10 b0mov a,pflagbuf
1178 000048 2F86 b0mov pflag,a
1179 000049 ; POP
1180 000049 ; b0mov a,ybuf ; if you use y,z,r,x,h,l in interrupt routine,please add these structions!
1181 000049 ; b0mov y,a ; |
1182 000049 ; b0mov a,zbuf ; |
1183 000049 ; b0mov z,a ; |
1184 000049 ; b0mov a,rbuf ; |
1185 000049 ; b0mov r,a ; |
1186 000049 ; B0MOV a,xbuf ; |
1187 000049 ; B0MOV x,a ; |
1188 000049 ; B0MOV a,hbuf ; |
1189 000049 ; B0MOV h,a ; |
1190 000049 ; B0MOV a,lbuf ; |
1191 000049 ; B0MOV l,a ; if you use y,z,r,x,h,l in interrupt routine,please add these structions!
1192 000049 020F b0xch a,accbuf
1193 00004A 0F00 reti
1194 00004B ;**********************************************
1195 00004B ; Exterior interrupt service *
1196 00004B ;**********************************************
1197 00004B @@int_p00:
1198 00004B ;service for interrupt!
1199 00004B 81A1 jmp RF_Falling_detect
1200 00004C RF_Falling_detect_ret:
1201 00004C 60C8 b0bclr fp00irq
1202 00004D 8047 jmp @@Int_rs90
1203 00004E ;----------------------------------
1204 00004E ;----------------------------------
1205 00004E ;----------------------------------
1206 00004E ;----------------------------------
1207 00004E ;Timer/Event0 xmS
1208 00004E @@int_tc0:
1209 00004E ; b0bclr ftc0ien ; To disable Tc0 interrupt service
1210 00004E ; b0bclr ftc0enb ; To disable Tc0 timer
1211 00004E 2D60 mov a,@SysTc0m ;
1212 00004F 2FDA b0mov tc0m,a ; To set Tc0 clock = fcpu /xx
1213 000050 2D38 mov a,@SysTc0c ;
1214 000051 2FDB b0mov tc0c,a ;
1215 000052 ;service for interrupt!
1216 000052 81D3 jmp RF_Timecount_pro
1217 000053 RF_Timecount_pro_ret:
1218 000053 8117 jmp Motor_process
1219 000054 Motor_process_ret:
1220 000054 // ................
1221 000054 // ................
1222 000054 2611 decms intwk00
1223 000055 8059 jmp @f
1224 000056 2D05 mov a,#5
1225 000057 1F11 mov intwk00,a
1226 000058 6812 b0bset @Sys1msIRQ
1227 000059 @@:
1228 000059 6DC9 b0bset ftc0ien ; To enable Tc0 interrupt service
1229 00005A 6FDA b0bset ftc0enb ; To enable Tc0 timer
1230 00005B 65C8 b0bclr ftc0irq ; To clear Tc0 interrupt request
1231 00005C 8047 jmp @@Int_rs90
1232 00005D
1233 00005D
1234 00005D
1235 00005D
1236 00005D ;*********************************
1237 00005D ; Interrupt Interface *
1238 00005D ;*********************************
1239 00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -