—— —— —— 技术资料下载中心

>> PIC16C5X单片机应用与设计 \

第二章 PIC16C5X指令集及程序设计技巧
第七节 PIC16C5X程序设计基础
§2.7 PIC16C5X程序设计基础 第四章 算术子程序 §2.1 无符号的BCD加法 使用二进制数做BCD的加法时，相加结果必须调整，以转换成BCD的位数。下列程序使用二个步骤来完成这个调整。 1、如果和的最低有效1位是一个>9的数，或DC位=1时将和加6（产生DC标志）。 2、完成步骤1后，如果最高有效1位表示>9的数，或者相加后C标志为1，将和加60H（即加6到MSD）。
注：扩展程序到2位数以上时，所有的加法都必须连C标志（或DC）一起相加，而且上面的原则都用到每个位数，从原数相加，步骤1、步骤2的加法所产生的进位都必须进位到下一位数。
1、流程图：

2、程序清单：

§2.3 二进制转换成BCD数
本程序将一个16位的二进数转换成一个5位数的BCD数。16位的二进制数放在寄存器S0、S1。S0放高位。5位数的BCD数输出到寄存器R0、R1、R2。MSD放在R0，LSD放在R2。
一个很简单的演算用来完成转换，二进制数向右移一位，一直到16位全部移完即完成转换。
否则每个BCD数被检查是否大于4，如果是则加3到该位数。上述的过程一直重复执行。

2、程序清单：

§2.4 BCD转换成二进制数
本程序将5位数的BCD转换成16位的二进制数。5位的BCD数R0、R1、R2。MSD 放在R0的最右位。16位的二进制数输出到寄存器S0、S1。S0存放高位

程序使用简单的演算完成转换。BCD数向右移一位到二进制数内，直到16位全部移位完才跳出程序。否则每一个BCD数被检查是否大于7，如果是则将该位数减3，重复上述过程到结束。

2、程序清单：
上一页

第一节 第二节 第三节 第四节 第五节 第六节 第七节

[ 返回 ]