DS1302 的时钟程序读写时都是 BCD 码,高 4 位是实际的十位数,低位是实际的个位数。
对于一些像我这样的初学者,BCD 码和 ds1302 内码以及十六进制之间的转换是一个难点.
bcd 码也叫 8421 码就是将十进制的数以 8421 的形式展开成二进制,大家知道
十进制是 0~9 十个数组成,着十个数每个数都有自己的 8421 码:
0=0000
1=0001
2=0010
3=0011
4=0100
5=0101
6=0110
7=0111
8=1000
9=1001
举个例子:
321 的 8421 码就是
3 2 1
0011 0010 0001
就是这样了:)
如十进制数 45,按 BCD 码规则,应为 4 和 5
但是 4 的 BCD 码为多少呢?--------0100
5 的 BCD 码为多少呢?--------0101
那么如何把 45 按 bcd 的 0100 0101 放到 ds1302 中呢?
公式:
公式:45/10=4 45%10=5
则 4*16+5=69(十进制 69)
69 的 BCD 码正好为 0100 0101 这就是 45 的 bcd 码
注:
有些资料和视频泛泛而谈,说什么 16 进制 xxx,其实这个转换里除了16 当系数之外根本不
涉及十六进制!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////