打印

我的时钟芯片DS12c887怎么只能读不能写?而且读的数据一直不变?

[复制链接]
1381|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xichandoujigu|  楼主 | 2018-3-13 07:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
直接上代码吧
void write_ds(uchar add,uchar date)
{
           dsds=1;       
        dsrw=1;
        dsas=1;
        dscs=0;
        P0=add;
        dsas=0;
        dsrw=0;
        P0=date;
        dsrw=1;
        dsas=1;
        dscs=1;                               
}

uchar read_ds(uchar add)
{
        uchar ds_date;
        dsds=1;       
        dsrw=1;
        dsas=1;
        dscs=0;
        P0=add;
        dsas=0;
        dsds=0;
        //P0=0xff;
        ds_date=P0;
        dsds=1;
        dsas=1;
        dscs=1;
        return ds_date;       
}

void init_shizhong()
{
        write_ds(0x0A,0x20);        //打开振荡器并允许RTC计时
        write_ds(0x0B,0x06);   //关闹钟
}


void main()
  {
       init_shizhong();
           write_ds(4,6);
          write_ds(0,11);
              write_ds(2,10);
              write_ds(4,22);

       write_ds(0x00,0x00);   //秒        
        write_ds(0x02,0x17);  //分      
        write_ds(0x04,0x0c);   //小时  
          
           shi_gao=read_ds(4)/10;
           shi_di=read_ds(4)%10;
          fen_gao=read_ds(2)/10;
           fen_di=read_ds(2)%10;

         while(1)
         display(shi_gao,shi_di,fen_gao,fen_di);
}

无论怎么写,write的格式我也换了下(如上),显示的数据永远是0402,这个数据是我第一次读出来的数据,当时正好是下午4点2分,然后这数据再也不变了,而且写不进去,不知道是怎么回事,第一次用这个芯片,还是新手,请指教。

相关帖子

沙发
dirtwillfly| | 2018-3-13 08:09 | 只看该作者
观察一下写时序,看是否满足要求。
这东西就是对着时序慢慢调

使用特权

评论回复
板凳
mcuzone| | 2018-3-13 08:24 | 只看该作者
这玩意十几年前用过,没记错的话是内置电池的,会不会是批次太老内置电池没电了? 不过感觉软件的可能性更大一些,仔细检查一下时序

使用特权

评论回复
地板
cjseng| | 2018-3-13 11:50 | 只看该作者
上电先要复位,要延时足够的时间,才能对芯片进行读写操作

使用特权

评论回复
5
零三翟邢止胃| | 2019-3-21 11:33 | 只看该作者
不过感觉软件的可能性更大一些,仔细检查一下时序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

96

帖子

2

粉丝