此帖出自51单片机论坛
最新回复
楼主提供的开发板程序 我 的和你一样。我认为 读数据时是这样的:
1.刚开始的SDA会被8次移位移出去,对结果无影响。
2.第一次产生的下降沿所释放的数据被下一次for循环给捕捉,共进行了7次有效捕捉。
3.在for循环结束后应该加上语句:if(SDA)
temp|=0x80; 对1302的最高位进行捕获。
4.程序不修改能正常运行 我认为是:每次移位最高位被0代替,1302的各时间寄存器最高位内部永远达不到1,因为59对应01011001(BCD)。阴差阳错。
以上是我的见解。请指正。
改正的程序:
for (i=0;i>=1;
SCK=1;
_nop_();
_nop_(); //此处才开始产生下降沿,产生的数据会在下一次循环中被接受
SCK=0;
_nop_();
_nop_(); //右移一位
}
if(SDA)temp|=0x80; // 对最后释放的数据 进行采集
[ 本帖最后由 bvcbvc 于 2012-8-14 20:40 编辑 ]
详情
回复
发表于 2012-8-14 10:12
| ||
|
||
此帖出自51单片机论坛
| ||
|
||
回复 沙发 孤獨の快樂 的帖子
此帖出自51单片机论坛
| ||
|
||
| |
|
|
此帖出自51单片机论坛
| ||
|
||
此帖出自51单片机论坛
| ||
|
||
此帖出自51单片机论坛
赞赏 | ||
|
||
| |
|
|
| |
|
|
此帖出自51单片机论坛
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
| |
|
|
关于DS1302的读数据时序
此帖出自51单片机论坛
| ||
|
||
论坛测评队员
EEWorld Datasheet 技术支持