久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)EEPROM 24C02 不能寫入奇數(shù),請高手解答

  [復(fù)制鏈接]
ID:284522 發(fā)表于 2018-3-18 14:12 | 顯示全部樓層 |閱讀模式
在向EEPROM 24c02 寫數(shù)據(jù)時出現(xiàn)一個怪事,向一個地址寫入偶數(shù)如:2、4、6...,可以寫入,并且可以讀出,但是寫入奇數(shù)如:1、3、5...,則不能寫入,讀出的數(shù)還是以前的數(shù)據(jù),不知為啥,請高手解答,謝謝!!!!

單片機(jī)程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit scl=P2^1;
sbit sda=P2^0;

void delay()
{;;}

void delay_ms(uint j)
{
        uint i;
        for(j;j>0;j--)
                for(i=110;i>0;i--);
}



void IIC_init()          //IIC初始化
{
        scl=1;
        sda=1;
}

void IIC_start()  //IIC開始信號
{
        scl=1;
        sda=1;
        delay();
        sda=0;
        delay();
}

void IIC_stop()                //IIC終止
{
        scl=1;
        sda=0;
        delay();
        sda=1;
        delay();
}

void IIC_check()                   //查看IIC器件是否應(yīng)答
{
        scl=1;
        delay();
        while(sda);
        delay();  
        scl=0;        
}

void IIC_w_bite(uchar bite)                 //向IIC器件寫1比特數(shù)據(jù)
{
        uchar i;
        for(i=8;i>0;i--)
        {
                scl=0;
                delay();
                bite=bite<<1;
                sda=CY;               
                delay();
                scl=1;
                delay();
                scl=0;
        }
}

uchar IIC_r_bite()                 //讀取IIC器件1比特數(shù)據(jù)
{
        uchar i,dd;
        for(i=8;i>0;i--)
        {
                scl=1;
                delay();
                dd=dd<<1|sda;
                delay();
                scl=0;
                delay();                        
        }
        return dd;        
}

void main()
{
        IIC_init();
        IIC_start();
        IIC_w_bite(0xa0);                //尋址并發(fā)送給IIC器件準(zhǔn)備寫數(shù)據(jù)
        IIC_check();                                //應(yīng)答
        IIC_w_bite(0x1);                //發(fā)送存儲器存儲地址
        IIC_check();
        IIC_w_bite(0x2);                //發(fā)送要給IIC器寫入的數(shù)據(jù)
        IIC_check();
        IIC_stop();

        delay_ms(5);

        IIC_start();
        IIC_w_bite(0xa0);          //尋址并發(fā)送給IIC器件準(zhǔn)備寫數(shù)據(jù)
        IIC_check();                          //應(yīng)答
        IIC_w_bite(0x1);          //發(fā)送存儲器存儲地址
        IIC_check();
        IIC_start();
        IIC_w_bite(0xa1);          //發(fā)送信息給IIC準(zhǔn)備讀數(shù)據(jù)
        IIC_check();
        P1=IIC_r_bite();          //讀數(shù)據(jù)到P1口
        IIC_stop();
        while(1);
}


回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2018-3-18 16:04 | 顯示全部樓層
換一片24c02試試
回復(fù)

使用道具 舉報

ID:293590 發(fā)表于 2018-3-18 16:11 | 顯示全部樓層
24C02應(yīng)該是很簡單的的,建議樓主不要自己寫,網(wǎng)上找一大堆例子
回復(fù)

使用道具 舉報

ID:284522 發(fā)表于 2018-3-18 16:47 | 顯示全部樓層
24c02是好的,用另一個程序就可以,兩個程序比較也沒找出問題
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2018-3-18 19:15 | 顯示全部樓層
本帖最后由 zl2168 于 2018-3-18 19:20 編輯

實(shí)例49  讀寫AT24C02
Proteus仿真一下,確認(rèn)有效。
實(shí)例49 讀寫IIC AT24C02.rar (38.96 KB, 下載次數(shù): 22)
回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2018-3-18 19:17 | 顯示全部樓層
本帖最后由 zl2168 于 2018-3-18 19:19 編輯

實(shí)例50  非零地址讀寫AT24C02
上節(jié)已提到AT24Cxx頁寫緩沖的特性,需要補(bǔ)充說明的是,一次寫入AT24Cxx字節(jié)數(shù)不但不能超過芯片頁寫緩沖器容量,而且,若不是從頁寫緩沖器頁內(nèi)零地址0000寫起,一次寫入地址不能超出頁內(nèi)最大地址1111。例如,若從頁內(nèi)地址0000寫起,一次最多可寫16字節(jié);若從頁內(nèi)地址0010寫起,一次最多只能寫16-2=14字節(jié)。若要寫16字節(jié),超出頁內(nèi)地址1111,將會引起地址翻卷,導(dǎo)致出錯。因此,本例16字節(jié)從AT24C02 5BH開始寫起,須分兩次寫入。第1次寫0x5b0x5f單元,第2次寫0x600x62單元,中間還必須有頁寫延時。
實(shí)例50 非零地址讀寫AT24C02.rar (39.09 KB, 下載次數(shù): 28)
回復(fù)

使用道具 舉報

ID:726437 發(fā)表于 2020-4-23 20:48 | 顯示全部樓層
我也遇到了這樣的問題,剛解決,24c02寫入是需要時間的,叫寫入周期Twr,寫入的字節(jié)并沒有立即寫入儲存器,而是暫時儲存到了另一個地方,寫入存儲器還需要一段時間(即Twr),寫完一個字節(jié)后需延時Twr,這段時間是比較長的。
回復(fù)

使用道具 舉報

ID:729164 發(fā)表于 2020-4-24 10:11 | 顯示全部樓層
24C02是2K的i2c,看是模擬的還是外設(shè)的i2c,ARM的外設(shè)i2c操作起來有時會出問題,建議試試模擬i2c方式。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:423923 發(fā)表于 2021-3-31 13:59 | 顯示全部樓層
不管讀寫,都要延時,不然導(dǎo)致波形不對,在寫完一字節(jié)后,馬上讀出也不行,我仿真搞了好久才明白,寫進(jìn)后馬上讀出就出現(xiàn)問題

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:63304 發(fā)表于 2021-8-2 14:09 | 顯示全部樓層
dsy5555 發(fā)表于 2021-3-31 13:59
不管讀寫,都要延時,不然導(dǎo)致波形不對,在寫完一字節(jié)后,馬上讀出也不行,我仿真搞了好久才明白,寫進(jìn)后馬 ...

讀不需要延時,不要用仿真
回復(fù)

使用道具 舉報

ID:973639 發(fā)表于 2021-10-20 18:00 | 顯示全部樓層
banqiao 發(fā)表于 2018-3-18 16:47
24c02是好的,用另一個程序就可以,兩個程序比較也沒找出問題

我用24c02寫數(shù)據(jù)時也出現(xiàn)了一樣的問題(寫奇數(shù)寫無效,寫偶數(shù)正常,時延設(shè)的是10ms,應(yīng)該不是時延的問題),樓主目前解決了嗎?望告知。另外,如果還有的話,能把成功寫奇數(shù)程序發(fā)我看一下嗎。
回復(fù)

使用道具 舉報

ID:975089 發(fā)表于 2021-10-26 14:39 | 顯示全部樓層
樓主解決了嗎,我也遇到了
回復(fù)

使用道具 舉報

ID:517389 發(fā)表于 2021-11-1 18:31 | 顯示全部樓層
void IIC_stop()                 //IIC終止
{
sda=0;
delay();
scl=1;
delay();
sda=1;
delay();
}
把原來的IIC終止子程序改為這樣就行了。
回復(fù)

使用道具 舉報

ID:976819 發(fā)表于 2021-11-1 21:06 | 顯示全部樓層
不管讀寫,都要延時,不然導(dǎo)致波形不對,在寫完一字節(jié)后,馬上讀出也不行,我仿真搞了好久才明白,寫進(jìn)后馬上讀出就出現(xiàn)問題
回復(fù)

使用道具 舉報

ID:885453 發(fā)表于 2021-11-1 21:55 | 顯示全部樓層
寫數(shù)據(jù)之前要先把以前的數(shù)據(jù)擦除,再寫新數(shù)據(jù)才不會出錯
回復(fù)

使用道具 舉報

ID:399179 發(fā)表于 2021-11-29 20:55 來自手機(jī) | 顯示全部樓層
你們怎么解決的?我也遇到這樣的問題了,有的能寫入有的不能
回復(fù)

使用道具 舉報

ID:365802 發(fā)表于 2021-11-30 13:41 | 顯示全部樓層
我之前也遇到過這個問題, 后來發(fā)現(xiàn)時延時的問題.
http://www.zg4o1577.cn/bbs/dpj-151160-1.html
回復(fù)

使用道具 舉報

ID:81196 發(fā)表于 2021-11-30 17:11 | 顯示全部樓層
IIC操作,只要出了問題,肯定是IIC的時序不對,自己找問題就行了,對照時序表查看。
回復(fù)

使用道具 舉報

ID:796012 發(fā)表于 2021-12-7 14:46 | 顯示全部樓層
片內(nèi)要提升電壓到20V左右
回復(fù)

使用道具 舉報

ID:1004043 發(fā)表于 2022-2-4 00:31 | 顯示全部樓層
ybftl 發(fā)表于 2021-11-1 18:31
void IIC_stop()                 //IIC終止
{
sda=0;

解決了我的問題謝謝
回復(fù)

使用道具 舉報

ID:1031851 發(fā)表于 2022-6-2 20:55 | 顯示全部樓層
ybftl 發(fā)表于 2021-11-1 18:31
void IIC_stop()                 //IIC終止
{
sda=0;

牛比牛比牛比
回復(fù)

使用道具 舉報

ID:139866 發(fā)表于 2022-6-3 10:20 | 顯示全部樓層
直接用示波器采集波形,對照時序圖分析,比在這讓人給你猜原因快得多
回復(fù)

使用道具 舉報

ID:1031962 發(fā)表于 2022-6-3 13:30 | 顯示全部樓層
AT24Cxx系列芯片先將CPU輸入的數(shù)據(jù)暫存在頁寫緩沖器內(nèi),然后,慢慢寫入E2PROM中。因此,CPU對AT24Cxx系列E2PROM一次寫入的字節(jié)數(shù),受到該芯片頁寫緩沖器容量的限制。頁寫緩沖器的容量為16B,若CPU寫入字節(jié)數(shù)超過芯片頁寫緩沖器容量,應(yīng)在一頁寫完后,隔5~10ms重新啟動一次寫操作。
回復(fù)

使用道具 舉報

ID:1064915 發(fā)表于 2023-4-19 15:16 | 顯示全部樓層
用Proteus仿真,不用買開發(fā)板了?
回復(fù)

使用道具 舉報

ID:420836 發(fā)表于 2023-4-20 09:10 | 顯示全部樓層
奇數(shù)與偶數(shù)對EEPROM芯片沒有區(qū)別,是否嘗試在代碼中將奇數(shù)與偶數(shù)切換?
回復(fù)

使用道具 舉報

ID:1065084 發(fā)表于 2023-4-20 09:49 | 顯示全部樓層
c8bcd0822700b612e8234b9c02ca14fa.png
看看你寫的錯誤:
void IIC_stop()                //IIC終止
{
        scl=1;
        sda=0;
        delay();
        sda=1;
        delay();
}
如果你的數(shù)據(jù)為偶數(shù) 即最后一位為0,程序執(zhí)行正常
如果,你數(shù)據(jù)為奇數(shù),你最后一位為1 那 執(zhí)行就是 sda=1;scl=1;sda=0;是不是和起始信號一樣?

讓你去學(xué)習(xí),你就非要自己閉門造車,如果你自己寫的程序我敬你是個漢子,如果你抄的別人的我建議你給他一巴掌,如果是你照葫蘆畫瓢畫出來的,建議你給自己兩巴掌
回復(fù)

使用道具 舉報

ID:996773 發(fā)表于 2023-4-20 13:25 | 顯示全部樓層
看了一下要笑死,一個24c02基礎(chǔ)東西都玩的五花八門,有提高電壓的,有先擦后寫的

還有直接仿真的,難道你們的產(chǎn)品都是在仿真上想出來的嗎。還有抄的,這個程序

還要抄,以后還能做啥大工程,樓主的問題更離譜:非得去寫奇數(shù)或偶數(shù),寫00000000

不行嗎,寫11111111不行嗎。我這個匯編兩年的新手要被你們笑死,不說了,送外賣了,要超時了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品www| 久久久91 | 亚洲国产成人精 | 久久久精品一区二区 | 国产精品毛片久久久久久久 | 成人精品免费视频 | 另类亚洲视频 | 欧美另类视频在线 | 国产成人高清成人av片在线看 | 日韩欧美精品 | 久久久123 | 国产精品99久久久久久大便 | 91av小视频| 亚洲欧美一区二区三区视频 | 浮生影院免费观看中文版 | 日本在线综合 | 国产一区在线免费观看 | 欧美激情久久久 | 免费99视频 | 久久一区二 | 成人在线视频免费看 | 一区二区三区欧美在线观看 | 毛片一区| 国产精品明星裸体写真集 | 男女啪啪高潮无遮挡免费动态 | 欧美色成人 | 免费黄色录像视频 | 综合精品| 日韩天堂av| 免费不卡视频 | 国产视频一区在线观看 | 国产精品视频久久久 | 国产一区中文 | 欧美黄在线观看 | 九九综合九九 | 日韩av中文 | 国产精品色综合 | 久久夜夜| 久久久影院 | 国产成人精品午夜 | 国产乱码精品一区二区三区av |