关于PCF8563时钟芯片的问题
读取时钟芯片的时间 并且将BCD码转换成十进制数
下面程序中:
time.second=BCD2Val(temp[0]&0x7f); //秒
time.second=BCD2Val(temp[1]&0x7f);
time.hour =BCD2Val(temp[2]&0x3f);
time.day =BCD2Val(temp[3]&0x3f);
time.week =BCD2Val(temp[4]&0x07);
time.month=BCD2Val(temp[5]&0x1f);
time.year =BCD2Val(temp[6]); //年
temp[0]&0x7f temp[1]&0x7f temp[2]&0x3f分别代表什么意思?
[解决办法]
取出temp中的相应的位,例如 0x07f 就是 0111 1111,有1的比特位有效啦
时钟芯片中的一个字节,不是8个比特位都定义,所以要进行筛选出定义的位了
[解决办法]
所有的参数均按BCD码保存:
秒和分的有效范围是0~6比特;你的第2项应该是分钟time.minute
小时和日的有效范围是0~5比特;
星期的有效范围是0~2比特;
月份的有效范围是0~4比特;
年份的有效范围是0~7比特;