- 中颖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;
- }
|