eeprom存儲地址
⑴ isp設置用戶EEPrOm大小
步驟如下:
?1.第一步,首先寫IIC的起始信號,緊接著寫上首位元組,即我們前邊講的IIC的器件地址,並且在讀寫方向上選擇「寫」操作。
?2.第二步,發送數據的存儲地址。例如24C02晶元一共有256個位元組的存儲空間,地址從0x00~0xFF,我們想把數據存儲在晶元的哪個位置,此刻寫入的就是對應的那個地址。
?3.第三步,發送要存儲的數據第一個位元組、第二個位元組??,注意在寫數據的過程中,EEPROM每個位元組都會回應一個「應答位0」,來告訴我們在EEPROM晶元中寫入數據成功,如果沒有回應答位,說明寫入數據不成功。
⑵ PIC18單片機怎麼讀寫EEPROM,我使用的是18F4520的單片機,求一個讀寫EEPROM的程序實例
/*
***************************************************************************************************
函數名:EE_readbyte
功 能:片內EEPROM 讀1位元組
說 明:Read_AddrH:待寫入的高地址;Read_Addr:待寫入的低地址
函數執行完返回一個存放在該地址處的值
***************************************************************************************************
*/
uchar EE_ReadByte(uchar Read_AddrH,uchar Read_Addr)
{
EEADRH = Read_AddrH; //寫入高地址
EEADR = Read_Addr; //寫入低地址
EECON1bits.EEPGD = 0; //訪問EEPROM存儲區
EECON1bits.CFGS = 0; //訪問EEPROM或程序區
EECON1bits.RD = 1;
return EEDATA;
}
/*
***************************************************************************************************
函數名:EE_writebyte
功 能:片內EEPROM 寫1位元組
說 明:Write_AddrH:待寫入的高位地址;Write_Addr:待寫入的低位地址;Write_Byte:待寫入的位元組
***************************************************************************************************
*/
void EE_WriteByte(uchar Write_AddrH,uchar Write_Addr,uchar Write_Byte)
{
ClrWdt(); //喂狗
while(EECON1bits.WR);
EEADRH = Write_AddrH; //寫入高地址
EEADR = Write_Addr; //寫入低地址
EEDATA = Write_Byte; //寫入數據
EECON1bits.EEPGD = 0; //訪問EEPROM存儲區
EECON1bits.CFGS = 0; //訪問EEPROM或程序區
EECON1bits.WREN = 1; //充許擦寫
INTCONbits.GIE = 0; //禁止所有中斷
EECON2 = 0x55; //寫入密鑰
EECON2 = 0xaa;
EECON1bits.WR = 1; //開始寫操作
Nop();
Nop();
INTCONbits.GIE = 1; //開中斷
EECON1bits.WREN = 0; //禁止擦寫
while(EECON1bits.WR) //等待寫完成
{
;
}
}
/*
***************************************************************************************************
函數名:EE_WriteArray
功 能:寫入數組數據到EEPROM
說 明:AddrH:EEPROM起始地址高位元組,Addr:EEPROM起始地址低位元組
WriteByte[]:待存儲的數據存放數組
LenArray:待存儲的數組長度
舉例:存放地址0x0020---0x0029;存放數據array[10]
***************************************************************************************************
*/
void EE_WriteArray(uchar AddrH,uchar Addr,uchar WriteArray[],uchar LenArray)
{
uchar tempH,tempL,tempByte;
uint i=0;
tempH = AddrH;
tempL = Addr;
for(i=0;i<LenArray;i++)
{
tempByte = WriteArray[i];
EE_WriteByte(tempH,tempL,tempByte);
tempL++;
}
}
/*
***************************************************************************************************
函數名:EE_ReadArray
功 能:寫入數組數據到EEPROM
說 明:AddrH:EEPROM起始地址高位元組,Addr:EEPROM起始地址低位元組
ReadByte[]:待存儲的數據存放數組
LenArray:待存儲的數組長度
舉例:存放地址0x0020---0x0029;存放數據array[10]
***************************************************************************************************
*/
void EE_ReadArray(uchar AddrH,uchar Addr,uchar ReadArray[],uchar LenArray)
{
uchar tempH,tempL,tempByte;
uint i;
tempH=AddrH;
tempL=Addr;
for(i=0;i<LenArray;i++)
{
tempByte=EE_ReadByte(tempH,tempL);
ReadArray[i]=tempByte;
tempL++;
}
}
⑶ eeprom發送要寫入24C02的內存地址是什麼
對EEPROM 24C02 而言, 器件地址就是 1010XXX, 這個XXX是EEPROM的管腳連接狀態決定。
內存地址就是 EEPROM內部存儲數據的地址。
另外保存數碼管的地址常式上面是 2 這個沒有上下文,不知道具體情況了。
⑷ at24c02晶元中數據地址可以是哪些
高四位1010是24Cxx系列的固定器件地址,接下來是A2、A1、A0是根據器件連接來決定(AT24c02對應的為E2,E1,E0),我們的原理圖都接地所以是000。R/W為是選擇讀還是寫,1的時候是讀,0的時候是寫。所以寫的地址為0xA0。
讀出過程:
發送寫入的器件地址(0XA0)
發送要讀的24C02的內存地址
發送讀出的器件地址(0XA1)
讀取數據
當讀取的時候,地址的最後一位R/W為是選擇讀,也就是該位為1。所以讀取的地址為0xA1。