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

📄 flashrw.c

📁 应用与c8051f020的地震波检测单片机源代码
💻 C
字号:
//本文件用于将工程信息存储在020的FLASH 非易失存储器中附加的128 字节的扇区内

/*操作步骤:
1. 禁止中断。
2. 置位FLWE(FLSCL.0),以允许由用户软件写/擦除FLASH。
3. 置位PSEE(PSCTL.1),以允许FLASH 扇区擦除。
4. 置位PSWE(PSCTL.0),以允许FLASH 写。
5. 用MOVX 指令向待擦除扇区内的任何一个地址写入一个数据字节。
6. 清除PSEE 以禁止FLASH 扇区擦除。
7. 用MOVX 指令向刚擦除的扇区中所希望的地址写入数据字节。重复该步直到所有字节都已写入(目标扇区内)。
8. 清除PSWE 以禁止FLASH 写,使MOVX 操作指向XRAM 数据空间。
9. 重新允许中断。
*/	


	//FlashWrite()向从0x00开始的24个字节写入数据
void FlashWrite(uint DestAddr)
	{
	uchar data i = 0;
	uchar xdata *data pwrite;

	EA = 0;								//禁止中断
   	pwrite = (uchar xdata*)DestAddr;

   	FLSCL |= 0x01;                      // enable FLASH writes/erases
   	PSCTL |= 0x07;                      //SFLE = 1,访问128B; PSWE = 1; PSEE = 1
	*pwrite = 0;						//向扇区内任意位置写入任意数以擦除扇区
   	PSCTL &= ~0x02;                     //PSEE = 0,禁止擦除

	for(i=0;i<24;i++)
		{
		*(pwrite++) = Info[i];
		}

   	PSCTL &= ~0x05;                      //SFLE =0,不再访问128B; PSWE = 1;禁止写FLASH 
   	FLSCL &= ~0x01;                      // Disable FLASH writes/erases
	EA = 1;								//重新允许中断
	}


	//FlashRead()从0x00处开始读取24个字节,存入Info[]
void FlashRead(uint SrcAddr)		
	{
	uchar data i = 0;
	uchar code *data pread;

	EA = 0;								//禁止中断
	PSCTL |= 0x04;                   	//SFLE = 1,访问128B
   	pread = (uchar code*)SrcAddr;

	for(i=0;i<24;i++)
		{
		Info[i] = *(pread++);
		}

	PSCTL &= ~0x04;                   	//SFLE = 0,不再访问128B
	EA = 1;								//重新允许中断
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -