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

[复制链接]
224|3
 楼主 | 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分,然后这数据再也不变了,而且写不进去,不知道是怎么回事,第一次用这个芯片,还是新手,请指教。
| 2018-3-13 08:09 | 显示全部楼层
观察一下写时序,看是否满足要求。
这东西就是对着时序慢慢调
| 2018-3-13 08:24 | 显示全部楼层
这玩意十几年前用过,没记错的话是内置电池的,会不会是批次太老内置电池没电了? 不过感觉软件的可能性更大一些,仔细检查一下时序
| 2018-3-13 11:50 | 显示全部楼层
上电先要复位,要延时足够的时间,才能对芯片进行读写操作
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /6 下一条

分享 快速回复 返回顶部 返回列表