📄 sst28sf040.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 + -