老古开发网首页
导航:老古开发网首页文章索引文章分类测试测量→[智能仪表多字节二进制数转换BCD码]
| -文章搜索 - 最新文章 - |

智能仪表多字节二进制数转换BCD码

发布时间:2006年5月17日 点击次数:1109
来源:电子产品世界   作者:湖南大学电气与信息工程系 邓 勇 刘 琪
 

    摘要:多字节无符号二进制数转BCD码在以单片机为核心的智能仪表中应用很普遍。本文介绍一种新的转换方法,并给出三字节二进制数转BCD码的源程序,该程序执行时间仅为原来的1.3%,效率提高显著。

    关键词:多字节二进制整数  BCD码  转换

一、引言

在以MCS-51单片机为核心的智能仪表系统中,常遇到二进制整数转换为BCD码的情况。国内许多单片机书籍都对此进行了介绍并给出了子程序,但效率不高。本文参考文献作者剖析了二进制整数转BCD码的子程序,分析了程序效率低的原因,给出了改进后的源程序,效率有所提高。以3字节的二进制整数为例,程序执行时间由2.856ms减小到2.410ms。还有没有其它的办法进一步大幅度减少转换设计时间?本文介绍一种新的程序设计思路,给出的源程序将3字节二进制整数转BCD码执行时间仅为0.374ms。

二、改进思路

由进制数转BCD码的原理可知,这一转换的实现的过程是(以3字节为例):首先把结果单元(这里是4个字节)清零,然后将待转换的二进制数的最高位移入进位位C,把结果单元的值进行乘2加C运算的值又作为结果单元的值,循环24次后得出转换的BCD码。如果能完全避开效率运行的时间。这可用下例来说明:

设结果单元某时的值为3456H,分别存放在R1、R2中,用如下的程序来完成结果单元乘2加(设C的当前值为1):

MOV A,R1

ADDC A,ACC

DA A

MOV R1,A

MOV A,R2

ADDC A,ACC

DA A

MOV R2,A

程序中使用ADDC A,ACC指令完成乘2加C的工作,经过执行上面的程序,进位位C的值为0,R1、R2单元中的内容分别为69H、13H,该值即为结果单元的值。这样就使程序避免了循环而又实现了结果单元乘2加C的功能。这个例子的结果单元为2字节,随着进一步的运算,结果单元会变为3字节并最终变为4字节(以二进制数是3字节为例)。只要在程序中加以适当的控制,则可避免过多的运算,从而使转换的速度加快。

三、源程序

程序名:FBCD

程序功能:将三字节二进制数转换为BCD码。

程序入口:20H,21H,22H,

存放被转换的三字节二进制数。

程序出口为R1,R2,R3,R4,存放转换的BCD码的结果(见程序清单)。

四、结语

为了尽可能地减少转换时间,使用了一些小技巧。例如:在程序开始转换二进制数前3位时,考虑到这3位在进行乘2加C的操作时不会有进位位,则使用3条RL A,完成了前3位的转换。该程序完成3字节二进制无符号整数转BCD码所需时间仅为374微秒,转换时间缩短为原来的13%,效率提高是显著的。另外,该程序比较灵活,程序中标注(****)处,已完成了2字节二进制整数转三字节的BCD码,程序执二字节二进制数转BCD码所需时间仅为194微秒,使用一条MOV R1,A指令,则转换结果按由高到低的次序依次存放在R1,R2,R3中。当然,很容易在此程序基础之上,实现4字节或更高字节无符号二进制整数向BCD码的转换。


欢迎进入老古论坛进行讨论
[测试测量] 相关文章:
机器人超声测距数据的采集与处理
简介:
摘要: 介绍一种基于单片机控制的三种超声测距系统的构成、工作原理和误差分析。利用本系统及其设计方法可以作为农业机器人辅助视觉系统。 关键词: 机器人 超声波测距 单片机 串行通讯 数据采集 机器人作为一种能代替人工作业的智能机器,有着广泛的应用前景。......

DS1620实现高分辨率温度测量
热敏电阻结合高分辨∑△A/D变换器测量温度
单片机电话单机测试仪的研制
10MHz频谱分析仪监视550MHz信号
弹簧发条力矩和疲劳自动测试的研究
再生相关检测
氧化铝膜状传感式在线温度仪的研制
心电数据床边采集系统的开发研究
一种新的死时间损失的补偿方法及其实现
 
下一个:[显示技术]在P87LPC674单片机I2C总线系统中扩展LCD显示器
简介:
摘要: 介绍一种利用Philips公司生产的P87LPC764单片机作为I2C总线控制器与I2C总线显示器件PCF8577C构成的LCD显示器电路,并给出了相应的程序清单。 关键词: P87LPC764单片机 I2C总线 PCF8577C LCD显示器 ......
 

上一个:[显示技术]DMF5001液晶显示器与波形显示技术

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:31毫秒