找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 376|回复: 0
打印 上一主题 下一主题

ds1302时钟芯片的问题

[复制链接]

12

主题

23

帖子

33

积分

二级会员(20)

Rank: 2Rank: 2

积分
33
跳转到指定楼层
1#
发表于 2014-4-29 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神
$ \9 z3 |! a: Q! \6 B! vvoid clockadjust()  //调节设置
! N5 [$ Z$ f0 ], [{
3 ~* s9 `1 n7 A8 [        if(key==0)                //如果按键按下,时钟状态取反( L: t' W% ~- ^# \) [. ?9 ?6 Z
        {
% @3 C2 K8 D$ H, v                delay_ds1302(5);
( `6 l, e  y; t" p+ T                if(key==0)
! C2 k7 ^' \+ [, T                {
' z1 {* d- T4 b% r                        flag++;
: m# k" n) ^( T) t1 w# ?% \1 _7 ~4 h2 p% f0 c                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据4 s" A$ J8 e1 M
                        while(!key);        7 D- |& u1 a' u* @: C
                }
$ s6 x! K8 l) j- a* M        }        8 A/ F- T, @6 _- d; L+ O# v
        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟
1 a7 u2 Z; k# G% N! c. f7 R        {        3 m" b) k6 ]! m- ?' ^- M8 Y9 R
                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快
) a1 g8 D3 x$ ~! [                write_ds1302(write_sec,dat|0x80);  
, p% n* G7 l, `    write_ds1302(0x8e,0x80);        //加写保护        
3 ]$ H& W' C5 A        }        
2 O1 w8 M0 J. p5 k# D& W        if(flag==1)                   //秒调节# I# z! S% H2 K/ r2 H  U
        {2 Q4 n2 N' b9 V3 g
                tt.sec=read_ds1302(read_sec);/ B$ u  {( d7 x; j) a+ W
                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
2 ]2 Y4 f; ^6 V) F( y2 k* V                if(add==0)            //按键,加一     
8 L( {$ j, x/ W; I! v3 c                {
' I! ^6 `# E4 G$ n- r& s3 v0 r                        delay_ds1302(5);8 c2 O+ Z0 P7 Y8 F
                        if(add==0)
$ [; x1 Y# \7 z( t) r                        {
$ q/ M+ w* E) J2 K                                tt.sec++;
" X  M" Q) W$ p8 _! U                                if(tt.sec==60)
) d8 f" ?% f1 u+ u                                        tt.sec=0;
5 d5 f0 }  v+ \- A/ c! c8 `                                tt.sec=tt.sec/10*16+tt.sec%10;+ `- f. m1 L* [/ I% W% G9 `
                                write_ds1302(0x8e,0);        //去除写保护/ \1 F: }/ w* o$ d: _0 }# Y
                                write_ds1302(write_sec,tt.sec|0x80);! \0 s3 T) g6 {2 M: s- O
                                write_ds1302(0x8e,0x80);        //加写保护
5 x. _( S  P# v; V' |7 c; \- o                                while(!add);
+ ^! n! K7 X; m8 s$ x                        }" H6 L/ V4 |* e/ b, u+ K# h
                }+ w0 a: N( U- {
                if(sub==0) //按键,减一
/ o3 k' f5 e/ [0 c                {/ m8 |9 j8 F1 s* U, d1 S
                        delay_ds1302(5);1 X* O  Y" b5 g; I6 d% _! d4 S+ s$ Z6 D
                        if(sub==0)
4 A( @( l7 l6 o* e, f                        {' {. M4 w) Q4 M, s: i$ ?
                                --tt.sec;
; v; t8 u) J. r& p! [6 T, n( @! W0 w                                if(tt.sec==-1)9 L4 V- @% p1 o0 g9 x
                                        tt.sec=59;
: ?2 T0 _  F( }                                tt.sec=tt.sec/10*16+tt.sec%10;. t5 \( X/ }7 U
                                write_ds1302(0x8e,0);        //去除写保护: O" U- ?/ B$ E- A
                                write_ds1302(write_sec,tt.sec);2 B) A& Y; u: R, e! c
                                write_ds1302(0x8e,0x80);        //加写保护
. ?' v  e2 \2 j$ ]  ^  D                                while(!sub);
5 T8 ]7 U, o6 ~4 S                        }
& Q' r) b) D: W+ {                5 B3 ^, D9 y3 S% l
                }
) }9 U7 F) |3 S' |% g, \        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-20 15:13 , Processed in 0.051096 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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