第1个回答 2019-07-04
void EEPROM_erasure(UINT16 number) //清除操作函数
{
UINT16 *erase;
//erase = (unsigned char*)(0x400+number);
erase = (UINT16*)(number);
*erase = 0xff;
DisableInterrupts;
while(!(ECLKDIV & 0x80))
{}
while(!(ESTAT & 0x80))
{}
while(!(EPROT & 0x80))
{}
ECMD = 0x40;
ESTAT |= 0x80;
while(!(ESTAT & 0x40))
{}
EnableInterrupts;;
}
void EEPROM_write(UINT16 code,UINT16 number) //写操作
{
UINT16 *eeaddr; //对EEPROM进行写操作时的地址
/*
allow_calibration = 0;
calibration = 1;
*/
DisableInterrupts;
eeaddr = (UINT16*)(number);
while(!(ECLKDIV & 0x80)) //判断ECLKDIV是否被写入,是向下进行,否原地等待?
{}
while(!(ESTAT & 0x80)) //判断缓冲区是否准备好,准备好则向下进行,没有准备好则原地等待?
{}
while(!(EPROT & 0x80)) //判断EEPROM是否允许被写入,允许向下进行,不允许则原地等待?
{}
*eeaddr= code;
ECMD = 0x20;
ESTAT |= 0x80;
while(!(ESTAT & 0x40)) //判断EEPROM是否被写入,是向下进行,否原地等待;
{}
EnableInterrupts;
return;
}
*/
UINT16 EEPROM_read(UINT16 add) //读操作
{
UINT16 *erase;
UINT16 m;
calibration = 0;
DisableInterrupts;
erase = (UINT16*)(add);
m = *erase;
EnableInterrupts;
return m;
}