标题:
请教大佬关于单片机+ds1302读一个字节的问题
[打印本页]
作者:
ikura
时间:
2023-8-1 13:26
标题:
请教大佬关于单片机+ds1302读一个字节的问题
先写一下我自己读一个字节的函数
sbit rtc_io = P3 ^ 4;
sbit rtc_ce = P3 ^ 5;
sbit rtc_sclk = P3 ^ 6;
static unsigned char rtc_read_byte(unsigned char cw)
{
unsigned char cnt = 0;
unsigned char byte = 0x00;
unsigned char tmp;
rtc_ce = 1;
for (cnt = 0; cnt < 8; ++cnt) {
rtc_io = !!(cw & 0x01 << cnt);
rtc_sclk = 1;
_nop_();
rtc_sclk = 0;
}
cnt ^= cnt;
do {
byte |= (tmp = rtc_io) ? tmp << cnt : 0;
rtc_sclk = 1;
_nop_();
rtc_sclk = 0;
} while (++cnt < 8);
rtc_ce = 0;
rtc_io = 0; //这里不懂
return byte;
}
如上代码,当我把函数返回前的那句rtc_io = 0注释掉之后,读取的时间就是乱的,但是加上了就正常了。
这里实在不明白为什么最后一定要把io口电平拉低,查看ds1302的手册和时序图,并没有看到相关的讲解,实在是弄不清原因了,还希望大佬能帮我解答一下,多谢啦
作者:
xianfajushi
时间:
2023-8-1 15:36
IO只与读数据有关,驱动看我帖子有荔枝.
作者:
ikura
时间:
2023-8-1 15:45
xianfajushi 发表于 2023-8-1 15:36
IO只与读数据有关,驱动看我帖子有荔枝.
我看了您的文章,是那篇仿真的那个吗?我这个问题是出在stc89c52上的,和P34无上拉有关,所以在您那个仿真电路上可能没这个现象
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1