打印

最新C8051F120单片机读写Samsung FLASH存储器程序

[复制链接]
2318|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huolf|  楼主 | 2009-9-20 17:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DBMODE  为数据线的输入输出模式 为单片机的PXMDOUT
DBOUT    为输出模式
DBus       为数据端口 Px

/--------FLASH命令传送------//
void Comm_Latch_Cycle(uchar COMMAND)
   {
        uchar SFRPAGE_SAVE = SFRPAGE;
  SFRPAGE = CONFIG_PAGE;
    DBMODE  = DBOUT;
        ALE=0;
  ALE=0;
  CLE=1;
  RE=1;
  WE=1;
  DBus=COMMAND;             //WRITE COMMAND
      WE=0;
  WE=1;
  CLE=0;
  ALE=0;
  SFRPAGE = SFRPAGE_SAVE;
  
    }
//------------------ 传送地址------------------------------
void Add_Latch_Cycle(uint ADDR )  //传送地址,ADDR为页地址,从addr页第0字节开始
{
     uchar SFRPAGE_SAVE = SFRPAGE;
      SFRPAGE = CONFIG_PAGE;  
  DBMODE= DBOUT;
  CLE=0;
  ALE=1;
  RE=1;
  WE=1;
  DBus=0;                   //A0-A7,column address
        WE=0;
  WE=1;
  DBus=(uchar)ADDR;         //A9-A16 ,Row Address   page address A12-A29
      WE=0;
  WE=1;
  DBus=(uchar)(ADDR>>8);       //A17-A24,Row Address
  WE=0;
  WE=1;  
  ALE=0;
  CLE=0;
        SFRPAGE = SFRPAGE_SAVE;
}
//读状态,状态正确时返回0,错误时返回1
uchar Status_Read(void)
{
    uchar  Status;
    Comm_Latch_Cycle(0x70);
Status=Read_Byte();
Status=Status & 0x01;
return Status;      //status=0 erease ok else failled  
}
//从FLASH读一个字节
uchar Read_Byte(void)              //read one byte from flash
{
     uchar Rdata;
  char SFRPAGE_SAVE = SFRPAGE;
  SFRPGCN=CONFIG_PAGE;
  DBMODE = DBIN;                     //Data Bus input mode
     DBus   = 0xFF;
  ALE =0;
  CLE =0;
     RE  =1;
     RE  =0;   
     Rdata =DBus;
     RE=1;
  SFRPAGE = SFRPAGE_SAVE;
        return(Rdata);
}

信息来源:http://www.52embed.com/viewthread.php?tid=97&extra=page%3D1

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

粉丝