找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

ds1302时钟芯片的问题

[复制链接]

12

主题

23

帖子

33

积分

二级会员(20)

Rank: 2Rank: 2

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

EDA365欢迎您!

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

x
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神
1 }; b+ T+ l' F0 G; [void clockadjust()  //调节设置
' D9 c' O+ ~" }$ T2 \! A4 D. N{4 [' u( F; }8 w7 b4 {  x
        if(key==0)                //如果按键按下,时钟状态取反
, v( t2 D! F: o        {
# |, V9 S5 {% s                delay_ds1302(5);
/ [0 f4 X) X# P! P  B* Y# {+ \                if(key==0)7 M! O4 P% g4 l- [  b
                {
3 b( W1 k+ X6 C; o' x8 D                        flag++;
2 Q. x  J- x( |0 E2 H                        dat=read_ds1302(read_sec);        //读取秒寄存器的数据
- y9 v, W% X8 X- K. t# H/ M                        while(!key);        
) }0 _2 c( F9 R5 R7 G; v                }5 T1 x3 ^3 }6 v
        }        ' S' M3 n* m% j- d4 F; A% `
        if(flag==1||flag==2||flag==3||flag==4||flag==5||flag==6||flag==7) //停止时钟
" j( Z: L8 X; V        {        " E& |! c$ f0 c/ r- w9 |
                write_ds1302(0x8e,0);        //去除写保护,如果去除这里的话,按键按下时走得很快
) {; h$ z8 S+ o! Y4 ^                write_ds1302(write_sec,dat|0x80);  
: `) T" {# w: i1 `    write_ds1302(0x8e,0x80);        //加写保护        + j% n% f; a8 @; S0 m
        }        
- @# H# h: J3 v$ K8 T; i& |* s        if(flag==1)                   //秒调节+ ^+ k: h/ i0 G/ J
        {
5 ]; A' `+ U4 G5 F) }& U* g                tt.sec=read_ds1302(read_sec);& M- |% }7 U& Z1 s) v5 R7 ~
                tt.sec=(tt.sec&0x7f)/16*10+tt.sec%16;
0 `" O) h, _1 a+ {4 i2 ^/ `                if(add==0)            //按键,加一     ! d# _. ]' \6 J8 `- g9 X# R# T
                {
% q! H1 s& h% K# Z9 b. F                        delay_ds1302(5);
) a7 W# C2 i9 s* Y' v                        if(add==0)2 j# e6 ]* ?3 S! m/ {
                        {
9 Z0 D2 Y7 O5 }' C- U                                tt.sec++;- l# b+ I5 r4 G' S
                                if(tt.sec==60)$ @4 j6 W6 h8 P, s
                                        tt.sec=0;+ f  }8 V% D( M. `
                                tt.sec=tt.sec/10*16+tt.sec%10;
7 [$ S7 d; s; N  s                                write_ds1302(0x8e,0);        //去除写保护
0 }$ M  S/ y0 C" |. J) s3 c                                write_ds1302(write_sec,tt.sec|0x80);& b$ J; T* y/ s
                                write_ds1302(0x8e,0x80);        //加写保护
9 }* t# L5 \! J( n                                while(!add);2 s6 \' n- A6 F7 z$ D4 V: V1 Y
                        }
+ I: y4 \! b' L* m( z                }8 A! H. l: |- S1 n, @6 U0 E
                if(sub==0) //按键,减一
% J/ S# g9 o- H: }2 H5 I                {
" y, F$ k8 T4 E3 Q  R                        delay_ds1302(5);9 b2 z, {  ]  o
                        if(sub==0)
- `$ |4 X" P# B+ `, z                        {" W) |* K  h) }/ n
                                --tt.sec;
+ X7 o& M: L) O6 J, E0 ^: ?                                if(tt.sec==-1)
9 R+ \# D' C( O6 G6 s. D8 x' c                                        tt.sec=59;+ Z! D9 ?  Z! u- q  a5 A4 `! a
                                tt.sec=tt.sec/10*16+tt.sec%10;2 `, \$ d9 |3 C
                                write_ds1302(0x8e,0);        //去除写保护
& d) F2 u3 Z3 S  _7 C+ q- ]8 f; K/ e                                write_ds1302(write_sec,tt.sec);0 t. j( G; Z6 T* j( `5 s
                                write_ds1302(0x8e,0x80);        //加写保护
6 K* W+ [( b6 {; `* H: ?                                while(!sub);
$ e) j+ G9 d& \                        }
, }" a5 D; v. Y0 Y4 J6 G# `0 u7 ^: \               
" E4 |- g8 s' m0 V0 h                }
/ \: t" Z- `/ X        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-13 08:11 , Processed in 0.054722 second(s), 33 queries , Gzip On.

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

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

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