2024年5月3日发(作者:)
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当系数之外
根本不涉及十六进制!
//////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
在从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
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714722808a2502891.html
评论列表(0条)