EDA365电子论坛网
标题:
时间芯片ds1302 读数据的疑惑
[打印本页]
作者:
zhuxiaoxing
时间:
2013-3-13 10:49
标题:
时间芯片ds1302 读数据的疑惑
程序如下 for循环中 ,是怎么把数据读出来的,比如刚开始i=0,然后value右移一位,右移了最低位不是丢失了吗?这个判断i0口干嘛用?因为在我想来,我觉得应该是先把value最低位读出来,然后再右移的,这样最低位才不会丢失,我的想法对吗?麻烦各位帮我看看啊
% }4 `. }4 ]$ E
uchar 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