⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash_wr.txt

📁 单片机读写NAND flash程序
💻 TXT
字号:
void Erase_Entire_Chip()
{
  DDRB=0xff;
  PORTB=0xff;
  MCUCR=0x80;
  XMCRA=0x00;
  XMCRB=0x00;
  unsigned char *Temp;
  Temp=(unsigned char *)(OFFSET+0x3555);
  *Temp=0xaa;
  Temp=(unsigned char *)(OFFSET+0x0aaa);
  *Temp=0x55;
  Temp=(unsigned char *)(OFFSET+0x3555);
  *Temp=0x80;
  Temp=(unsigned char *)(OFFSET+0x3555);
  *Temp=0xaa;
  Temp=(unsigned char *)(OFFSET+0x0aaa);
  *Temp=0x55;
  Temp=(unsigned char *)(OFFSET+0x3555);
  *Temp=0x10;
  Delay_100ms();
}

void Check_Toggle(unsigned char *Dst)
{
  DDRB=0xff;
  PORTB=0xff;
  MCUCR=0x80;
  XMCRA=0x00;
  XMCRB=0x00;
  BYTE Loop=1;
  BYTE PreData;
  BYTE CurrData;
  unsigned long TimeOut=0;
  
  PreData=*Dst;
  PreData=PreData&0x40;
  while((TimeOut<0x07ffffff)&&(Loop))
  {
    CurrData=*Dst;
    CurrData=CurrData&0x40;
    if(PreData==CurrData)
       Loop=0; 
    PreData=CurrData;
    TimeOut++;
   }
}

void Program_1byte(BYTE SrcByte, unsigned char *Dst)
{
  DDRB=0xff;
  PORTB=0xff;
  MCUCR=0x80;
  XMCRA=0x00;
  XMCRB=0x00;
  unsigned char *Temp;
 // unsigned char *SourceBuf;
  unsigned char *DestBuf;
 // int Index;
  DestBuf=Dst;
  Erase_Entire_Chip();
//  for(Index=0;Index<4096;Index++)
 // {
    Temp=(unsigned char *)(OFFSET+0x3555);
    *Temp=0xaa;
    Temp=(unsigned char *)(OFFSET+0x0aaa);
    *Temp=0x55;
    Temp=(unsigned char *)(OFFSET+0x3555);
    *Temp=0xa0;
   if (DestBuf>(unsigned char *)(OFFSET))
      { 
        *DestBuf=SrcByte;}
   else 
       { DDRC=0xff;
         PORTC=0x00;
         XMCRB=(1<<XMM1)|(1<<XMM0);
         DestBuf=(unsigned char *)((int)(Dst)+OFFSET);
         *DestBuf=SrcByte;
         XMCRB=0x00;}
         
   // Temp=DestBuf;
   // *DestBuf++=0x50;
  Check_Toggle(DestBuf);
  //}
}


BYTE flash_WR(unsigned char *waddr)
{
 DDRB=0xff;
 PORTB=0xff;
 MCUCR=0x80;
 XMCRA=0x00;
 XMCRB=0x00;
 BYTE a;
 unsigned char *Temp;
 
 Program_1byte(0x50,waddr);
if(waddr>(unsigned char *)(OFFSET))
 {Temp=waddr;
  a=*Temp;}
else{DDRC=0xff;
     PORTC=0x00;
     XMCRB=(1<<XMM1)|(1<<XMM0);
     Temp=(unsigned char *)((int)(waddr)+OFFSET);
     a=*Temp;
     XMCRB=0x00;} 
 return(a);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -