当前位置: 代码迷 >> 单片机 >> 关于PCF8563时钟芯片的有关问题
  详细解决方案

关于PCF8563时钟芯片的有关问题

热度:198   发布时间:2016-04-28 16:31:56.0
关于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比特;