MCS-51单片机应用开发实用子程序.zip

源代码在线查看: 8.3.1利用邻接矩阵的图广度优先遍历算法.txt

软件大小: 153 K
上传用户: tengye
关键词: MCS zip 51单片机 应用开发
下载地址: 免注册下载 普通下载 VIP

相关代码

				GRAPH	EQU		20H				
				OUT		EQU		21H					
				QUEUE	EQU		1FH				
				F		DATA	3CH					
				R		DATA	3DH				
				N		DATA	3EH					
				K		DATA	3FH					
				TST:	
				MOV	SP,#5FH						
				MOV	DPTR,#GRA					
				MOV	P2,#GRAPH
				MOV	R0,#0
				MOV	R2,#0A0H
				CPY:	
				CLR	A
				MOVC	A,@A+DPTR
				MOVX	@R0,A
				INC	DPTR
				INC	R0
				DJNZ	R2,CPY
				MOV	P2,#GRAPH					
				MOV	R0,#0
				MOVX	A,@R0					
				JZ	STOP							
				INC	A
				MOV	N,A							
				MOV	K,#1							
				TST1:	
				MOV	DPH,#OUT					
				MOV	DPL,#0
				MOV	R2,#0
				CLR	A
				CLEAR:	
				MOVX	@DPTR,A						
				INC	DPTR
				DJNZ	R2,CLEAR
				MOV	P2,#GRAPH					
				MOV	R0,#0
				MOV	DPH,#OUT					
				MOV	DPL,#0
				MOVX	A,@R0					
				MOVX	@DPTR,A						
				MOV	R7,A							
				INC		DPTR					
				MOV	R0,#10H						
				CLRF:	
				CLR		A
				MOVX	@R0,A
				MOV	A,#10H					
				ADD		A,R0
				MOV	R0,A
				JNZ		CLRF
				LCALL	SETNULL					
				MOV	A,K							
				LCALL	DATAIN						
				LCALL	BFS						
				INC		K						
				MOV	A,K
				CJNE	A,N,TEST1				
				STOP:	LJMP	STOP
				;出发点为1时的遍历顺序:ABHCIGDFE
				;出发点为2时的遍历顺序:BACIHDFGE
				;出发点为3时的遍历顺序:CBDFAIEGH
				;出发点为4时的遍历顺序:DCEBFGAIH
				;出发点为5时的遍历顺序:EDFGCIHBA
				;出发点为6时的遍历顺序:FCEGIBDHA
				;出发点为7时的遍历顺序:GEFHDCIAB
				;出发点为8时的遍历顺序:HAGIBEFCD
				;出发点为9时的遍历顺序:IBFHACEGD
				BFS:	
				MOV	A,F						
				XRL		A,R
				JZ		BFSEND					
				LCALL	DATAOUT					
				MOV	R0,A
				MOVX	A,@R0						
				MOVX	@DPTR,A						
				INC		DPTR
				MOV	A,R0						
				SWAP	A
				MOV	R1,A
				MOV	A,#0FFH
				MOVX	@R1,A					
				INC		R1							
				MOV	A,R7
				MOV	R6,A
				LOOP:	
				MOVX	A,@R1					
				JZ		LOOPE					
				MOV	A,R1						
				ANL		A,#0FH
				MOV	R2,A							
				SWAP	A
				MOV	R0,A
				MOVX	A,@R0						
				JNZ		LOOPE					
				MOV	A,R2
				LCALL	DATAIN						
				MOV	A,#1
				MOVX	@R0,A					
				LOOPE:	
				INC		R1							
				DJNZ	R6,LOOP						
				LJMP	BFS							
				BFSEND:	
				RET									
				SETNULL:
				MOV	A,#0FFH
				MOV	F,A							
				MOV	R,A						
				RET									
				DATAIN:	
				PUSH	DPH
				PUSH	DPL
				INC		R						
				MOV	DPL,R
				MOV	DPH,#QUEUE
				MOVX	@DPTR,A						
				POP		DPL
				POP		DPH
				RET									
				DATAOUT:
				PUSH	DPH
				PUSH	DPL
				INC		F						
				MOV	DPL,F
				MOV	DPH,#QUEUE
				MOVX	A,@DPTR						
				POP		DPL
				POP		DPH
				RET									
				;2000H: 09 41 42 43 44 45 46 47 48 49
				;2010H: 00 00 01 00 00 00 00 00 01 00
				;2020H: 00 01 00 01 00 00 00 00 00 01
				;2030H: 00 00 01 00 01 00 01 00 00 00
				;2040H: 00 00 00 01 00 01 00 00 00 00
				;2050H: 00 00 00 00 01 00 01 01 00 00
				;2060H: 00 00 00 01 00 01 00 01 00 01
				;2070H: 00 00 00 00 00 01 01 00 01 00
				;2080H: 00 01 00 00 00 00 00 01 00 01
				;2090H: 00 00 01 00 00 00 01 00 01 00
				GRA:	
				DB		09H,41H,42H,43H				
				DB		44H,45H,46H,47H
				DB		48H,49H,00H,00H
							

相关资源