|
楼主 |
发表于 2011-5-16 19:54:31
|
显示全部楼层
问题解决了,我把我的程序贴出来,希望能帮到有需要的人。也希望高手们多多支持我们!
/****************************************************************************************/
//读EEP函数
//每次读一个EEP数据
//无返回
/****************************************************************************************/
void ReadEEP(register int source_address,register int offset_address,int *dest_array)
{
TBLPAG=source_address;
asm("TBLRDL [W1],[W2]");
}
#define EE_WRITE_WORD_CODE 0x4004
#define EE_ERASE_WORD_CODE 0x4044
/****************************************************************************************/
//写EEP函数
//每次写一个EEP数据
//无返回
/****************************************************************************************/
void WriteEEP(register int source_address,register int offset_address,int *dest_array)
{
TBLPAG=source_address;
asm("TBLWTL [W2],[W1]");
NVMCON=EE_WRITE_WORD_CODE;
CLI();//关中断宏
NVMKEY=0x55;
NVMKEY=0xAA;
NVMCONbits.WR=1;
SEI();//开中断宏
while(NVMCONbits.WR==1);
NVMCONbits.WREN=0;
}
/****************************************************************************************/
//擦除EEP函数
//擦除一个EEP数据
//无返回
/****************************************************************************************/
void EraseEEP(register int source_address,register int offset_address)
{
NVMADRU=source_address;
NVMADR=offset_address;
NVMCON=EE_ERASE_WORD_CODE;
CLI();
NVMKEY=0x55;
NVMKEY=0xAA;
NVMCONbits.WR=1;
SEI();
while(NVMCONbits.WR==1);
NVMCONbits.WREN=0;
} |
|