EDA365电子论坛网

标题: 时间芯片ds1302 读数据的疑惑 [打印本页]

作者: zhuxiaoxing    时间: 2013-3-13 10:49
标题: 时间芯片ds1302 读数据的疑惑
程序如下   for循环中 ,是怎么把数据读出来的,比如刚开始i=0,然后value右移一位,右移了最低位不是丢失了吗?这个判断i0口干嘛用?因为在我想来,我觉得应该是先把value最低位读出来,然后再右移的,这样最低位才不会丢失,我的想法对吗?麻烦各位帮我看看啊
% }4 `. }4 ]$ Euchar read_ds1302(uchar add)
0 z9 D# h. J- R% K6 D* c{
; g! b/ F6 L6 V0 \        uchar i,value;/ s/ A% i9 X1 E! {" [4 I  J! y: Y; p
        rst=0;
9 V# z  ?- b  h" k        delay(5);
7 Y' [- m- h4 _. S, D# H3 Z( s: q        sck=0;. E# w3 [! \* I# o
        delay(5);* J9 \4 q/ j* ^8 y
        rst=1;
  J3 {( u, i3 ~5 X        delay(5);
% C4 ~* d2 O$ e* [        write_ds1302_byte(add);$ C& M9 w. |2 l
        for(i=0;i<8;i++)
  k% t) J1 M$ j( _        {; e4 |, c6 g8 w8 s2 s( e
                value=value>>1;
( h: Z/ y+ ~3 V1 O3 E5 L                sck=0;
( J6 [* v1 M5 v" N                if(i0)
4 n3 g. t5 m9 i* s' K' h                value=value|0x80;$ K, A- x5 o3 Q2 D5 I
                sck=1;3 Q# J5 l& [% K. a
        }  w+ z- ]1 ~* i3 v+ X) x! m5 k# G
        rst=0;
& B( P4 L. o0 Y3 e" H        delay(5);. z6 l. O+ a- Q* n
        sck=0;
! w  T% @: q$ ^6 S        delay(5);$ {, E4 n( F/ Y' G
        sck=1;
% [+ S8 x+ o9 ^6 j) q        i0=1;
0 ^4 O8 o' v# a, a6 }' s        return value;
! t" \( W# n8 x: Q8 w8 d( i6 W               
! q+ Q4 E& _# W6 ~/ H: {}
作者: zhuxiaoxing    时间: 2013-3-13 21:49
。。。。。。怎么没人啊?路过的留个脚印啊
作者: ArthurGXH    时间: 2013-3-13 22:09
DS1302先发送是低位,value右移丢掉的最低位是没有用的。判断IO的作用是取DS1302输出的当前bit的值。你单步跟踪调试一下,很简单的程序。




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2