EDA365电子工程师网

标题: ds1302时钟芯片的问题 [打印本页]

作者: wfbisheng    时间: 2014-4-29 16:18
标题: ds1302时钟芯片的问题
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神
/ z; S% S( o% d( o- cvoid clockadjust()  //调节设置
' b% b! C( K2 r6 g/ b* A{( G: ~0 A& E7 I" g
        if(key==0)                //如果按键按下,时钟状态取反) _+ M! }% A% `9 a2 o# q
        {
# r* c6 M9 {( x! m8 B. {6 n                delay_ds1302(5);; I; ?3 h; c) g( p1 s! E* m  J+ t
                if(key==0)
$ b& X; Y/ ^& L. \: N5 f2 ]* G                {  p( E' ]# R3 u1 t/ j: ], J
                        flag++;
$ C! K, s# j) @* q6 ~& Z                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据
8 Z. }( ]2 E: Y$ o% L+ ?6 i6 t                        while(!key);        
+ ]7 C, k( O3 ~3 A2 W                }, X1 m3 j6 t3 g) h& T
        }        
% I0 \: |9 K$ Z' t6 u( l- e% I3 X" y        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟7 I+ T- o. Q7 k! ^( `! f, B
        {        
" y6 h1 o" L: o2 N                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快4 E! M. w2 u6 P& @
                write_ds1302(write_sec,dat|0x80);  3 L/ }: p' F) o; M4 z7 m2 u5 ~, D
    write_ds1302(0x8e,0x80);        //加写保护        
. Y. F* H* A, H$ ?" E        }        ; r+ {& f# Z) B! p& z' q
        if(flag==1)                   //秒调节4 C4 a+ }5 g- f
        {
9 B6 g2 X, r' c) S, }- a" c                tt.sec=read_ds1302(read_sec);
9 F+ I' D# f7 A8 M                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
* G2 ?8 q+ U, P" ~7 R                if(add==0)            //按键,加一     % h6 y2 _# I/ j
                {/ m8 t& D4 O5 O/ x* @
                        delay_ds1302(5);
5 M  M7 @% i5 r0 E. N3 n5 ?" T6 K                        if(add==0)
, [6 F. y; z# ~2 H                        {2 I$ L2 V0 j& P% f* @! e- A
                                tt.sec++;
! _& e; s* z; W& p' o                                if(tt.sec==60); i* r9 Y9 H( B. U+ a/ f
                                        tt.sec=0;
& a; f& P, n0 K/ X                                tt.sec=tt.sec/10*16+tt.sec%10;
5 k6 W9 k. W8 ]                                write_ds1302(0x8e,0);        //去除写保护+ \& k! c$ X- A: P. [
                                write_ds1302(write_sec,tt.sec|0x80);
: g- [; U# Q* h5 f                                write_ds1302(0x8e,0x80);        //加写保护% ]* [$ I, B6 o" q  C3 b
                                while(!add);. ^, |% p7 V! v7 T' m% s
                        }
* J+ y+ y  p# P+ h                }
" ?: b/ V7 e! Y/ [; C# i6 k                if(sub==0) //按键,减一
2 U  a' d6 {, p8 d1 O* e. F2 S$ o* x                {0 C0 N9 Y1 Q( e! v
                        delay_ds1302(5);
' M& A! w  U3 D) b) [$ f( Z2 O                        if(sub==0)' ^9 M2 ^% m9 g
                        {9 x( N7 k" O5 U. P9 o
                                --tt.sec;& h% e& y# X3 ~) c  L
                                if(tt.sec==-1)" R% a$ u0 m5 r  ]
                                        tt.sec=59;$ ]' h. g+ ~$ Z9 q& c, N
                                tt.sec=tt.sec/10*16+tt.sec%10;7 |; @9 y2 l3 t' ]+ f
                                write_ds1302(0x8e,0);        //去除写保护
3 K4 H- e& o+ c                                write_ds1302(write_sec,tt.sec);" D0 z' i3 A- J3 [0 o) \0 [
                                write_ds1302(0x8e,0x80);        //加写保护
' \  g" ~+ A; q3 i# Z$ d                                while(!sub);
; @8 K5 `" l& }3 C7 _                        }
4 t9 l$ l$ K0 z2 U- g                + @% `- d7 b, w6 b3 I7 _# }
                }
" W' g) k$ ~* p1 C4 Q* `1 C        }




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2