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

📄 hexbcd.asm

📁 ATMEGA16芯片+HS0038B红外接收头组成的遥控器测试程序
💻 ASM
字号:
;;--------------------------------------------------------------------------
;功能:1字节十进制转换1字节二进制  00~99
;入口:temp1
;出口:temp1
;--------------------------------------------------------------------------
BCD_To_Hex:
		MOV	temp2,temp1
		SWAP	temp2
		ANDI	temp2,0b00001111
		LDI	temp3,10
		MUL	temp2,temp3

		ANDI	temp1,0b00001111
		ADD	temp1,r0
		RET

;--------------------------------------------------------------------------
;功能:1字节二进制转换1字节十进制  00~99
;入口:temp1
;出口:temp1
;--------------------------------------------------------------------------
Hex_To_BCD:
		RCALL	hex_To_BCD3	;1字节二进制转换3字节十进制 temp1-->temp4/3/2
		MOV	temp1,temp3
		SWAP	temp1
		OR	temp1,temp2
		RET

;--------------------------------------------------------------------------
;功能:1字节二进制转换2字节十进制  00~99
;入口:temp1
;出口:temp2/temp1
;--------------------------------------------------------------------------
hex_To_BCD2:
		RCALL	hex_To_BCD3	;1字节二进制转换3字节十进制 temp1-->temp4/3/2
		MOV	temp1,temp2
		MOV	temp2,temp3
		RET
;--------------------------------------------------------------------------
;功能:1字节二进制转换3字节十进制  000~255
;入口:temp1
;出口:temp4/temp3/temp2
;--------------------------------------------------------------------------
hex_To_BCD3:
		CLR	temp2				;BCD清零
		CLR	temp3
		CLR	temp4
hex_To_BCD3_Loop:
		CPI	temp1,100			;待转换数 与100比较
			BRCS	hex_To_BCD3_Less	;<,跳
		INC	temp4				;>=,百位数+1
		SUBI	temp1,100			;待转换数减100
		RJMP	hex_To_BCD3_Loop

hex_To_BCD3_Less:				;<100, 与10比较
		CPI	temp1,10
			BRCS	hex_To_BCD3_End		;<,跳
		INC	temp3				;>=,十位数+1
		SUBI	temp1,10			;待转换数减10
		RJMP	hex_To_BCD3_Less

hex_To_BCD3_End:
		MOV	temp2,temp1			;加 个位数
		RET
;--------------------------------------------------------------------------
;功能:2字节二进制转换2字节十进制  000~9999
;入口:temp2/temp1
;出口:temp4/temp3
;--------------------------------------------------------------------------
Hex2_To_BCD2:
		LDI	temp6,16	;初始化 循环计数
		CLR	temp4		;清结果
		CLR	temp3
Hex2_BCD2_1:
		LSL	temp1		;移位 输入值
		ROL	temp2		;移位入所有值
		ROL	temp3
		ROL	temp4
		DEC	temp6		;循环计数-1
			BRNE	Hex2_BCD2_2	;not=0 转
		RET

Hex2_BCD2_2:
		MOV	temp5,temp4	;取数
		SUBI	temp5,-$03	;加0x03
		SBRC	temp5,3		;位3=0 跳行
		MOV	temp4,temp5	;值 存回
		MOV	temp5,temp4	;取数
		SUBI	temp5,-$30	;加0x30
		SBRC	temp5,7		;位7=0 跳行
		MOV	temp4,temp5	;值 存回
;------------
		MOV	temp5,temp3	;取数
		SUBI	temp5,-$03	;加0x03
		SBRC	temp5,3		;位3=0 跳行
		MOV	temp3,temp5	;值 存回
		MOV	temp5,temp3	;取数
		SUBI	temp5,-$30	;加0x30
		SBRC	temp5,7		;位7=0 跳行
		MOV	temp3,temp5	;值 存回
		RJMP	Hex2_BCD2_1

;--------------------------------------------------------------------------
;功能:2字节二进制转换4字节十进制  000~9999
;入口:temp2/temp1
;出口:temp6/temp5/temp4/temp3
;--------------------------------------------------------------------------
Hex2_To_BCD4:
		RCALL	Hex2_To_BCD2	;2字节二进制转换2字节十进制

		MOV	temp6,temp4
		SWAP	temp6
		ANDI	temp6,0b00001111
		MOV	temp5,temp4
		ANDI	temp5,0b00001111

		MOV	temp4,temp3
		SWAP	temp4
		ANDI	temp4,0b00001111
		ANDI	temp3,0b00001111
		RET
;--------------------------------------------------------------------------
;功能: 16进制转为显示字符
;入口:temp1
;出口:temp1
;--------------------------------------------------------------------------
Hex_To_Symbol:
		LDI	ZH,HIGH(Hex_Symbol_Tab*2)
		LDI	ZL,LOW(Hex_Symbol_Tab*2)
		ADD	ZL,temp1
     		ADC	ZH,R_Value0			;置00H寄存器
		LPM	temp1,Z+
		RET
Hex_Symbol_Tab:
		.DB	K_0,K_1,K_2,K_3,K_4,K_5,K_6,K_7,K_8,K_9,K_CapA,K_CapB,K_CapC,K_CapD,K_CapE,K_CapF

⌨️ 快捷键说明

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