Ⅰ 基於PIC單片機對EEPROM讀寫的一種方法
是需要讀寫程序嗎?
從指定地址下讀取一個位元組:
uchar ReadEEPROM(uchar EE_Addr)
{
EEADR=EE_Addr; //給地址
EEPGD=0; //
RD=1; //開始讀
return EEDATA; //直接返回讀取的EEPROM
}
將一個位元組的數據寫入指定地址里:
bool WriteEEPROM(uchar EE_data,uchar EE_addr)
{
uchar j=0;//多次執行
EEIF=0; //clear flag
EEADR=EE_addr; //set address
EEDATA=EE_data; //set data.(one byte)
EEPGD=0; //EEPROM to be the data memory.
while(++j<10) //if there is wrong to write,begin
{
GIE=0; //關中斷,保護
WREN=1; //寫允許
EECON2=0x55;
EECON2=0xaa;
WR=1; //寫開始,寫完後硬體置0寫
WREN=0; //寫使能禁止
GIE=1; //開中斷
while(WR); //等待寫操作完成,沒有判斷EEIF
if(!WRERR) //如果無誤,跳出程序,否則重寫
return true;
}
return false;
}
Ⅱ PIC的EEPROM的讀寫問題
你是通過在線模擬,變數觀察的么?
1.首先你的E2是片內的還是片外的。
2.如果是片外的,看看你的介面時序的情況。
3.看你的描述像是片內的flash存儲器,看看讀取數據的地址,是在唯一地址上讀取數么。
因為片內的flash的讀寫時序都是硬體完成的,幾乎不會出問題。
4.仔細查看下程序吧,希望對你有所幫助
是否可以解決您的問題?
Ⅲ pic單片機 的EEPROM 問題
庫文件里有eeprom讀寫函數,直接調用吧。
可以確定你程序有問題。要麼你寫的時候都寫成0x11,
要麼你讀的時候程序有問題
Ⅳ 如何讀寫網卡中的eeprom
PIC片內EEPROM讀寫都很可靠。但要注意,在Noise較強的應用環境,應該打開MCU的BOR功能,否則容易出現干擾導致的EEPROM誤改寫。另外,EEPROM讀寫程序,必須按照數據手冊上的代碼流程來寫。
Ⅳ pic單片機EEPROM怎麼編寫程序啊
在你的C文件里引用EEPROM函數的頭文件,eeprom_routines.h
然後在程序中使用
void eeprom_write(unsigned char addr, unsigned char value);
unsigned char eeprom_read(unsigned char addr);
這兩個函數了。
這兩個函數一個讀一個寫。比如你想寫0x10到地址為0x55的EEPROM,
就寫:eeprom_write(0x55,0x10);
同理,如果想讀取0x55地址處的值,
就寫:ee_value = eeprom_read(0x55);
如果編譯時編譯器提示找不到eeprom_routines.h,可以在
X:Program FilesHI-TECH SoftwarePICC9.81include 目錄下找,然後復制到自己項目文件夾下。
對了,我用的是MPLab IDE,編譯器使用的是PICC。
Ⅵ 讀取PIC EEPROM時為什麼偶爾會讀出2FH讀取的是累計數據,一直讀取正常,為什麼偶爾就出錯,讀出錯誤的數
你是通過在線模擬,變數觀察的么?
1.首先你的E2是片內的還是片外的。
2.如果是片外的,看看你的介面時序的情況。
3.看你的描述像是片內的flash存儲器,看看讀取數據的地址,是在唯一地址上讀取數么。
因為片內的flash的讀寫時序都是硬體完成的,幾乎不會出問題。
4.仔細查看下程序吧,希望對你有所幫助
Ⅶ PIC單片機內部EEPROM數據保存讀取
寫程序的時候是會重新改寫eeprom內容的,這個你需要修改下程序,斷電驗證比較合適。
Ⅷ 用PICkit3怎麼操作來先寫其內部EEPROM-PIC 單片機論壇
往pickit3中裝載程序:
Ⅸ pic單片機的eeprom問題
我打開其頭文件看了下,包括
EEPROM_WRITE(0x08,buzzValue);EEPROM_READ(0x08)這兩個函數
其原型是EEPROM_WRITE(addr, value),EEPROM_READ(addr)
你要知道PICC包含什麼頭文件最好打開頭文件的文件夾
路徑是HI-TECH Software\PICC\lite\9.60\include
打開pic.h可以看到裡面的內容
PICC包含pic1687x.h,這個看編譯器而定,MPLAB本身沒有這個頭文件