首页 > 代码库 > 中颖EEPROM 操作

中颖EEPROM 操作

<pre name="code" class="cpp">/*
	中颖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;
}

//**************************************
// 函数名称:Ssp_Write
// 函数功能:SSP向某地址写一字节数据
// 入口参数:被写数据的地址 数据
// 出口参数:无
//***************************************
void Ssp_WriteByte(uint16 addr,uint8 dat)
{
	CY=EA;
	EA=0;
	IB_DATA = http://www.mamicode.com/dat;>