中颖EEPROM,使用比较方便,但有个注意点,就是每次无论你写入
什么数据或者在哪个地址写数据,都需要将对 对应的块擦除,擦
除后才能写入成功。
*/
#define SSPWriteFlag 0x5A
#define SSPEraseFlag 0xA5
//数据区 扇形区1
#define ADDR_START1 (uint16)0x100 //数据存储区起始地址
#define ADDR_START2 (uint16)0x200 //数据存储区起始地址
//数据区 扇形区2
#define Addr1UserHave (uint16)0x101 //用户地址1
#define Addr2UserHave (uint16)0x102 //用户地址2
uint8 Ssp_Flag = 0 ;
//*************************************
// 函数名称:Ssp_Write
// 函数功能:SSP擦除某块的地址
// 入口参数:被写数据的地址 数据
// 出口参数:无
//***************************************
void Ssp_EraseBlock(uint16 addr)
{
CY=EA;
EA=0;
IB_CON1 = 0xE6;
IB_CON2 = 0x05;
IB_CON3 = 0x0A;
IB_CON4 = 0x09;
if(Ssp_Flag != SSPEraseFlag)
{
IB_CON2=0;
goto Erase_Err;
}
XPAGE = (addr>>8) & 0x07;
FLASHCON=1;
IB_CON5 = 0x06;
_nop_();
_nop_();
_nop_();
Erase_Err:
Ssp_Flag=0;
FLASHCON=0;
XPAGE=0;
EA = CY;
}
|