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