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当系数之外根本不涉及十六进制二进制转换10进制快捷方法!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
在从1302往外读数时,将相应的二进制bcd码直接转为16进制输出即可
例如
十进制45
Bcd码0100 0101 (这个bcd码对应十进制69),(这个bcd码对应十六进制为45)
公式:
Temp=time_date/16;
Time_date=time_date%16
Num_10jinzhi=temp*10+time_date;
例如:bcd码0100 0101
Temp=0100 0101/16=4
Time_date=0111 0101%16=5
Num_10jinzhi=4*10+5
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论