收藏 分享(赏)

二进制 转换成十进制 BCD码(加3移位法).doc

上传人:jinchen 文档编号:7262443 上传时间:2019-05-11 格式:DOC 页数:4 大小:34.50KB
下载 相关 举报
二进制 转换成十进制 BCD码(加3移位法).doc_第1页
第1页 / 共4页
二进制 转换成十进制 BCD码(加3移位法).doc_第2页
第2页 / 共4页
二进制 转换成十进制 BCD码(加3移位法).doc_第3页
第3页 / 共4页
二进制 转换成十进制 BCD码(加3移位法).doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、二进制 转换成十进制 BCD 码(加 3 移位法) (2010-07-05 15:53) 分类: 算法 “原来的二进制数十几位,则左移时就要左移几位”“二进制数调整 BCD 码的方法是将二进制码左移 8 次,每次移位后都检查低四位 LSD+3 是否大于 7,如是则加 3,否则不加,高 4 位 MSD 作同样处理“一、为什么左移 8 次原寄存器是存二进制数的,新寄存器是存十进制数的,当然要左移 8 次,把数据全部移进去。但这里要注意两件事,第一,如果只安排一个字节作十进制寄存器,原数据要小于 64H(即 100)。第二,由于新寄存器是十进制的,要随时调整。二、检查 半字节+3 是否大于 7,是,

2、则 +3在 51 系列里有十进制调节指令(半字节大于 9,则加 6,应该不难理解),PIC 里没有,只好采取变通的方法。检查 半字节+3 是否大于 7,也就是检查半字节是否大于 4。因为,如果大于 4(比如 5、6),下一步左移就要溢出了,所以加 3,等于左移后的加 6,起到十进制调节的作用。那为什么要绕个圈子去检测 半字节+3 是否大于 7 呢?这样程序编起来会简练一些。一个例子假如有一个八位二进制数 255,我把他转 255 的十进制数0 1111 1111 原数1 0000 0001 ;左移一次2 0000 0011 ; 左移二次3 0000 0111 ;左移三次,检查低四位+37?3.

3、1 0000 1010 ;大于 7,加 3 进行调整4 0001 0101 ;左移四次, 检查低四位+37?4.1 0001 1000 ;大于 7,加 3 进行调整5 0011 0001 ;左移五次6 0110 0011 ;左移六次,检查高四位+37?6.1 1001 0011 ;大于 7,加 3 进行调整7 1 0010 0111 ;左移七次,检查低四位+37?7.1 1 0010 1010 ;大于 7,加 3 进行调整8 10 0101 0101 ;左移八次(得到 BCD 码 255)附上 Verilog 代码:/17 位二进制数转 BCD 码(基本思想是逢十进 1)module BIN_

4、BCD_4 (CLK, A, BW, BQ, BB, BS, BG);input CLK;input 16:0A; /二进制输入数据output 3:0BW, BQ, BB, BS, BG;/BCD 数据输出寄存器reg 3:0BW, BQ, BB, BS, BG;integer I;reg 19:0TEMP;reg 16:0C;always (posedge CLK)beginC=A;TEMP=0;for (I=1; I4b0100)beginTEMP3:0=TEMP3:0+3;/ 4 则加 3end if (TEMP7:44b0100)beginTEMP7:4=TEMP7:4+3;end if (TEMP11:84b0100)beginTEMP11:8=TEMP11:8+3;end if (TEMP15:124b0100)beginTEMP15:12=TEMP15:12+3;end if (TEMP19:164b0100)beginTEMP19:16=TEMP19:16+3;end BW, BQ, BB, BS, BG=TEMP18:0, A0;endendendmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报