51单片机把4位16进制数转成10进制数的方法

2位16进制转10进制,用除以10求商跟余数的方法,即可。
4位16进制数呢?div指令只可以对2位16进制数进行除法运算啊,那么下面就为大家来解答。
例如把th1 tl1的数值转成十进制, 分别存入r4 r3 r2 r1 r0。
;------------------------------------------------------------------
下面把这段转换程序,写成子程序的结构,便于网友移植。
;
程序经过仿真调试通过,如下所示:
;------------------------------------------------------------------
;
mov r0, th1
mov r1, tl1
call hex2bcd ;调用子程序把r0 r1中的数字,转换成bcd码,送到r2 r3 r4
;-------下面,把万千百十个位,分别存入r4 r3 r2 r1 r0
mov a, r4
mov b, #16
div ab ;除以16,目的是分离出高、低四位
mov r1, a ;存放十位
mov r0, b ;存放个位
;
mov a, r2
mov r4, a ;存放万位
;
mov a, r3
mov b, #16
div ab
mov r3, a
mov r2, b
sjmp $ ;到此,完成了题目要求
;------------------------------------------------------------------
;两个字节的二进制数转换成bcd码的程序如下:
;功能:16位二进制数变换成为 bcd 码;
;入口:r0 r1 中是 16 位二进制数,其中r0中是高 8 位;
;出口:r2 r3 r4 中是 bcd 码,其中r2中是万位,r3中是千、百位,r4中是十、个位。
hex2bcd:
clr a
mov r2, a ;先清零
mov r3, a
mov r4, a
mov r5, #16 ;共转换十六位数
loop:
clr c
mov a, r1 ;从待转换数的高端移出一位到cy
rlc a
mov r1, a
mov a, r0
rlc a
mov r0, a
mov a, r4 ;送到bcd码的低端
addc a, r4 ;带进位加。自身相加,相当于左移一位
da a ;十进制调整,变成bcd码
mov r4, a
mov a, r3
addc a, r3
da a
mov r3, a
mov a, r2
addc a, r2
mov r2, a
djnz r5, loop ;共转换十六位数
ret
;------------------------------------------------------------------

PCB板实物图上的线路走向
C++虚函数virtual详解
比特现金SPV客户端Pixel Wallet可以把比特币现金添加到图片里
TD-LTE频谱规划将提高市场预期
iOS14.2或导致iPhone12系列耗电更严重
51单片机把4位16进制数转成10进制数的方法
基于区块链技术的共享经济基础设施我家云介绍
白岩松谈社区团购:赢者通吃 真的吗?
红米K20系列+黑鲨游戏手柄正式开卖游戏操控稳定拥有极致的游戏体验
串口通讯的使用,常用的PLC基本接口
5G+8K技术超高清Mini/Micro LED显示已成趋势
众多医学影像AI企业开发了相关的医学影像AI产品
菲力尔热成像仪帮助医院找出病人的疼痛
利用ROS控制UR机器人可使用新版操作系统
ISA插槽
如何使用很少的组件制作arduino移动车
人脸识别自助收银机对于商超零售场景的好处是什么
阿里巴巴达摩院发布科技趋势:阿里巴巴工业互联网大平台来了!
超级电容器是否能够代替手机电池
固体激光器的优缺点