本帖最后由 刘前辈 于 2011-5-15 13:42 编辑
已经知道代码开销由指针引起,避免很容易:(EEROM段设置很简单)
void EE_Wrait(unsigned int pSrc, unsigned int pDst,unsigned char ucLength) //写数据内置存储器
{ //从源地址写入到----目的地址----长度
unsigned char ucCount;
// 对数据EEPROM进行解锁
do
{
FLASH_DUKR = 0xae; // 写入第二个密钥
FLASH_DUKR = 0x56; // 写入第一个密钥
}
while((FLASH_IAPSR & 0x08) == 0); // 若解锁未成功,则重新再来
for(ucCount=0;ucCount<ucLength;ucCount++)
{
*(unsigned char *)pDst = *(unsigned char *)pSrc;
while((FLASH_IAPSR & 0x04) == 0); // 等待写操作成功
pSrc ++;
pDst ++;
}
}
code 缩减1/3 ?——需要修改细节?从这里并看不出pDst是EEROM 区还是flash, Xdata RAM区。无所谓的,只要是指向004000H的指针就行。这是仿冯诺依曼结构,大家共64K/128K地址,读EEROM区和读 SRAM(Xdata)区一样指令?知道写入不一样就行了。
、、
然后讨论如何调用这个函数。
、、 |