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

📄 flash128.c

📁 c8051f020_uip1.0.rar
💻 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 + -