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

📄 b16tod5.asm

📁 pic单片机程序,用于数制转换,可将16位二进制数转换成5位十进制数.
💻 ASM
字号:


;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;16位二进制数转换成5位十进制数的单片机程序   VER1.0 		作者:金广林 2006.11.8
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;单片机型号:PIC16C73B
;晶体频率:4MHz

;硬件连接:帧同步标志:
;        单片机数据发送:TTL串口PORTC6,数据接收(输入):TTL串口PORTC7
;        GR信号输入:GR-->PORTC0,A/D转换输入:PORTA0
;		参考电压输入:PORTA3,(RA3),步进量为电压,可不为1
;        升降控制:PORTB7,U8增加控制:RORTB6,U9增加控制:PORTB5
;状态显示:
;		单片机通信收:PORTB0,单片机通信发:PORTB1,测量高压:PORTB2,
;		控制高压升:PORTB3,控制高压降PORTB4

;编译环境:MPLAB7.20.00.00
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

	#INCLUDE<P16C73B.INC>
	__CONFIG 	_CP_OFF&_BODEN_ON&_WDT_OFF&_PWRTE_ON&_HS_OSC
	;芯片配置信息
	;_CP_OFF	代码保护关闭
	;_BODEN_ON 	低电压检测复位开启
	;_WDT_OFF	看门狗关闭
	;_PWRTE_ON	上电延时定时器打开
	;_HS_OSC	高速晶体振荡

	LC_COUNT  	EQU   	20H;是一个寄存单元,表示第几次左移,数值为0-16,每次移一位。
	GEWEI  		EQU   	21H;是一个寄存单元,表示十进制数的个位。
	SHIWEI		EQU  	22H;是一个寄存单元,表示十进制数的十位。
	BAIWEI		EQU		23H;是一个寄存单元,表示十进制数的百位。
	QIANWEI		EQU		24H;是一个寄存单元,表示十进制数的千位。
	WANWEI		EQU		25H;是一个寄存单元,表示十进制数的万位。
	HIGH_HEX	EQU		26H;用于表示二进制数的高八位。
  	LOW_HEX  	EQU		27H;用于表示二进制数的低八位。

	N1			EQU		28H;用于表示十进制数的某一位
	N2			EQU		29H;用于存储进位

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;复位入口
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
	ORG 0x000
	NOP
	GOTO main
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;接收中断入口
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
	ORG 0004H  
 

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;主程序
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
main
	MOVLW 00H
	MOVWF N1
	MOVWF N2
	MOVWF GEWEI
	MOVWF SHIWEI
	MOVWF BAIWEI
	MOVWF QIANWEI
	MOVWF WANWEI

	MOVLW 0CCH						;这里设置高八位的值
	MOVWF HIGH_HEX
	MOVLW 99H						;这里设置低八位的值
	MOVWF LOW_HEX
	MOVLW 10H						;这里设置移位的次数
	MOVWF LC_COUNT


STARTLC								
	BCF STATUS,C
	RLF LOW_HEX
	RLF HIGH_HEX
	RLF GEWEI
	RLF SHIWEI
	RLF BAIWEI
	RLF QIANWEI
	RLF WANWEI

	MOVF GEWEI,W
	MOVWF N1
	CALL Y10BJ						;与10比较
	MOVF N1,W
	MOVWF GEWEI
	MOVF N2,W
	ADDWF SHIWEI,F

	MOVF SHIWEI,W
	MOVWF N1
	CALL Y10BJ						;与10比较
	MOVF N1,W
	MOVWF SHIWEI
	MOVF N2,W
	ADDWF BAIWEI,F

	MOVF BAIWEI,W
	MOVWF N1
	CALL Y10BJ						;与10比较
	MOVF N1,W
	MOVWF BAIWEI
	MOVF N2,W
	ADDWF QIANWEI,F

	MOVF QIANWEI,W
	MOVWF N1
	CALL Y10BJ						;与10比较
	MOVF N1,W
	MOVWF QIANWEI
	MOVF N2,W
	ADDWF WANWEI,F

	DECFSZ LC_COUNT
	GOTO STARTLC

	MOVLW 34H						;这里设置高八位的值
	MOVWF HIGH_HEX
	MOVLW 92H						;这里设置低八位的值
	MOVWF LOW_HEX

;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
;子程序
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Y10BJ						;与10比较

	MOVLW 00H
	MOVWF N2
	MOVLW 09H
	SUBWF N1,W
	BTFSS STATUS,Z					;N1等于9时,Z=1,跳过下一行
	GOTO BDY9
	GOTO XY10						;转到小于10处
	
BDY9		;不等于9
	MOVLW 09H
	SUBWF N1,W
	BTFSS STATUS,C					;N1大于9时,C=1,跳过下一行
	GOTO XY10						;转到小于10处

DY9
	MOVLW 0AH
	SUBWF N1,F
	INCF N2
XY10
	RETURN
;=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
END

⌨️ 快捷键说明

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