EDA365电子工程师网
标题:
时间芯片ds1302 读数据的疑惑
[打印本页]
作者:
zhuxiaoxing
时间:
2013-3-13 10:49
标题:
时间芯片ds1302 读数据的疑惑
程序如下 for循环中 ,是怎么把数据读出来的,比如刚开始i=0,然后value右移一位,右移了最低位不是丢失了吗?这个判断i0口干嘛用?因为在我想来,我觉得应该是先把value最低位读出来,然后再右移的,这样最低位才不会丢失,我的想法对吗?麻烦各位帮我看看啊
, i) E/ ~4 q. e$ \! H+ P$ v& r3 B
uchar read_ds1302(uchar add)
5 O3 k6 G6 D& }4 L% O
{
* m z* [% o# I1 V2 m% K
uchar i,value;
9 d; T" m8 L; n. k, T4 f
rst=0;
/ ?& g) c" t% x' q
delay(5);
7 C# p1 {2 J6 d) {$ O2 W
sck=0;
3 |+ s9 ^% N% \' |, i- d3 H
delay(5);
$ i* g# u" n8 Q9 C9 A' X& G* a
rst=1;
* Y& [6 a" N* p1 U, M2 @' v/ r
delay(5);
/ C C' g0 ]0 s0 P4 Y5 g% P
write_ds1302_byte(add);
8 |) \8 p& G( H* a9 H! e- k
for(i=0;i<8;i++)
5 Q( U5 b. o& B9 E
{
3 b: b5 s9 h* |! H
value=value>>1;
+ g, _. F6 }: V7 w4 j
sck=0;
* Q; S6 c6 U1 [0 _* c# o
if(i0)
1 A" s5 T$ N$ i( T/ H
value=value|0x80;
. H3 q! Y ]8 S( |! B9 [ `, O
sck=1;
4 R {. p6 W, d! ~
}
, X' E# V) S/ L$ u$ A; g
rst=0;
! E8 K6 z6 }2 A) G2 I1 A
delay(5);
: L1 r1 i. t: o; [+ C0 F( S% v
sck=0;
0 R+ x; v8 W: x' e+ m: g* ~9 p+ A
delay(5);
( Z& h, V9 o9 K1 @; k
sck=1;
+ O% Z% U% S& f* y# m* {
i0=1;
1 B$ C+ N: b7 X: {' H
return value;
. W3 P) X6 i3 ]) n3 D
% T1 h {) s% ^2 d. t3 d
}
作者:
zhuxiaoxing
时间:
2013-3-13 21:49
。。。。。。怎么没人啊?路过的留个脚印啊
作者:
ArthurGXH
时间:
2013-3-13 22:09
DS1302先发送是低位,value右移丢掉的最低位是没有用的。判断IO的作用是取DS1302输出的当前bit的值。你单步跟踪调试一下,很简单的程序。
欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/)
Powered by Discuz! X3.2