保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

闪速存储器芯片K9F6408系列的典型应用


sh_CE=0;file://片选
  WriteCommand(0x00);file://写读的命令
  WriteAddress(0x00,0);file://写读的地址
  for(d=0;d!=2;d++)file://一次读两页
  {
  uintk=528;file://每个扇区有528个字节
  while(!Flash_RB)//当读信号无效时,等待
  {
  }
  while(k)file://当k不为0时,就继读;否则就停止读
  {
  Flash_RD=0;file://准备好读入
  #pragmaasmfile://嵌入汇编,插入2个机器周期
  NOP
  NOP
  #pragmaendasm//结束汇编
  
  ACC=P0;file://把P0口读出的值存入ACC寄存器
  #pragmaasm//嵌入汇编,插入2个机器周期
  
  
  
  
  NOP
  NOP
  #pragmaendasm//结束汇编
  Flash_RD=1;file://不再读入
  SendData();file://串口发送数据
  k--;
  }
  }
  Flash_CE=1;file://不再片选
  }
  
  3)写flash:和读操作不一样的是,写操作有两个命令字:0X80和0X10,写入0X80后,表示将向寄存器中写入数据,如果再键入0X10则Flash中的控制器将寄存器的数据存储到数据存储器中。写操作时,将欲写入数据的地址与错误扇区表相对照,看是否在表中。如果在表中,则将页指针地址加十六(即换到下一个Block中),再对照,循环操作直到找到不在表中的地址。以此保证所写的地址都是有效地址。具体过程:选中Flash,通过I/O口写入写命令字,写入所要编程数据地址,置写信号有效。(写时序见图五
  
  
  
  *unsignedcharAssertBlock(unsignedchara)//与记录坏块的表相对照的子程序
  {
  unsignedchari=0;
  while(i!=invalidblockbound+1)//invalidblockbound是无效块的总数
  {
  while(a!=*InvalidBlockAddress++)//当未遍历到最后一个无效块时,就继续核对
  
  {
  i++;
  }
  }
  if(i!=invalidblockbound+2)
  return1;//无效的块
  else
  return0;//有效的块
  }
  
  voidWrite(void)//写操作
  {
  unsignedcharh;
  if(first)//当开始对一页进行写操作时,first=1,否则为0
  {
  Flash_CE=0;file://片选
  WriteCommand(0x80);file://写命令0x80
  *ucharAssertBlock(startpage/16)file://与记录坏块的表相对照
  WriteAddress(0x00,startpage);file://写地址
  first=0;
  }
  for(h=0;h!=16;h++)
  WriteData(output[h]);file://写入寄存器处理好的GPS数据
  if(FlagWrite)//当寄存器中数据满528字节(1页)时,FlagWrite=1,否则为0
  {
  WriteCommand(0x10);//将数据写入flash
  while(!Flash_RB)file://等待读信号有效
  {
  }
  WriteCommand(0x70);file://读状态量
  Delay10us();
  Flash_RD=0;file://准备好读入
  #pragmaasm//嵌入汇编,插入两个机器周期
  nop
  nop
  #pragmaendasm//结束汇编
  ACC=P0;
  ACC=ACC&0x01;
  Flash_RD=1;
  if(ACC!=0)file://若最后一位不

《闪速存储器芯片K9F6408系列的典型应用(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/165318.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。