找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1530|回復(fù): 2
收起左側(cè)

請教大佬關(guān)于單片機+ds1302讀一個字節(jié)的問題

[復(fù)制鏈接]
ID:1090268 發(fā)表于 2023-8-1 13:26 | 顯示全部樓層 |閱讀模式
先寫一下我自己讀一個字節(jié)的函數(shù)
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;
}


如上代碼,當(dāng)我把函數(shù)返回前的那句rtc_io = 0注釋掉之后,讀取的時間就是亂的,但是加上了就正常了。
這里實在不明白為什么最后一定要把io口電平拉低,查看ds1302的手冊和時序圖,并沒有看到相關(guān)的講解,實在是弄不清原因了,還希望大佬能幫我解答一下,多謝啦
回復(fù)

使用道具 舉報

ID:332444 發(fā)表于 2023-8-1 15:36 | 顯示全部樓層
IO只與讀數(shù)據(jù)有關(guān),驅(qū)動看我帖子有荔枝.
回復(fù)

使用道具 舉報

ID:1090268 發(fā)表于 2023-8-1 15:45 | 顯示全部樓層
xianfajushi 發(fā)表于 2023-8-1 15:36
IO只與讀數(shù)據(jù)有關(guān),驅(qū)動看我帖子有荔枝.

我看了您的文章,是那篇仿真的那個嗎?我這個問題是出在stc89c52上的,和P34無上拉有關(guān),所以在您那個仿真電路上可能沒這個現(xiàn)象
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表