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

ds1302从13:59:59到14:00:00的问题

现用DS1302做个时钟,就写了一个测试程序,发现小时老是在13点变到14点时读出不对(其他小时点都对)从13点应该变到14点可老是变到4,仿真时看到的寄存器的值。搞了
3天了很是头疼,请各位老师指教,不胜感激。主程序如下:void main(void)
{
unsigned char data time_wbuff[7]={89,89,13,0x0A,0x0B,0x04,0X0B};//时间初始化为11年11月10日星期四13:59:59
  time_write(0x80,time_wbuff);
  while(1)
          {
      time_read(0x81,time_buff);
    }
}
提问者:boju81 地点:- 浏览次数:152 提问时间:05-04 22:47
我有更好的答案
提 交
11条回答
yanxl0028 05-05 12:33


re LZ:

13应该是0x13。
云汉电子社区邀好友 05-06 01:29
1302读出来的数是16进制的吧
ncwuerw2 05-07 17:21
应该是BCD码。
YY599566 05-08 14:12
  LZ的结贴率为0。。。我还是打酱油先。。。
frank201 05-14 01:21
那13不管是十进制还是BCD码,变成4总是不对的
ly1127959174 05-05 23:44
把问题解决了,不就结贴了吗,不解决当然不能结贴啦
hu_wfllllllllf 05-07 00:00
程序问题

你尝试一下 不设置12小时制
lianji83 05-08 00:24
我设置的是24小时制,14:59:59变成15:00:00等等都正常,就是13:59:59变成14:00:00不正常
hrtuoyu 05-06 20:51
谢谢HWM,把初始值都设成BCD码后,就一切正常了!这个问题解决了,还是有点疑问,我的秒和分初始值都是89(0x59)是十进制啊,可是都能正常走时变成00,单单小时不成,不知为啥。
ijdwiuq 05-09 16:54
to 13L:

其实你的分秒已经是BCD(四位二进数表示一位十进数)了。89(0x59)就是十进制数59。
xuyin8425 05-05 13:26
HWM说的对,是这样,89对应的BCD码是0X59,就是59秒,而13对应的是0X0D芯片不认识这个数所以把前面的给舍掉了,就只剩4了,哎呀,真晕。
撰写答案
提 交
1 / 3
1 / 3
客服
客户经理

在线客服:立即咨询

0755-83688678

工作时间

周一至周五(9:00-12:00 13:30-18:30)节假日除外

投诉电话:19925199461

购物车
购物车
询价
询价
足迹
最近浏览记录
没有记录
微商城

微信公众平台

搜索:hqchip001

型号搜索订单查询

投诉
我要投诉