找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1903|回复: 6
收起左侧

二手DS12C887使用时还要初始化吗?万年历代码中要删除的语句问题?请高手指点。

[复制链接]
ID:476623 发表于 2020-8-6 22:16 | 显示全部楼层 |阅读模式
本人刚开始学习单片机,手里有一片使用过的DS12C887芯片,想学习制作一个万年历,下载了别人的代码在学习中了解到,首次操作12C887,寄存器要初始化,初始化完成后相应的代码要删除。代码中有两段是关于12C887初始化,有一段起点和结束注解的很清楚,整段删除就可以,还有一段注解不是很清楚,不知道哪里是结束点。请高手给予指点一二。谢谢啦!
下面是标注清楚的一段:
/*
                   首次操作12C887时,寄存器初始化
                   配置12C887当前时间(20190716-10:54:07)
                   配置12C887闹钟
*/
void set_time(void)
{
   write_ds(0,7);
   write_ds(1,0);
   write_ds(2,54);
   write_ds(3,0);
   write_ds(4,10);
   write_ds(5,0);
   write_ds(6,3);
   write_ds(7,16);
   write_ds(8,7);
   write_ds(9,19);
}
/*首次上电设置DS12C887时使用,以后不必再调用*/
下面这一段注解不是很清楚,不知道删除到哪里结束:,还有就是初始化代码都删除了,后面还有一句“init();调用初始化函数”怎么办?
void set_time()                 //首次操作12c887时给寄存器初始化,完成后,要把这一段用给屏蔽起来
{
write_ds(0,0);                //根据寄存器A,相当于     所有的位置,全部显示00
write_ds(1,0);
write_ds(2,0);
write_ds(3,0);
write_ds(4,0);
write_ds(5,0);
write_ds(6,0);
write_ds(7,0);
write_ds(8,0);
write_ds(9,0);
}      
void read_alarm()                    //读取闹钟值
{
amiao=read_ds(1);                根据寄存器A,分别把闹钟值读出来,并且赋值给时分秒
afen=read_ds(3);
ashi=read_ds(5);
}
void main()                                //主程序
{
init();                                         //调用初始化函数
while(1)                                    //为真不断循环,等待闹钟中断
{
还有下面这一段是不是只删除打开振荡器这一句代码就可以了?
write_ds(0x0A,0x20);     //首次使用ds12c887时使用,以后不必在写。打开振荡器
write_ds(0x0B,0x26);          // 设置24小时模式,数据二进制格式,开启闹钟中断。
    //0A,0B表示地址,2026翻译成二进制是00100000,00100110对应着对着寄存器ABD7-D0
set_time();           //设置默认上电时间

回复

使用道具 举报

ID:332444 发表于 2020-8-7 08:45 | 显示全部楼层
函数的第一对花括号就是函数的整个函数体了,void set_time() {。。。}也就是你所谓的开始和结束。
回复

使用道具 举报

ID:476623 发表于 2020-8-7 10:22 | 显示全部楼层
谢谢楼上的回复。明白了“一对花括号就是函数的整个函数体”。
又下载了另外一个万年历代码,确认了就是一对花括号内的语句全部删除。还有就是 打开振荡器那个地方要删除三段语句。
现在就剩“调用初始化函数”这一个问题了,再仔细看一下代码是不是另有所指。

回复

使用道具 举报

ID:123289 发表于 2020-8-7 17:01 | 显示全部楼层
你需要读通DS12C887的手册,而后再写程序!!!
回复

使用道具 举报

ID:796012 发表于 2020-11-8 17:18 | 显示全部楼层
楼主,我试了下,是这样的,初始化完成后,仅需在大括号内屏蔽那10条语句,之后重新编译程序,拔出DS12887+,然后新编译程序仅下载到单片机就OK了,亲测有效。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:796012 发表于 2020-11-8 17:19 | 显示全部楼层
/*初始化完成后,拔掉DS12C887+,
然后从大括号处屏蔽此10条语句,之后
重新仅下载到单片机,之后再插上
DS12C887+就可以断电运行时间了*/

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:772379 发表于 2021-2-5 19:36 | 显示全部楼层
楼主。我和你用的参考程序是同一个人的,我这边删掉初始化代码,但是lcd显示的内容有乱码?请问你有遇到这种情况吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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