单片机(keil c51):BCD码转化为二进制(以4位BCD码举例,依此类推)
BCD码转化为二进制
- 原理:
- 一个BCD码表示0~9,所以一个BCD码的取值范围为0000~1001。
- 在机器里所有的数都是按照二进制存入的,所以只需将BCD码转换为十进制即可。
- 4位BCD码可以表示的数最大为9999,转换为二进制数为 0010 0111 0000 1111,不会超过两个字节,所以只需保存低两个字节。
- 举例:在40H~43H单元中存放了一个4位BCD码数,要将其转换成二进制数,转换结果存放在R3(高位)、R2(低位)中。
0101 |
0001 |
0010 |
0011 |
BCD码为0011 0010 0001 0101 的数用十进制表示为3215。
过程为:0011=3,0010=2,0001=1,0101=5。
3*+2*+1*+5*=3215
3215=5+10*(1+10*(2+10*3))=(3*10+2)*100+(1*10+5)
可得出结论:在机器中,BCD码转换为十进制即二进制数,可以让高位乘10再加上低位。
- 单片机代码部分分析:
MOV 40H,#3
MOV 41H,#2
MOV 42H,#1
MOV 43H,#5
MOV A,40H
MOV B,#10
MUL AB
ADD A,41H
MOV B,#100
MUL AB
MOV R3,B
MOV R2,A
CLC A
MOV A,42H
MOV B,#10
MUL AB
ADD A,43H
ADD A,R2
CLR A;对进位位Cy清零
ADDC R3,A
END