C8051中Flash存储器的在线擦写方法

C 8 0 5 1 F 0 2 x F l a s h存储器的结构可以知道,C8051F02xFlash存储器中,不仅具有64KBFlash存储器(其地址为0x0000~0xFFFF,该存储器可以用来存储程序代码和非易失性数据),还有一个附加的128B的扇区(该扇区位于0x10000~0x1007F)。C8051F02xFlash存储器中附加的128B的扇区在64KB存储器中是双映射的,其逻辑地址范围是0x0000~0x007F。许多单片机应用场合需要使用掉电不丢失内容的数据存储器,一般用EEPROM来实现。为节省成本,可使用C8051F020Flash作为数据存储器。

在线擦—写程序

下面给出C8051F020Flash存储器128B存储区在线

读—写的C程序。

(1)在线读程序

为了更改C8051F020Flash存储器128B存储区中一个多字节数据集中的某一个字节,整个数据集必须首先被保存到一个临时的存储区;然后将扇区擦除,更新数据;最后将数据集写回到原扇区。128B的扇区规模使数据更新更加容易,可以使用内部数据R A M作为临时存储区,而不浪费程序存储器空间。由于Flash读操作是用MOVC指令实现的,因此用于读操作的F lash指针必须是CODE类型。下面是将Flash存储器中的数据拷贝到存放于内部RAM的数组a[t]中的样例程序。

void Flash_READvoid

{unsignedcharcode*pread;/*程序存储器空间的指针

Flash),指向待读地址*/

pread=0x1000;

for(i=0;i<t;i++)

a[i]=*pread++;

}