📄 flash128.c
字号:
#include "FLASH128.h"
#include "C8051f020.h"
/*****************flash写******************************************/
void flash_write(unsigned int dest,unsigned char *src,bit SFLE)
{
unsigned short i,num=128;
if(SFLE)
{
num = 128;
}
for(i=dest;i<dest+num;i++)
{
flash_Bytewrite(i,*src++,SFLE);
}
}
/*****************flash读******************************************/
void flash_read(unsigned int dest,unsigned char *src,bit SFLE)
{
unsigned short i,num=38;
if(SFLE)
{
num=38; /*14+21+3字节*/
}
for(i=dest;i<dest+num;i++)
{
*src++ = flash_Byteread(i,SFLE);
}
}
/*****************flash页擦除*****************************************/
void flash_Pageerase(unsigned int addr,bit SFLE)
{
bit EA_SAVE = EA;
char xdata * data pwrite;
EA = 0;
pwrite = (char xdata *)addr;
FLSCL |= 0x01;
PSCTL |= 0x03;
if(SFLE)
{
PSCTL |= 0x04;
}
*pwrite = 0x00;
if(SFLE)
{
PSCTL &= ~(0x04);
}
PSCTL &= ~(0x03);
FLSCL &= ~(0x01);
EA = EA_SAVE;
}
/*****************flash字节写***************************************/
void flash_Bytewrite(unsigned int addr,char byte,bit SFLE)
{
bit EA_SAVE = EA;
char xdata * data pwrite;
EA = 0;
pwrite = (char xdata *)addr;
FLSCL |= 0x01; //允许FLASH写
PSCTL |= 0x01; //允许写FLASH存储器
if(SFLE)
{
PSCTL |= 0x04; //访问128字节临时存储器扇区
}
*pwrite = byte;
if(SFLE)
{
PSCTL &= ~(0x04);
}
PSCTL &= ~(0x01);
FLSCL &= ~(0x01);
EA = EA_SAVE;
}
/*****************flash字节读**************************************/
unsigned char flash_Byteread(unsigned int addr,bit SFLE)
{
bit EA_SAVE = EA;
char code * data pread;
unsigned char byte;
EA = 0;
pread = (char code *)addr;
if(SFLE)
{
PSCTL |= 0x04;
}
byte = *pread;
if(SFLE)
{
PSCTL &= ~(0x04);
}
EA = EA_SAVE;
return byte;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -