📄 w78e516b_program_4kflash.c
字号:
#include <reg54.h>
sfr CHPCON=0xBF; //在编程特殊寄存器定义;
sfr CHPENR=0xF6;
sfr SFRAL=0xC4;
sfr SFRAH=0xC5;
sfr SFRFD=0xC6;
sfr SFRCN=0xC7;
sbit A16=P1^7;
sbit POWERON=P3^4;
sbit DSCEN=P3^5;
void Erase() //64flash擦除;
{
SFRCN=0x62;
TL0=0x3C;
TH0=0xB0;
TR0=1;
PCON=0x01;
}
bit BlankCheck() //64k flash 空白检查;
{
bit flag=1;
unsigned int index;
// A16=1;
SFRCN=0x40;
SFRAH=0x00;
SFRAL=0x00;
TLOW=0xFB;
THIGH=0xFF;
TL0=0xFB;
TH0=0xFB;
for(index=0;index<0xFFF;index++)
{
TR0=1;
PCON=0x01;
if(SFRFD!=0xFF)
{
flag=0;
break;
}
else
{
SFRAL++;
if(SFRAL==0)
SFRAH++;
}
}
return(flag);
}
void Program() //编程函数两分支共用,外存由A16区分,
{
unsigned int index;
A16=1;
RAMENABLE
SFRCN=0x61; //设定为写操作;
SFRAL=0x00;
SFRAH=0x00;
TLOW=0x5A;
THIGH=0xFF;
TL0=0x5A;
TH0=0xFF;
for(index=0;index<0xFFF;index++)
{
SFRFD=XBYTE[index];
TR0=1;
PCON=0x01;
SFRAL++;
if(SFRAL==0)
SFRAH++;
}
}
bit Verify() //编程数据验证;
{
bit flag=1;
unsigned int index;
A16=1;
RAMENABLE
SFRCN=0x40;
SFRAH=0x00;
SFRAL=0x00;
TLOW=0xFB;
THIGH=0xFF;
TL0=0xFB;
TH0=0xFF;
for(index=0;index<0xFFF;index++)
{
TR0=1;
PCON=0x01;
if(SFRFD!=XBYTE[index])
{
flag=0;
break;
}
else
{
SFRAL++;
if(SFRAL==0)
SFRAH++;
}
}
return(flag);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -