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

📄 sst28sf040.c

📁 SST28SF040是SST公司推出的高速可编程闪存。它具有512k*8的存储结构 芯片擦除及写入的时间快,可靠性高,能够重复写100,000次,低功耗.以上程序是用c51编写的驱动程序
💻 C
字号:
//"28sf040参数定义"
#define AUTO_PG_ERASE1    0x20
#define AUTO_PG_ERASE2    0xd0
#define AUTO_PGRM         0x10

void disable_chip_data_protection()            // source: gck
{
   uchar a;
   
   a=P1;
   P1=BSE2RAM;//select28sf040();
   gck=*((uchar volatile xdata *)0x1823L);
   gck=*((uchar volatile xdata *)0x1820L);
   gck=*((uchar volatile xdata *)0x1822L);
   gck=*((uchar volatile xdata *)0x0418L);
   gck=*((uchar volatile xdata *)0x041bL);
   gck=*((uchar volatile xdata *)0x0419L);
   gck=*((uchar volatile xdata *)0x041aL);               
   P1=a;
}


void enable_chip_data_protection()            // source: gck
{
   uchar a;
   a=P1;
   P1=BSE2RAM;//select28sf040();
   
   gck=*((uchar volatile xdata *)0x1823L);
   gck=*((uchar volatile xdata *)0x1820L);
   gck=*((uchar volatile xdata *)0x1822L);
   gck=*((uchar volatile xdata *)0x0418L);
   gck=*((uchar volatile xdata *)0x041bL);
   gck=*((uchar volatile xdata *)0x0419L);
   gck=*((uchar volatile xdata *)0x040aL);               
   P1=a;
}

void check_toggle_ready()                     // source: gck
{
   uchar a,b;
   a=*((uchar volatile xdata *)0xffffL);               
      a=a&0x40;      
   do
   {
        b=a;
     a=*((uchar volatile xdata *)0xffffL);
     a&=0x40;               
   }
   while(a!=b);
}

uchar sst28sf040_byte_write(uchar xdata  *pxd,uchar dat)    // source gck
{
   uchar a,b;
   P1=((P1&0x07)|BSE2RAM);//select28sf040(); 
   disable_chip_data_protection();
   *pxd=AUTO_PGRM;
   *pxd=dat;
   a=*pxd;
   a=a&0x40;
   do
   {
      b=a;
      a=*pxd;
      a&=0x40;
   }
   while(a!=b);
   
   for(a=0;a<10;a++)  _nop_();
   
   a=*pxd;
   enable_chip_data_protection();
   if(a==dat)   
   {
      return   0;
   }
   else
   {
      return   0xff;
   }

}

uchar sst28sf040_sector_erase(unsigned long eep)      // eep may be 0x7ffff
{
   uchar a;
   unsigned int   ia;
   P1=((P1&0x07)|BSE2RAM);//select28sf040(); 
    disable_chip_data_protection();
   a=(eep>>16);
   a&=0x07;
   P1=(P1&0xf8)|a;
   ia=eep&0x0000ff00;
   *((uchar volatile xdata *)ia)=AUTO_PG_ERASE1;
   *((uchar volatile xdata *)ia)=AUTO_PG_ERASE2;   
   check_toggle_ready();
   
   a=0;
   do
   {
      if(*((uchar volatile xdata *)(ia+a))==0xff)      
      {
         a++;
      }
      else
      {
       enable_chip_data_protection();
         return 0xff;   
      }
   }
   while(a!=0);

   enable_chip_data_protection();
   return   a;
   
}

⌨️ 快捷键说明

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