找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

ds1302时钟芯片的问题

[复制链接]

12

主题

23

帖子

33

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神. L3 s/ q: i3 @( C# K' {
void clockadjust()  //调节设置" X; x/ M( b, Z1 V' c! m
{
6 C# w' |. Y  H/ [) d        if(key==0)                //如果按键按下,时钟状态取反' {; [0 U- K8 g
        {" B1 [  m3 Z+ j. M
                delay_ds1302(5);) [6 b3 T8 o- L( r
                if(key==0)
# Z  C: q2 o/ A# }                {
6 {* x6 S4 f/ X% p$ \! b7 f                        flag++;
; s/ g6 v4 I% x" H6 O! l                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据* Y% S( h- G: K8 Y" S
                        while(!key);        
) {- ]# b" M1 c: p                }! ~+ ~: t' T$ j
        }        
- Y5 i6 l* C. _        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟' L- b' t2 ?4 H0 m5 d- T  _- {
        {        0 I6 f* m# ^6 q# m! l
                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快6 ]: J) L6 K3 h3 x5 \' Z
                write_ds1302(write_sec,dat|0x80);  ; _- Z1 M* h6 a4 J
    write_ds1302(0x8e,0x80);        //加写保护          W4 \6 Y/ ?5 Y; h4 `% e, X) l
        }        + b# j1 g5 N, h' V7 `! F1 L- W5 K
        if(flag==1)                   //秒调节" t1 B# k' ^/ p. M5 C1 K7 z
        {
4 I* x# M" }6 @, h( z) }3 @! ]                tt.sec=read_ds1302(read_sec);( L$ H7 y1 d! d" z1 s8 u
                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
3 a) Z6 u1 l) n, o  v$ n                if(add==0)            //按键,加一     
6 Q+ U6 I$ H% s- _& Q. a                {
$ ]8 o9 F# q% G* R' [: t                        delay_ds1302(5);4 ]- F0 `. f6 f4 ]. z
                        if(add==0)! z0 h/ Q4 D. d4 J' f# v8 S
                        {
5 G% u: ~( L7 O' U" i5 J                                tt.sec++;
5 F: N6 P$ _5 d% M% D1 X                                if(tt.sec==60)3 r' P, j4 z$ [9 I
                                        tt.sec=0;1 [: x9 b) q2 s* v7 G
                                tt.sec=tt.sec/10*16+tt.sec%10;
: ~8 k3 m! m4 @! Z7 E7 d                                write_ds1302(0x8e,0);        //去除写保护7 z6 k- V6 I: S. c' S2 ]
                                write_ds1302(write_sec,tt.sec|0x80);
$ g0 \1 F3 k- c( l                                write_ds1302(0x8e,0x80);        //加写保护
0 r4 {* v$ x: s# {: F: s                                while(!add);% c$ Y- W. c. Z5 N. u5 c  X: X# O
                        }
$ d7 G, B$ O4 t% ?                }: I* k8 a" ~/ o8 U( @: G) w5 @
                if(sub==0) //按键,减一! O+ ~: c' V2 S; p* _
                {- G2 ]: |% ?% ]3 r, B
                        delay_ds1302(5);+ d5 J( y- U* K# K0 x
                        if(sub==0)4 w  {* @1 ]2 Q% Q
                        {
# ?; I( D3 ~' H: R$ Y                                --tt.sec;+ @2 y$ J0 U- F2 A$ i2 K1 j& K
                                if(tt.sec==-1)) F# q# w, ?- Q& Z
                                        tt.sec=59;
+ D6 ?. X- @, s2 }4 R                                tt.sec=tt.sec/10*16+tt.sec%10;5 R$ c% k4 P. D% |$ N' z, e
                                write_ds1302(0x8e,0);        //去除写保护* `# f* z2 z% e% g0 c0 _8 w  z
                                write_ds1302(write_sec,tt.sec);( ^6 h, \/ O9 q2 K& z6 a( _
                                write_ds1302(0x8e,0x80);        //加写保护
& G; o' E/ G! r+ O7 R1 K% P                                while(!sub);# i$ J) f7 S2 A( ^+ r
                        }" P4 t/ ]( {, w4 K1 y  ]8 L- l
               
' _% c: R+ G8 m/ e2 S. {                }
) d3 c/ v3 e8 f* H  y        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2025-2-19 06:00 , Processed in 0.051522 second(s), 32 queries , Gzip On.

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

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

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