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

📄 距离计算.asm

📁 本科优秀毕业设计,倒车雷达,用单片机和c51实现的!
💻 ASM
字号:
;显示缓冲单元在40H~43H
;使用内存44H、45H、46H用于计算距离
;20H用于标志

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;显示缓冲单元在44H~47H
;使用内存50H、51H、52H用于计算距离
;20H用于标志
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

;**************************************************
;*     距离计算程序(=计算值×17/1000cm)  近似	  *
;**************************************************
	   ORG 0000H
	   JMP MAIN

MAIN:
      MOV  51H,#05H
	  MOV  50H,#9FH



WORK:PUSH	ACC
	 PUSH	PSW
     PUSH	B
	 MOV	PSW, #18H			;RS1=1,RS0=1
	 MOV	R3, 51H
	 MOV	R2, 50H
	 MOV	R1, #00D 
	 MOV	R0, #17D		    ;与17相乘
	 LCALL  MUL2BY2				;R7R6R5R4<=R3R2*R1R0
	 MOV	R3, #03H
	 MOV	R2, #0E8H
  	 LCALL	DIV4BY2				;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
	 LCALL	DIV4BY2				;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)
	 MOV	44H, R4	
	 MOV	A, 44H
	 JNZ	JJ0					;A不等于0时,跳转
	 MOV	44H, #0AH           ;最高位为0,不点亮

JJ0: MOV	A,  R0
	 MOV	R4, A
	 MOV	A,  R1
	 MOV	R5, A
	 MOV    R3, #00D
	 MOV	R2, #100D
	 LCALL	DIV4BY2
	 MOV	45H, R4
	 MOV	A, 45H
 	 JNZ	JJ1
	 MOV	A, 44H              ;此高位为0,先看最高位是否为不亮
 	 SUBB	A, #0AH
	 JNZ	JJ1
	 MOV	45H, #0AH           ;最高位不亮,次高位也不亮

JJ1: MOV	A, R0
	 MOV	R4, A
	 MOV	A, R1
	 MOV	R5, A
	 MOV	R3, #00D
	 MOV	R2, #10D
	 LCALL DIV4BY2
	 MOV	46H, R4
	 MOV	A,  46H	
	 JNZ	JJ2
	 MOV	A, 45H         ;次高位为0,先看次高位是否为不亮
 	 SUBB	A, #0AH
	 JNZ	JJ2
	 MOV	46H, #0AH      ;次高位不亮,次高位也不亮

JJ2: MOV	47H, R0
	 POP	B
	 POP	PSW
	 POP	ACC
	
	RET  

;************************************
;*      两字节无符号数乘法程序		*
;************************************
;R7R6R5R4<=R3R2*R1R0

MUL2BY2: CLR	A
	     MOV	R7, A
		 MOV	R6, A
		 MOV    R5, A
		 MOV	R4, A
		 MOV	52H, #10H
MULLOOP1:CLR	C
		 MOV	A, R4
		 RLC	A
		 MOV	R4, A
		 MOV	A,	R5
		 RLC	A
		 MOV	R5, A
		 MOV	A, R6
		 RLC	A
		 MOV	R6, A
		 MOV	A, R7
		 RLC	A
		 MOV    R7, A
		 MOV    A, R0
		 RLC    A
		 MOV	R0, A
		 MOV	A, R1
		 RLC	A
		 MOV	R1, A
		 JNC	MULLOOP2
		 MOV	A, R4
		 ADD	A, R2
		 MOV	R4, A
		 MOV	A, R5
		 ADDC	A, R3
		 MOV	R5, A
		 MOV	A, R6
		 ADDC	A, #00H
		 MOV	R6, A
		 MOV	A, R7
		 ADDC	A, #00H
		 MOV	R7, A
MULLOOP2:DJNZ	52H, MULLOOP1
	
	RET


;**************************************
;*   四字节/两字节无符号数除法程序	  *
;**************************************
;R7R6R5R4/R3R2=R7R6R5R4(商)......R1R0(余数)

DIV4BY2: MOV	52H, #20H
		 MOV	R0,	#00H
		 MOV	R1, #00H

DIVLOOP1:MOV	A, R4
         RLC	A
		 MOV	R4, A
		 MOV	A, R5
		 RLC	A
		 MOV	R5, A
		 MOV	A, R6
		 RLC	A
		 MOV	R6, A
		 MOV	A, R7
		 RLC	A
		 MOV	R7, A
		 MOV	A, R0
		 RLC	A
		 MOV	R0, A
		 MOV	A, R1
		 RLC	A
		 MOV	R1, A 
		 CLR	C
		 MOV	A, R0
		 SUBB	A, R2
		 MOV	B, A
		 MOV    A, R1
	 	 SUBB	A, R3
		 JC		DIVLOOP2
		 MOV	R0, B
		 MOV	R1, A
	
DIVLOOP2:CPL	C
	 	 DJNZ	52H, DIVLOOP1
		 MOV	A, R4
		 RLC	A
		 MOV	R4,	A
		 MOV	A,	R5
		 RLC	A
		 MOV	R5,	A
		 MOV	A, R6
         RLC	A
		 MOV	R6, A
		 MOV	A, R7
		 RLC	A
		 MOV	R7, A
	
	RET



END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -