原创 C8051F310读写FLASH

2008-4-18 12:58 2556 0 分类: MCU/ 嵌入式

//程序运行中保存数据至FLASH中
//读FLASH
uchar Read_Flash(uint addr)
{
          bit ea;
   uchar dat;
   uchar  code *pread;
   ea="EA";  
   EA="0";
   pread="addr";                       
   dat=*pread;
   EA="ea";
   return dat;
}


void Erase_Page(uint addr)              //要擦除某一512页面的其中一地址
{      
  bit ea;
  uchar  xdata *pwrite;
  ea="EA";
  EA="0";
  VDM0CN=0x80;
  RSTSRC="0x02";
  pwrite="addr"; 
  FLKEY="0xa5";
  FLKEY="0xf1";
  PSCTL|=0x03;
  VDM0CN=0x80;
  RSTSRC="0x02"; 
  *pwrite=0;
  PSCTL&=~0x03;
  EA="ea";
}


void Write_Flash(uint addr,uchar t,uchar *dat)  //开始地址,数组长度,写入的数
{
  bit ea;
  uchar i;
  uchar xdata *pwrite;
  ea="EA";
  EA="0";
  FLSCL="0x80";
  Erase_Page(addr);                    
  VDM0CN=0x80;
  RSTSRC="0x02";
  pwrite="addr";
 
  for(i=0;i<t;i++)
  { 
  FLKEY="0xa5";
  FLKEY="0xf1";
  PSCTL|=0x01;
  VDM0CN=0x80;
  RSTSRC="0x02";
  *pwrite++=*dat++; 
  _nop_();
  _nop_();
  }  
   
  PSCTL&=~0x01;
  EA="ea";
}


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /4 下一条