读写内部flash时,仿真发现flash的地址寄存器PMADRH、PMADRL和数据寄存器PMDATH、PMDATL都没有变化;
而且PMCON1有异常,其值与PCL寄存器一致,如图:
写保护已关
读写函数:
/******************************************************************************
* 读数据
******************************************************************************/
uint ReadByte(uint addr)
{
uint buff;
PMADRH = (addr>>8) & 0x07;
PMADRL = addr & 0xff;
RD = 1;
NOP();
NOP();
buff = ((PMDATH & 0x3f) << 8) + (PMDATL & 0xff);
return buff;
}
/******************************************************************************
* 写数据
******************************************************************************/
void WriteStr(uint addr , const uint *dat)
{
uchar i;
GIE = 0;
PMADRH = (addr>>8) & 0x07; //地址高位寄存器
PMADRL = addr & 0xff; //地址低位寄存器
for(i=0;i<4;i++)
{
PMDATH = (dat >> 8) & 0x3f; //数据高位寄存器
PMDATL = dat & 0xff; //数据低位寄存器
WREN = 1; //使能
PMCON2 = 0x55; //闪存编程序列
PMCON2 = 0xAA; //闪存编程序列
WR = 1; //写使能
NOP(); //空操作
NOP();
WREN = 0; //禁能
}
GIE = 1;
}
新手求助,问题解决立马结贴,万分感谢!!
|