|
void EEPROM_delete(uint addr)
{
// 打開 IAP 功能(ISP_CONTR.7)=1:允許編程改變Flash, 設(shè)置Flash操作等待時間
// 0x83(晶振<5M) 0x82(晶振<10M) 0x81(晶振<20M) 0x80(晶振<40M)
ISP_CONTR = 0x81;
ISP_CMD = 0x03; // 用戶可以對"Data Flash/EEPROM區(qū)"進(jìn)行扇區(qū)擦除
ISP_ADDRL = addr; // ISP/IAP操作時的地址寄存器低八位,
ISP_ADDRH = addr>>8; // ISP/IAP操作時的地址寄存器高八位。
EA =0;
ISP_TRIG = 0x46; // 在ISPEN(ISP_CONTR.7)=1時,對ISP_TRIG先寫入46h,
ISP_TRIG = 0xB9; // 再寫入B9h,ISP/IAP命令才會生效。
_nop_();
EA =1;
ISP_off(); // 關(guān)閉ISP/IAP
}
/***************************************************************
函數(shù):寫一字節(jié)
入口:addr = 扇區(qū)單元地址 , dat = 待寫入數(shù)據(jù)
***************************************************************/
void EEPROM_write(uint addr,uchar dat)
{
ISP_CONTR = 0x81;
ISP_CMD = 0x02; // 用戶可以對"Data Flash/EEPROM區(qū)"進(jìn)行字節(jié)編程
ISP_ADDRL = addr;
ISP_ADDRH = addr>>8;
ISP_DATA = dat; // 數(shù)據(jù)進(jìn)ISP_DATA
EA = 0;
ISP_TRIG = 0x46;
ISP_TRIG = 0xB9;
_nop_();
EA =1;
ISP_off(); // 關(guān)閉ISP/IAP
}
/***************************************************************
函數(shù):讀一字節(jié)
入口:addr = 扇區(qū)單元地址
出口:dat = 讀出的數(shù)據(jù)
***************************************************************/
uchar EEPROM_read(uint addr)
{
uchar dat;
ISP_CONTR = 0x81;
ISP_CMD = 0x01; // 用戶可以對"Data Flash/EEPROM區(qū)"進(jìn)行字節(jié)讀
ISP_ADDRL = addr;
ISP_ADDRH = addr>>8;
EA = 0;
ISP_TRIG = 0x46;
ISP_TRIG = 0xB9;
_nop_();
dat = ISP_DATA; // 取出數(shù)據(jù)
ISP_off(); // 關(guān)閉ISP/IAP
EA =1;
return dat;
}
/***************************************************************
函數(shù):關(guān)閉ISP/IAP操作
***************************************************************/
void ISP_off()
{
ISP_CONTR = 0; // 關(guān)閉IAP功能
ISP_CMD = 0; // 待機(jī)模式,無ISP操作
ISP_TRIG = 0; // 關(guān)閉IAP功能, 清與ISP有關(guān)的特殊功能寄存器
ISP_ADDRH = 0;
ISP_ADDRL = 0;
}
/**********************************************************************************************
STC89C52RC內(nèi)部EEPROM詳細(xì)地址表:
第一扇區(qū) 第二扇區(qū) 第三扇區(qū) 第四扇區(qū)
起始地址 結(jié)束地址 起始地址 結(jié)束地址 起始地址 結(jié)束地址 起始地址 結(jié)束地址
2000h 21FFh 2200h 23FFh 2400h 25FFh 2600h 27FFH
第五扇區(qū) 第六扇區(qū) 第七扇區(qū) 第八扇區(qū)
起始地址 結(jié)束地址 起始地址 結(jié)束地址 起始地址 結(jié)束地址 起始地址 結(jié)束地址
2800h 29FFh 2A00h 2BFFh 2C00h 2DFFh 2E00h 2FFFh
**********************************************************************************************/
|
|