找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1861|回复: 8
收起左侧

51单片机 16位二进制数转BCD码,这个代码不理解

[复制链接]
ID:981359 发表于 2021-11-16 07:41 | 显示全部楼层 |阅读模式
这个代码看不懂,有人可以给讲一讲思路吗
比如Cy=1时 R5=00H
那么 MOV  A,R5
       ADDC   A,R5
       MOV     R5,A
执行之后R5的值为多少
还有这里为什么是16次循环
d83fdf4c74257e505c8fd09fd2997991.png

回复

使用道具 举报

ID:624769 发表于 2021-11-16 14:38 | 显示全部楼层
讲就是: 2进制除法,就是这么一个计算过程。16位就是16次,32位就是32次,

说白了,就是利用加法器实现除法。你看看2进制运算方面的资料就能看明白了。说要说半天了。
回复

使用道具 举报

ID:981359 发表于 2021-11-16 15:18 来自手机 | 显示全部楼层
188610329 发表于 2021-11-16 14:38
讲就是: 2进制除法,就是这么一个计算过程。16位就是16次,32位就是32次,

说白了,就是利用加法器实现除 ...

好的,谢谢,我去查查相关资料
回复

使用道具 举报

ID:123289 发表于 2021-11-18 15:12 | 显示全部楼层
要说清楚,是哪16位,转换成放在哪里。
回复

使用道具 举报

ID:624769 发表于 2021-11-18 15:24 | 显示全部楼层
yzwzfyz 发表于 2021-11-18 15:12
要说清楚,是哪16位,转换成放在哪里。

?? 是说我么?

我补充一下,
这个应该是中间步骤, 或者整个代码都是汇编写的。
R6, R7 是原始的16位2进制数, 范围是: 0~65535
转译出来的 十是进制BCD 保存在 R3,R4,R5
由于,没有把他们移回R5,R6,R7 不在传参位,所以,故计要么还有一段代码,要么就是整个代码就是汇编写的,所以不需要放到传参位。
回复

使用道具 举报

ID:123289 发表于 2021-11-18 15:33 | 显示全部楼层
我的做法是这样的。
做一个表:分别对应16位中各个位的BCD值,B15...B0,如果该位是1就加这个值(BCD加法),是0就不加,这样很好理解。
B15:032768
B14:  016384
B13:008192
……
B0 :   000001
回复

使用道具 举报

ID:123289 发表于 2021-11-18 16:13 | 显示全部楼层
R67是16位二进制数,R345是BCD结果。
1、HB2:将结果清0,准累计结果。
2、HB3:先将R67的最高位移出,或0或1。
3、移出的0或1,放入结果的末位,进行BCD调整。
理解:假设最高位是1(也就是你举例的),它将被移入CY,通过ADDC,被加入到R5的末位中,未来还会被向高位移动15次,并且还会被BCD调整15次,加上本次,一共被移位、调整16次。
每左移一次相当于是二进制乘2,16次移动是还原成原值(原来在第几位的还是在第几位),这个很好理解。而每次乘2后会被进行BCD调整,就变成了10进制了。进行16次移位16次BCD调整,是否能正确地转换,就不太好理解了。
不过你可以做个试验:R67=1000000000000000,16次操作后看看是否 R345=032768。如此,便于你理解。
第1234次操作后, R345=0008,
第5次操作后, R345=0016,(移位变成0010H,BCD调整后变成0016)
第6次操作后, R345=0032,(移位变成002CH,BCD调整后变成0032)
第7次操作后, R345=0064,(移位变成0064H,BCD调整后变成0064)
第8次操作后, R345=0128,(移位变成00C8H,BCD调整后变成0128)
......
回复

使用道具 举报

ID:624769 发表于 2021-11-18 17:28 | 显示全部楼层
yzwzfyz 发表于 2021-11-18 16:13
R67是16位二进制数,R345是BCD结果。
1、HB2:将结果清0,准累计结果。
2、HB3:先将R67的最高位移出,或 ...

看了你写的解答,令我惊叹万分,为啥我就写不出这样的,如此层次清晰的,感觉只要识字的就能看懂的,答复呢?
回复

使用道具 举报

ID:123289 发表于 2021-11-20 16:53 | 显示全部楼层
这个还是比较简单的,如果是开方,三角计算,则更难。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表