本帖最后由 yefeng19901202 于 2018-3-9 15:51 编辑
原厂带的Flash操作程序基本和这个一样
void Flash_WriteArr(unsigned int fui_Address,unsigned char fuc_Length,unsigned char *fucp_SaveArr)
{
EA = 0;
while(fuc_Length--)
{
IAP_DATA=*fucp_SaveArr; //待编程数据,写入数据寄存器必须放在解锁之前
IAP_CMD=0xF00F; //Flash解锁
IAP_ADDR=fui_Address; //写入地址
IAP_CMD=0xB44B; //字节编程
IAP_CMD=0xE11E; //触发一次操作
fui_Address++; //地址加一
fucp_SaveArr++; //数据后移一位
}
EA = 1;
}
在不开xdata模式可以使用,开启后不能用,
改进后程序
void Flash_WriteArr(unsigned int fui_Address,unsigned char fuc_Length,unsigned char *fucp_SaveArr)
{
data unsigned int fui_Address2;
data unsigned char fuc_Length2;
fui_Address2 = fui_Address;
fuc_Length2 = fuc_Length;
EA = 0;
while(fuc_Length2--)
{
IAP_DATA=*fucp_SaveArr; //待编程数据,写入数据寄存器必须放在解锁之前
IAP_CMD=0xF00F; //Flash解锁
IAP_ADDR=fui_Address2; //写入地址
IAP_CMD=0xB44B; //字节编程
IAP_CMD=0xE11E; //触发一次操作
fui_Address2++; //地址加一
fucp_SaveArr++; //数据后移一位
}
EA = 1;
}
|