找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

ds1302时钟芯片的问题

[复制链接]

12

主题

23

帖子

33

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神0 @; o+ U9 X, {+ }& ?$ d# c- z4 J
void clockadjust()  //调节设置! b. ]& C% Y* y9 l% q1 N/ P
{
" K9 b5 L; }! c; n) _/ W) Y        if(key==0)                //如果按键按下,时钟状态取反7 _6 v2 |7 i+ E: Q" V: U
        {
+ j1 `3 {5 l  w- m; ~2 A) T9 A% w                delay_ds1302(5);9 s  w* Z' k8 D5 w. R
                if(key==0)& H: W4 t3 \- y7 ]4 ^" n
                {
4 C, b0 L6 k4 y- d  h6 K                        flag++;
- A+ @  k- ]" c5 L                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据
* R* `, d' P- d! s: f; ]$ F7 |                        while(!key);        2 E7 p( W& z* H) q$ T* L! V8 h
                }$ j/ B0 t2 w% k
        }        
& [7 G5 E4 ]- q0 g6 t: c        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟+ @* ?* s) k$ h$ c
        {        4 N# E0 {7 q$ O. E) k7 W
                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快8 g- f& y7 k! Q1 P& |" j! o
                write_ds1302(write_sec,dat|0x80);    M6 h# I1 Q+ }  i6 f% ~) P
    write_ds1302(0x8e,0x80);        //加写保护        
( T3 k: }2 I6 k" s0 P        }        1 m. a4 E) u4 w( I
        if(flag==1)                   //秒调节* X# w* @5 H- f1 i( R9 r
        {
2 S3 r7 C2 Z; Y! C; N                tt.sec=read_ds1302(read_sec);
/ D' r! J" n- ~8 H+ Z0 N                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
0 D" N4 K# J4 F" ]2 U                if(add==0)            //按键,加一     ! q) k% Q2 o6 }7 _& d7 c/ @
                {( N& W. t/ ]  O2 r
                        delay_ds1302(5);  q3 {5 i3 |# V. r6 @
                        if(add==0)" N/ |" g: C) T. `
                        {% |6 a5 y6 u1 @& ~! i
                                tt.sec++;
- A. w* n( T# m% b/ g7 E                                if(tt.sec==60)
) W5 C0 u, t8 q3 s/ _# g1 x& k                                        tt.sec=0;( P. e0 ?  F% B$ T
                                tt.sec=tt.sec/10*16+tt.sec%10;
# g' P) F# D# J" t- U                                write_ds1302(0x8e,0);        //去除写保护
* V5 D1 I" E3 T: l                                write_ds1302(write_sec,tt.sec|0x80);# S. L1 A+ ]2 s" V; n# ]
                                write_ds1302(0x8e,0x80);        //加写保护
+ d; H( z1 c: W, e: J/ m. M) j) `                                while(!add);2 u0 y( q7 j5 a
                        }# U) Q- D+ @5 j
                }
9 I# P4 ^& |3 S$ z& {                if(sub==0) //按键,减一3 [  |4 L, P  l/ z6 ]
                {
7 V8 a6 Q1 t( H                        delay_ds1302(5);4 W$ [5 L8 J# {
                        if(sub==0)+ K6 b# a) d: }- `1 K% O- x# \8 \- C
                        {
1 d5 H8 i. J+ w% ]                                --tt.sec;
8 |& D0 j' G+ S4 a& q) }                                if(tt.sec==-1). M+ v& T- Y9 d- D8 k4 U$ U
                                        tt.sec=59;5 @) T0 P/ O6 h- e/ k
                                tt.sec=tt.sec/10*16+tt.sec%10;
/ _& m: ~2 n& h6 c                                write_ds1302(0x8e,0);        //去除写保护
. g% n* k$ W0 |5 t! x7 V                                write_ds1302(write_sec,tt.sec);0 g, s! h7 W5 o0 {0 V# E+ P# C
                                write_ds1302(0x8e,0x80);        //加写保护0 [/ N, ~1 B4 M8 X9 b
                                while(!sub);
2 c2 V: C; z2 s; n                        }: `6 c7 r. L" F( b. V+ T# C
               
% Z: q6 t3 {- N6 f( t                }
1 d* |2 i' l$ F" w2 H/ k        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

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

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

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

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