本帖最后由 jxyfdlh1987 于 2014-1-16 09:17 编辑
//--------------------------------------------------
// Description : Start for Load Eeprom default
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromStartLoadDefault(void)
{ BYTE i;
pFlashTemp[0] = 0;
for(i=1;i<8;i++)
pFlashTemp = 0xff;
CEepromSaveFlashData(_GLOBAL, pFlashTemp);
}
//--------------------------------------------------
// Description : Start for Load Eeprom default
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CEepromFinishLoadDefault(void)
{ BYTE i;
pFlashTemp[0] = 0;
for(i=1;i<8;i++)
pFlashTemp = 0x00;
CEepromSaveFlashData(_GLOBAL, pFlashTemp);
}
上面这一段代码为什么是这样设置的?
//--------------------------------------------------
// Description : Save Data of Flash.
// Input Value : Number of Page of Flash
// Output Value : None
//--------------------------------------------------
void CEepromSaveFlashData(BYTE ucPage, BYTE *pArray)
{
BYTE cnt,i;
bit equal=1;
for(cnt=pFlashAddr[ucPage] + 1;cnt>0;cnt--)
{
if((MCU_FLASH[pFlashPage[ucPage] * 1024 + (cnt - 1) * 8] & 0x7f) == (pArray[0] & 0x7f))
{
for(i=0;i<8;i++)
{
if(MCU_FLASH[pFlashPage[ucPage] * 1024 + (cnt - 1) * 8 + i] != pArray)
{
equal = 0;
break;
}
}
break;
}
if(cnt==1)
equal = 0;
}
if(!equal)
{
if(pFlashAddr[ucPage] == 127)
{
CEepromMoveFlashData(ucPage);
}
else
{
for(cnt=1;cnt<8;cnt++)
MCU_FLASH[pFlashPage[ucPage] * 1024 + pFlashAddr[ucPage] * 8 + cnt] = pArray[cnt];
MCU_FLASH[pFlashPage[ucPage] * 1024 + pFlashAddr[ucPage] * 8] = pArray[0];
pFlashAddr[ucPage] += 1;
}
}
}
下面这段代码看不懂是怎么存储到flash中的。希望能一一注释一下!非常感谢!
|