找回密码
 注册
关于网站域名变更的通知
查看: 744|回复: 0
打印 上一主题 下一主题

ds1302时钟芯片的问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神! V* T0 m3 }- N( n. Y0 N; X
void clockadjust()  //调节设置
* c4 m8 u; j1 `" d$ Z; n5 {7 p8 ^{
9 Y6 ^! s5 ~( S# x        if(key==0)                //如果按键按下,时钟状态取反4 {3 @, z: c9 G& H6 A7 s
        {
" E+ r) ?* e, c# H( g5 C5 c. }                delay_ds1302(5);
" C" Z/ F: b) ~+ p+ f! s# ?3 `1 k                if(key==0)5 C! @' l2 k& X9 g' a1 h& B$ M
                {' W6 d! R7 d( O9 g, G' ~) X
                        flag++;6 Q- O7 h6 |& i, P' y
                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据
$ b1 B5 S2 ~. t  V                        while(!key);        
0 G% C/ N& f9 L) s% K/ |1 s: y* b                }8 h! `, b/ V5 Z6 {- e2 m4 V, s
        }        2 f9 i3 x( K  K6 I# ?" o1 N$ v
        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟' ]; P8 p) {. m4 A+ v7 e
        {        * c& }" S/ }/ S, l# v; x
                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快
% F0 j* ]8 b: ^& S% h                write_ds1302(write_sec,dat|0x80);  / ^+ n5 u& k! j" j  C, M" {
    write_ds1302(0x8e,0x80);        //加写保护        9 U( i% ~8 [; Q. z6 g$ y) K
        }        % D8 K6 ^8 B2 ^( S: B
        if(flag==1)                   //秒调节! y6 v5 ]2 ?0 u( r# ^, B
        {. Q. B: f, N1 O) v) o; Q
                tt.sec=read_ds1302(read_sec);
# y: o+ R, f" F2 P6 B                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
; [' L' t: I- o% w+ W0 {                if(add==0)            //按键,加一     1 P$ ~2 t' f5 |. b) m/ P
                {, U9 y) g; D0 d, ?, ~/ ?+ u
                        delay_ds1302(5);
8 Z' ~- T7 x% x( \                        if(add==0)
+ Y# d" y9 a, {  Y+ @# c                        {
5 L& K5 V: Y+ ^# S. E  [                                tt.sec++;( W' `( k* \" l2 V. u" s
                                if(tt.sec==60)
/ U1 I5 _* F  V, u* B3 B/ ?                                        tt.sec=0;
" p. F. T8 E+ C1 `" K                                tt.sec=tt.sec/10*16+tt.sec%10;+ x6 y2 I3 {9 b2 E/ V" f# n6 d
                                write_ds1302(0x8e,0);        //去除写保护
% \: _3 v7 X% n$ G, c/ l                                write_ds1302(write_sec,tt.sec|0x80);
+ U+ `/ M( p2 _                                write_ds1302(0x8e,0x80);        //加写保护& `5 P$ I: S- o3 o# p
                                while(!add);- i; @3 y! m4 }) }8 [
                        }8 D" l9 N" ?" E/ K( H. A9 \
                }8 e! g) o9 C' V4 G9 d
                if(sub==0) //按键,减一
3 P% V* |" U4 _8 f! e/ S$ ?                {
; ^+ }3 x7 |6 `2 b                        delay_ds1302(5);
( N8 A3 {9 C: f6 S1 ~                        if(sub==0)
6 j) u0 Q9 C' j: ^" C                        {- g; }4 j0 O+ h. r, U& b4 x
                                --tt.sec;
8 Z- T: c4 q9 V2 I4 l1 n                                if(tt.sec==-1)$ F) r! g1 `# E; _$ y% T
                                        tt.sec=59;% B0 m# z  z2 b% v/ T! b; T
                                tt.sec=tt.sec/10*16+tt.sec%10;
/ o2 H# |9 [( p6 [" F6 ~                                write_ds1302(0x8e,0);        //去除写保护; u! F* s0 t$ J6 C, ~
                                write_ds1302(write_sec,tt.sec);
7 Z. a/ S8 c; _! r                                write_ds1302(0x8e,0x80);        //加写保护7 Z  [/ O% u+ h' v, |  h
                                while(!sub);6 a* _- m2 j  S" g3 t( p
                        }
5 k8 X5 l" v- U$ w                5 D2 z% {, a8 {  T4 C
                }8 y# f# Z  W' G
        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-21 02:57 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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