- 打卡等级:以坛为家I
- 打卡总天数:232
- 最近打卡:2025-04-30 11:43:15
金牌会员
- 积分
- 1184
|
发表于 2024-3-6 19:39:57
|
显示全部楼层
{ //IAP擦除/烧写标记字节
EA = 0; // !!!!!!!!!!关闭总中断
IapRead(512,Iap512Rd1,XRam512); //IAP读:512字节长度,EEPROM字节首地址,XRAM字节首地址
u16Acc = 0; //循环发送计数
u8Temp = 0; //正确擦除计数
L_WrFlage:
u16Acc++;
u16Temp = IcFlg - Iap512Rd0; //折算在1K EEPROM中的地址0000~0400
XRam512[0] = 0x00; IapWrite(1,u16Temp,XRam512); //IAP写0x00
if(u16Acc == 100){ RomIndex = IcFlg; SBUF = *RomIndex; TI = 0; while(TI == 0){;} TI = 0; } //清除已发送标志
XRam512[0] = 0xFF; IapWrite(1,u16Temp,XRam512); //IAP写0xFF
if(u16Acc == 200){ u16Acc = 0; RomIndex = IcFlg; SBUF = *RomIndex; TI = 0; while(TI == 0){;} TI = 0; } //清除已发送标志
if(RI){ RI = 0; goto L_RegAck; } //有接收退出标记,转注册数据应答
RomIndex = IcFlg;
if(0xFF == *RomIndex){ u8Temp = 0; goto L_WrFlage; } //继续烧写擦除循环
//if(0x00 != *IcFlg){ u8Temp = 0; goto L_WrFlage; } //复位计数,继续烧写擦除循环
u8Temp++;
if(u8Temp < 500){ goto L_WrFlage; } //擦除不成功计数500次
// ***** 标记结束 *****
|
|