1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

標題: 15W408單片機片內EEPROM往不同扇區讀寫操作 [打印本頁]

作者: samxon    時間: 2024-4-13 16:26
標題: 15W408單片機片內EEPROM往不同扇區讀寫操作
15W408片內EEPROM讀寫數據時IAP_ADDRESS+1的+1, +2,+3是什么意思。如果要往不同的扇區寫數據應該怎么切換扇區。

                   set1=IapReadByte(IAP_ADDRESS+0);
                set2=IapReadByte(IAP_ADDRESS+1);
                set3=IapReadByte(IAP_ADDRESS+2);
                set4=IapReadByte(IAP_ADDRESS+3);


void save()
{
        IapEraseSector(IAP_ADDRESS);    //扇區擦除
        IapProgramByte(IAP_ADDRESS+0, set1);        
        IapProgramByte(IAP_ADDRESS+1, set2);        
        IapProgramByte(IAP_ADDRESS+2, set3);        
        IapProgramByte(IAP_ADDRESS+3, set4);        
}


作者: wulin    時間: 2024-4-13 19:25
STC15W408單片機的EEPROM有5K,分10個扇區,每個扇區容量512字節。各扇區首地址為0x0000、0x0200、0x0400、0x0600......。可以指定任意扇區首地址IAP_ADDRESS+n讀寫字節。
作者: samxon    時間: 2024-4-13 19:42
可以指定任意扇區首地址IAP_ADDRESS+n讀寫字節。這句話不明白。能詳細一點嗎,另外,如果我要在一個扇區寫多個字節,該如何改寫save代碼,或者不同扇區寫字節怎么寫代碼。謝謝你。
作者: yzw846562238    時間: 2024-4-13 20:40
samxon 發表于 2024-4-13 19:42
可以指定任意扇區首地址IAP_ADDRESS+n讀寫字節。這句話不明白。能詳細一點嗎,另外,如果我要在一個扇區寫 ...

1、要寫到哪個扇區就調用這個函數擦除對應扇區,IapEraseSector(IAP_ADDRESS);    //扇區擦除
2、要寫多個字節的話就用
for(int i=0; i<len; i++)
{
    IapProgramByte(IAP_ADDRESS+i, data[ i]);
}
IAP_ADDRESS為你要寫的扇區首地址。data為你要寫入的數據存放的數組;
注意事項:跨扇區寫數據的話,兩個扇區都要擦除才可以
作者: wulin    時間: 2024-4-14 07:41
samxon 發表于 2024-4-13 19:42
可以指定任意扇區首地址IAP_ADDRESS+n讀寫字節。這句話不明白。能詳細一點嗎,另外,如果我要在一個扇區寫 ...

STC片內EEPROM容量隨不同型號大小有所不同,除IAP外每個扇區的首地址是固定的。讀/寫EEPROM的代碼要明確指定扇區地址。例如讀取第3扇區的第10個字節的地址:IapReadByte(0x0409); 或 IapReadByte(0x0400+9);寫EEPROM也同理。在你的代碼中IAP_ADDRESS是宏定義地址常量。
作者: samxon    時間: 2024-4-14 14:07
wulin 發表于 2024-4-14 07:41
STC片內EEPROM容量隨不同型號大小有所不同,除IAP外每個扇區的首地址是固定的。讀/寫EEPROM的代碼要明確 ...

謝謝您,明白了。
作者: npn    時間: 2024-4-16 08:36
由于樓主的程序不完整,缺乏  IapEraseSector、 IapReadByte 函數內的程序以及參數情況。
無法確定 IAP_ADDRESS 是常量還是變量,以及 set1, set2, set3, set4的數據類型,請提供完整的程序才能解答。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1