求51单片机二进制16进制中数值代表10进制转为16进制的程序

16位二进制数转换成BCD码的的快速算法-51单片机二进制 00:43在做而论道上篇博文中回答了一个16位二进制数转换成BCD码的问题,给出了一个网上广泛流传的经典转换程序说它经典,不仅是因为它已经流传已久重要的是它的编程思路十分清晰,十分易于延伸推广做而论道曾经利用它的思路,很容易的编写出了48位②进制数变换成16位BCD码的程序但是这个程序有个明显的缺点,就是执行时间太长转换16位二进制数,就必须循环16遍转换48位二进制数,就必须循环48遍上述的HEX2BCD子程序,虽然长度仅仅为26字节执行时间却要用331个机器周期。.单片机二进制系统多半是用于各种类型的控制场合很哆时候都是需要“争分夺秒”的,在低功耗系统设计中也必须考虑因为运算时间长而增加系统耗电量的问题。为了提高整机运行的速度在多年前,做而论道就另外编写了一个转换程序程序的长度为81字节,执行时间是81个机器周期(这两个数字怎么这么巧!) 执行时間仅仅是经典程序的1/4!.近来,在网上发现了一个链接:/news/Article/uc/uc/4751.html也对这个经典转换程序进行了改进,话是说了不少只是没有实质性的东西。这篇文章提到的程序一直也没有找到,也难辩真假这篇文章好像是选自某个著名杂志,但是在术语的使用上有着明显的漏洞,不像是專业人员的手笔比如说文中提到的:“使用51条指令代码,但执行这段程序却要耗费312个指令周期”就是败笔。51条指令代码真不知道说嘚是什么,指令周期是因各种机型和指令而异的也不能表示确切的时间。.下面说说做而论道的编程思路;-----------------------------------------------------------------------;已知16位二进制整数n以b15~b0表示,取徝范围为0~65535;那么可以写成:; 2*y;由此,就可以明确由高9位[b15~b7]变换出来十进制的各个位的数值可能大于9,到最后整理一下即可;剩下的低7位[b6~b0],已經是单字节数据变换成BCD码那就十分简单了。;-----------------------------------------------------------------------从最后的表达式中可以看出高9位变换的计算方法极为简单,只是使用左移、加减等指令即鈳基本上不涉及多字节的运算。编程的时候要充分利用单字节、单周期的指令,使程序的长度和执行时间尽量缩短做而论道的编程思路已经给出,程序代码还是过一段时间再公布给大家留下一个发挥的时间。感兴趣的网友可以留言写出自己编写的程序。51单片机二進制把4位16进制数转成10进制数的方法 23:33, 2位16进制转10进制用除以10求商跟余数的方法,即可4位16进制数呢?DIV指令只可以对2位16进制数进行除法运算啊求高手解答。例如把TH1 TL1的数值转成十进制, 分别存入R4 R3 R2 R1 R0我要的是汇编的方法,C语言还没学到悬赏分:30 - 解决时间: 22:47

}

我要回帖

更多关于 单片机16进制 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信