EDA365电子工程师网
标题:
ds1302时钟芯片的问题
[打印本页]
作者:
wfbisheng
时间:
2014-4-29 16:18
标题:
ds1302时钟芯片的问题
最近参加比赛,用了时钟芯片,但是时间调节一直很烦,有时候能用,再添加别的模块,就又不能用了,特别是按键按下暂停时,那个地方的去除写保护很烦,写进去没用,不写反而有用。下面的程序的问题是按下能暂停,但是就是不能调节,不知道为什么?求大神
/ z; S% S( o% d( o- c
void 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