如何掉电时保存RAM数据到类EEPROM,上电后根据情况重新写入RAM
本帖最后由 hggen 于 2011-1-8 13:32 编辑
设计一款外贸产品,本来是用166芯片掉电模式,但是由于该芯片功耗较大,只能支持15秒左右,外贸产品,对掉电时间有要求,需要7分钟以上,于是外置了电容电路,根据重新上电电容残留电量检测AD值判断掉电时间,当在掉电时间内,重新恢复到原先状态
当检测不到几个过零点后,判断出掉电,迅速把RAM数据保存在类EEPROM里
以下是部分程序,就是不知道这个保存和重新写回怎么操作,望高手解答
/*---------------------------------------------------------------------------
;EraseFlash
;erase the whole sector of Flash ROM
;--------------------------------------------------------------------------*/
EA = 0; //step 1 ,关闭中断
FLASHCON |=0x01; //选择类EEPROM
XPAGE = 0x03; //step 2 ,设置擦除的扇区3
IB_CON1 = 0xE6; //step 3,设置擦除操作
IB_CON2 = 0x05; //时序的要求,固定不变
IB_CON3 = 0x0A; //时序的要求,固定不变
IB_CON4 = 0x09; //时序的要求,固定不变
IB_CON5 = 0x06; //时序的要求,固定不变
_nop_(); //step 4,进入擦除状态
_nop_();
_nop_();
_nop_();
//---------------------------------------
XPAGE = 0x00; //step 7,清零页寄存器
FLASHCON &=0xFE; //退出类EEPROM
EA = 1; //恢复中断
/*---------------------------------------------------------------------
;write EEPROM
;----------------------------------------------------------------------*/
EA = 0; //step 1 ,关闭中断
FLASHCON |=0x01; //选择类EEPROM
XPAGE = 0x03; //step 2 ,设置写的扇区3
IB_OFFSET= 0x00; //设置写的地址,范围00-255
// IB_DATA = 0x88; //step 3,设置写的数据
这里要写RAM到EEPROM 请问怎么写
IB_CON1 = 0x6E; //step 4,设置写操作
IB_CON2 = 0x05; //时序的要求,固定不变
IB_CON3 = 0x0A; //时序的要求,固定不变
IB_CON4 = 0x09; //时序的要求,固定不变
IB_CON5 = 0x06; //时序的要求,固定不变
_nop_(); //step 5,进入写状态
_nop_();
_nop_();
_nop_();
//---------------------------------------
XPAGE = 0x00; //step 8,清零页寄存器
FLASHCON &=0xFE; //退出类EEPROM
EA = 1; //恢复中断
/*---------------------------------------------------------------
;read EEPROM mode1 读类EEPROM方法
;-----------------------------------------------------------------*/
这里要恢复RAM,怎么写 |
|