找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

ds1302时钟芯片的问题

[复制链接]

12

主题

23

帖子

33

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神
( u1 |8 f4 m0 C9 R, }$ I; vvoid clockadjust()  //调节设置
8 ^& Y" y1 h2 ^! e) i1 ]% R{, C) z# `  n4 Z
        if(key==0)                //如果按键按下,时钟状态取反: ]' }; Z- J/ J/ ]/ `
        {
" ^- q8 s" Q) k8 b" S                delay_ds1302(5);
4 S& |6 \/ [& l" ~: a: U0 L6 J( E                if(key==0): K& `6 q8 \' l
                {, W3 V& t0 M' O; A& I% i
                        flag++;
2 O9 a6 I& ^' h$ ^7 S                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据/ s: M4 {7 Y. o1 Y4 h
                        while(!key);        
* w$ k* Q0 R6 R$ C. `& `# O" @: ]                }
+ {2 j: U5 p% @$ z6 z        }        3 s6 I' u! x: Z8 M
        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟
) Z! d  l+ l; [6 {        {        ( h4 f. m+ ~# r7 {. R+ t- [
                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快
9 b! J! ]( L# z                write_ds1302(write_sec,dat|0x80);  + g% k9 w7 Z! I  ?* t$ s# l
    write_ds1302(0x8e,0x80);        //加写保护        + h9 W1 ^( d4 \, v, ^- l2 b/ e" t
        }        $ W% E, b, P0 m5 [$ O% w' r
        if(flag==1)                   //秒调节
, b* J+ K+ g/ N. C' G/ W* m        {; O6 T! D" b1 R0 ^* _0 H
                tt.sec=read_ds1302(read_sec);0 o+ r7 {0 t/ t$ _: \+ U% k
                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
, Z+ d: e( V: l8 a& f  @# H' f                if(add==0)            //按键,加一     9 V/ v* J5 F0 d# o1 i5 q5 T
                {
9 c6 `& r3 d. W% @; g% z) @                        delay_ds1302(5);% l; d. p5 u( Q* z) v2 x  a  {5 S
                        if(add==0)
7 o6 B& N9 ]7 ~3 m0 _9 Y. f% G5 K                        {/ X% C) ]. w2 E1 ^+ j7 o+ B( V$ n
                                tt.sec++;/ s$ ?, ^* K5 B* K' e" G
                                if(tt.sec==60)
. T. S5 F: A/ O, ~$ I  `1 @7 w                                        tt.sec=0;3 s- d, ]9 P; u1 Q! R; U
                                tt.sec=tt.sec/10*16+tt.sec%10;9 m9 y  I9 {, ]& N" r
                                write_ds1302(0x8e,0);        //去除写保护
2 b* t' Q3 v& N$ u3 [                                write_ds1302(write_sec,tt.sec|0x80);
3 m' ?& v+ a- H$ D" r5 t                                write_ds1302(0x8e,0x80);        //加写保护
7 V. B) l) A; C                                while(!add);
1 M0 p6 O# B* A' Y& i$ G& ~% m                        }
1 k$ u, u! o! [/ r0 k$ y% B- f0 V                }
3 @- ]: ~5 C5 _; {                if(sub==0) //按键,减一
. S- g, x, y0 z/ N                {
3 j( R9 ]4 \) {: U                        delay_ds1302(5);/ F3 j8 ]/ b& t
                        if(sub==0)
/ b: S' ^4 r5 j* O4 N                        {
) s4 d. o: t. \* O* h' p. G2 }                                --tt.sec;9 m2 g% _8 g9 {
                                if(tt.sec==-1)" u& l, T6 o' \/ u6 Y: {$ \
                                        tt.sec=59;
  g7 F! e5 [1 X+ N$ P                                tt.sec=tt.sec/10*16+tt.sec%10;- `4 o- X3 V- H0 t$ L& y
                                write_ds1302(0x8e,0);        //去除写保护
* v& t! Z' E5 A* w$ J" u: W2 v                                write_ds1302(write_sec,tt.sec);3 |6 g9 r1 }% R6 R3 o" I
                                write_ds1302(0x8e,0x80);        //加写保护/ k/ y; P9 Q. m2 e8 P
                                while(!sub);
" Z& p: T: g6 X9 e2 ]                        }( i5 |6 g) _- _4 p  j9 _
                8 f" g, Y% t, o/ {9 R
                }6 v" y1 ?) D! v7 a" X
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-24 04:07 , Processed in 0.053453 second(s), 32 queries , Gzip On.

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

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

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