u8 code *IapAddr = 0x00;
*****************************************************
*函数名称:void IAPWrite(u8 Addr,u8 Value,u8 IAPArea)
*函数功能:IAP初始化
*入口参数:void
*出口参数:Addr,Value,IAPArea
*****************************************************/
//IAP写操作
void IAPWrite(u8 Value,u8 Addr)
{
EA = 0;
IAPADE = 0x02; //IAPArea=0x00:选择ROM区操作 IAPArea=0x02:选择EEPROM区操作
IAPDAT = Value; //写入数据Data
IAPADH = 0x00; //写入地址的高5位
IAPADL = Addr; //写入地址的低8位
IAPKEY = 240; //IAP开启保护控制时间
IAPCTL = 0x06; //CPU hold time为2ms,写入操作命令
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
IAPADE = 0x00; //MOVC指向ROM
EA = 1;
}
/*****************************************************
*函数名称:u8 IAPRead(u8 Addr,u8 IAPArea)
*函数功能:IAP初始化
*入口参数:void
*出口参数:Addr,IAPAre
*****************************************************/
u8 IAPRead(u8 Addr)
{
u8 ReadValue = 0x00;
IAPADE = 0x02;
ReadValue = *(IapAddr+Addr); //读取的数据
IAPADE = 0x00; //MOVC指向ROM
return ReadValue;
}
IAPWrite(byte0,0x00); //写(数据,地址)
byte0=IAPRead(0x00); //读
|