| 
 
| MA86系列(MTP型) 步骤1:将要修改的数据直接写入到MTP
 
 其它系列(FLASH型)
 步骤1:保存Flash数据到缓存
 步骤2:擦除此页(使用页擦除模式)
 步骤3:在缓存里修改要更新的数据
 步骤4:将缓存里的数据写入到Flash(使用字节编程模式)
 // 页擦除
 bit bEA=EA;
 IFADRH = ByteAddr;        //送地址高字节
 IFADRL= 0x00;               //送地址低字节;
 EA = 0;                        //关中断
 ISPCR = 0x80;               //允许ISP/IAP操作
 IFMT =0x03;                 //页擦除
 SCMD = 0x46;
 SCMD = 0xB9;
 nop();
 IFMT=0;
 ISPCR = 0;                    //清ISP/IAP特殊寄存器
 EA = bEA;                     //恢复中断
 
 
 // 字节编程
 bit bEA=EA;
 IFD = ByteData;             //送所要写的数据
 IFADRH = ByteAddr>>8;   //送地址高字节
 IFADRL= ByteAddr;          //送地址低字节;
 EA = 0;                         //关中断
 ISPCR = 0x80;                //允许ISP/IAP操作
 IFMT =0x02;                  // 字节编程
 SCMD = 0x46;
 SCMD = 0xB9;
 nop();
 IFMT=0;
 ISPCR = 0;                    //清ISP/IAP特殊寄存器
 EA = bEA;                     //恢复中断
 
 // 字节读取
 bit bEA=EA;
 IFADRH = ByteAddr>>8;  //送地址高字节
 IFADRL= ByteAddr;         //送地址低字节;
 EA = 0;                        //关中断
 ISPCR = 0x80;               //允许ISP/IAP操作
 IFMT = 0x01;                //字节读取
 SCMD = 0x46;
 SCMD = 0xB9;
 nop();
 IFMT=0;
 ISPCR = 0;                   //清ISP/IAP特殊寄存器
 EA = bEA;                    //恢复中断
 return IFD;
 
 | 
 |