0
问答首页 最新问题 热门问题 等待回答标签广场
我要提问

fm31256时钟芯片的奇怪问题

在电路中使用到FM31256的时钟芯片,在上电后,设置了时间和日期,当年、月或小时的数据设置为<10时,将数据写入到芯片后,断电后再读出此数据是正确的,但当年、月或小时的数据设置为>或=10时,将数据写入到芯片后,断电后,再重新上电读出此数据后,就显示为0了。但如果不断电,一直运行下去,数据显示是正常的。此问题不知是什么原因造成的?请大家给分析一下。
其读出函数如下:
void readTime(void)      
{
   WriteReg(FLAGS,0x01);   //允许读操作
            Time0 = ReadReg(YEAR);
            Time1 = ReadReg(MOUNTH);
            Time2 = ReadReg(DAY);
            Time3 = ReadReg(DATE);
            Time4 = ReadReg(HOUR);
            Time5 = ReadReg(MINUTE);
            Time6 = ReadReg(SECOND);
            WriteReg(FLAGS,0x00);
   
   Time0=((Time0&0x70)>>4)*10 + (Time0&0x0F);
   Time1=((Time1&0x70)>>4)*10 + (Time1&0x0F);
   Time2=((Time2&0x70)>>4)*10 + (Time2&0x0F);
   Time3=((Time3&0x70)>>4)*10 + (Time3&0x0F);
   Time4=((Time4&0x70)>>4)*10 + (Time4&0x0F);
   Time5=((Time5&0x70)>>4)*10 + (Time5&0x0F);
   Time6=((Time6&0x70)>>4)*10 + (Time6&0x0F);
   delay_nms(10);
}
提问者:chexiaohuo 地点:- 浏览次数:2485 提问时间:08-06 10:54
我有更好的答案
提 交
7条回答
lukyhong 08-09 13:02
后备电源没有问题吧  
HSHToby 08-13 06:53
总能找到问题的啊
semiaxis 08-14 23:09
检查后备电源系统,楼主遇到的情况应该是测试有问题,没有任何理由在正确设置后掉电仅大数出问题。
LingMao 08-15 00:15
肯定没仔细看手册,是BCD码和二进制数的问题。
bbs注册 08-08 07:46
后备电源应该没有问题,我又检查了一下,芯片的后备电源引脚供电是正常的。而且只要数据不超过10,即可以保存,断电后,重新上电显示也是正常的,没有发生数据变化,但一超过10,再重新上电显示,就变成0了。
lan23 08-07 04:02
问题找到了,是BCD码写入的问题,设置后的二进制码需要转换成BCD码,然后再写入芯片,一切就正常了。
简约之约 08-10 07:30
结帖给分怎么送不出去呢?
撰写答案
提 交
1 / 3
1 / 3