w78e516b_program_4kflash.c
来自「W78E516B从64k程序空间对4K程序空间编程的子函数」· C语言 代码 · 共 126 行
C
126 行
#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 + =
减小字号Ctrl + -
显示快捷键?