⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 基本完成迷控制算法
💻 LST
📖 第 1 页 / 共 5 页
字号:
   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 + -