📄 b16tod5.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 + -