本帖最后由 719823597 于 2013-3-10 16:05 编辑
上面的就是BIN转BCD的操作方式,下面我来作一下文字说明
注意,本文把Units,Tens,Hundreds和他们所处的那一列统称为1组,另外Binary和它所在的那一列不算一组,另外,表格该一行一行看
1组数据对应一个显示屏(2进制输入的)
2进制数有多少位就把它往左移多少位
3左边的英文是操作,shift是移位,add是加
4 Binary那一列在最后可以省略
[
1.把binary数向左移一位
2.如果Units,Tens,Hundreds这三组的数据中有大于或等于5的,就把那组数据加3(1次移位只加1次)
3.如果移位未完成,那就返回步骤1,否则终止操作并输出数据
我们以123为例来演算一遍(我会把组里的数字高亮)
123的二进制数是0111 1011
我们先将其左移1位,得到1111 0110
目前还在binary那列里,所以继续移位
得到0001 1110 1100
组里的数字小于5,继续移
得到0011 1101 1000
继续移位
得到0111 1011 0000
可以看到Units组里的数字已经大于5了,所以把当前该组里的数据+3处理
得到1010 1011 0000
继续移位
得到0001 0101 0110 0000
Units组里的数字等于5,所以再加3
得到0001 1000 0110 0000
继续移位
得到0011 0000 1100 0000
继续移位
得到0110 0001 1000 0000
这次是Tens里的数据大于5了,所以+3处理
得到1001 0001 1000 0000
因为我把2进制数前面补了一个0,所以变成了8位的数据,现在还差最后一次的移位
得到0001 0010 0011 0000 0000
终止操作,输出最终数据
我之前说过,binary那列在最后可以省略,那么结果就是0001 0010 0011了,我也说过1组数据对应1个2进制显示屏,所以我们分组看,第一组变成十进制数就是1,第二组就是2
第三组就是3
下面是+3模块的真值表
接下来就是成品了