
初级技术员

- 积分
- 66
- 在线时间
- 17 小时
- 精华
- 0
- 注册时间
- 2017-11-17
- 最后登录
- 2021-1-12
|
如下是子程序:
void Write_DATAFLASH_BYTE(unsigned int u16EPAddr,unsigned char u8EPData)
{
unsigned char looptmp=0;
unsigned int u16_addrl_r;
unsigned int RAMtmp;
//Check page start address
u16_addrl_r=(u16EPAddr/265)*256;
//Save APROM data to XRAM0
for(looptmp=0;looptmp<0x80;looptmp++)
{
RAMtmp = Read_APROM_BYTE((unsigned int code *)(u16_addrl_r+looptmp));
page_buffer[looptmp]=RAMtmp;
}
// Modify customer data in XRAM
page_buffer[u16EPAddr&0x7f] = u8EPData;
//Erase APROM DATAFLASH page
IAPAL = u16_addrl_r&0xff;
IAPAH = (u16_addrl_r>>8)&0xff;
IAPFD = 0xFF;
set_CHPCON_IAPEN;
set_IAPUEN_APUEN;
IAPCN = 0x22;
set_IAPTRG_IAPGO;
//Save changed RAM data to APROM DATAFLASH
set_CHPCON_IAPEN;
set_IAPUEN_APUEN;
IAPCN = 0x21;
for(looptmp=0;looptmp<0x80;looptmp++)
{
IAPAL = (u16_addrl_r&0xff)+looptmp;
IAPAH = (u16_addrl_r>>8)&0xff;
IAPFD = page_buffer[looptmp];
set_IAPTRG_IAPGO;
}
clr_IAPUEN_APUEN;
clr_CHPCON_IAPEN;
} |
|