初始化:
void EepromInit(void){
INITEE=17;
asm nop;
MISC=1;
}
擦写:
unsigned char EepromErase(unsigned int *pAddress, unsigned char size)
{
if(ECLKDIV_EDIVLD == 1)
{if((ESTAT_ACCERR == 0) && (ESTAT_PVIOL == 0))
{ while(size)
{ if(ESTAT_CBEIF == 1)
{ *pAddress = 0xFFFF;
pAddress += 2;
ECMD =ERASECMD;
ESTAT_CBEIF = 1;
if((ESTAT_ACCERR == 1) || (ESTAT_PVIOL == 1))
return ERROR;
while (ESTAT_CCIF == 0);
size--; }
}
return NOERROR;
}
else return ERROR;
}
else return ERROR;
}
unsigned char EepromProgram(unsigned int *pAddress, unsigned int *pData, unsigned char size)
{ if(ECLKDIV_EDIVLD == 1)
{ if((ESTAT_ACCERR == 0) && (ESTAT_PVIOL == 0))
{ while(size)
{ if(ESTAT_CBEIF == 1)
{ *pAddress++ = *pData++;
ECMD = PROGCMD;
ESTAT_CBEIF = 1;
if((ESTAT_ACCERR == 1) || (ESTAT_PVIOL == 1))
return ERROR;
while (ESTAT_CCIF == 0);
size--; }
}
return NOERROR;
}
else return ERROR;
}
else return ERROR;
} |