新闻中心

EEPW首页 > 模拟技术 > 设计应用 > 用软件实现DAA的方法

用软件实现DAA的方法

作者:时间:2013-09-09来源:网络收藏
ebkit-text-size-adjust: auto; webkit-text-stroke-width: 0px">  该组子程序由定点整数二翻十、定点整数十翻二、定点小数二翻十和定点小数十翻二等4个子程序组成,分别称为CONV1、CONV2、CONV3和CONV4。由于AVRAT90系列单片机只有字节乘字节指令,计算功能不强,故采用移位调整法实现多字节数据的数制转换。其中,整数二翻十子程序CONV1和小数十翻二子程序CONV4采取左移调整的方法,而整数十翻二子程序CONV2和小数二翻十子程序CONV3采用右移调整的方法。不论左移还是右移,调整总是对十进制数进行,其目的是使十进制数的移位规则符合于二进制数移位规则:左移1位值增倍,右移1位值折半。当某位BCD中的最高位(8)左移移入高位BCD中时,按二进制数看待应为16,而按十进制数相邻位看待只能为10,故要做加6调整。另外,左移过程中若出现非法BCD码时也要对其调整。BCD码左移只不过是BCD码相加的特例,故调用 BCD码相加调整子程序A1就可完全解决左移调整问题。当右移BCD码时,若某位BCD中的1移入低位BCD最高位,按二进制数看待,1折半应为 0.5,而低位BCD中最高位值为0.8,故要做减3(即0.3)调整。因8421BCD码其各位之权(某位上的1所代表的实际数值)分别为8、4、2和 1,若只在本码位内部移动,则符合左移1位值增倍、右移1位值折半的规则,故不须调整。

  本组定点运算及数制转换子程序为适应大多数应用场合而设,具体使用时可加以修改。如整数二翻十时,二进制数不超过$FFFF,为提高运行速度,可将二进制数改为二字节,十进制数改为3字节,并将移位循环次数(R21)改为16。如数据精度不够,可把乘法子程序改为3字节乘3字节等等。

  A1为左移BCD码并对其进行调整的子程序。

  R为对右移后的BCD码进行测试、实施减3调整的子程序,以R20为工作单元。

  注:开平方子程序SQR说明中,请将对开平方数R17、R16、R15、R14加上完整根号。


上一页 1 2 3 下一页

关键词: 软件 DAA

评论


相关推荐

技术专区

关闭