单片机STC89C52RC 内部EEPROM

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机STC89C52RC 内部EEPROM

2011-09-06 12:15

单片机运行时的数据都存在于R A M(随机存储器)中,在掉电后R A M 中的数据是

无法保留的,那么怎

样使数据在掉电后不丢失呢?这就需要使用EEP R O M 或FL A S HR O M 等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过I I C或S P I等接口来进行数据通信

这样不光会增加开发成本,同时在程序开发上也要花更多的心思。在S T C单片机中内置了E E P R O M(其实是采用I S P/I A P技术读写内部F L A S H来实现E E P R O M),这样就节省了片外资源,使用起来也更加方便。下面

就详细介绍S T C单片机内置E E P R O M及其使用方法

S T C各型号单片机内置的E E P R O M的容量最小有2K,最大有16K,基本上很好地满足项目的需要,更

方便之处就是节省了周边的E E P R O M器件,达到节省成本的目的,而且内部E E P R O M的速度比外部的

E E P R O M的速度快很多。

S T C各型号单片机内置的E E P R O M是以512字节为一个扇区,E E P R O M的起始地址=F A L S H容量值+1,

那么S T C89C52R C的起始地址为0x2000,第一扇区的起始地址和结束地址0x2000~0x21F F,第二扇区

的起始地址和结束地址0x2200~0x23F F,其他扇区如此类推。

深入重点:

�传统的E E P R O M是电可擦可编程只读存储一种掉电后数据不丢失的存储芯片。

�S T C89C52R C的E E P R O M是通过I S P/I A P技术读写内部F L A S H来实现E E P R O M。

�S T C89C52R C的E E P R O M起始地址为0x2000,以512字节为一个扇区,E E R P O M的大小为2K字节STC89C52RC 与EEPORM 实现的寄存器有6 个,分别是ISP_D AT A、

ISP_ADDRH、ISP_ADDRL

ISP_TRIG、ISP_CMD、ISP_CONTR。

1. ISP_DATA 寄存器

I S P_D A T A寄存器:I S P/I A P操作时的数据寄存器。

I S P/I A P从F l a s h的数据在此处,向F l a s h写的数据也须放在此处。示例1:读单个字节

U I N T8E E P R O M R e a d(U I N T16a d d r)

{

……

r e t u r n I S P_D A T A;

}

示例2:写单个字节

v o i d E E P R O M W r i t e(U I N T8b y t e)

{

……

I S P_D A T A=b y t e;

}

2.ISP_ADDRH、ISP_ADDRL 寄存器

I S P_A D D R H:I S P/I A P操作时的地址寄存器高八位

I S P_A D D R L:I S P/I A P操作时的地址寄存器低八位

示例1:设置地址

v o i d E E P R O M S e t A d d r e s s(U I N T16A d d r)

{

……

I S P_A D D R H=(U I N T8)(A d d r>>8);

I S P_A D D R L=(U I N T8)A d d r;

}

3.ISP_CMD 寄存器

I S P_C M D:I S P/I A P操作时的命令模式寄存器,需要通过I S P_T R I G命令触发寄存器才能生效。

4.ISP_TRIG 寄存器

I S P/I A P命令要生效即I S P_C M D设置的命令要生效,必须通过I S P_T R I G命令触发寄存器进行触发。

触发过程很特别,只需要连续二次对I S P_T R I G寄存器赋值就可以的了,对I S P_T R I G寄存器先写入

0x46,再写入0x B9就完成命令触发的过程。

示例1:命令触发

v o i d E E P R O M C m d T r i g(v o i d)

{

……

I S P_T R I G=0x46;

I S P_T R I G=0x B9;

}

5.ISP_CONTR 寄存器

I S P_C O N T R:I S P/I A P控制寄存器

I S P E N:I S P/I A P功能允许位。0:禁止I S P/I A P编程改变F l a s h。

S W B S:0:软件选择从用户主程序区启动1:I S P程序区启动

S W R S T:0:不操作1:产生软件系统复位,硬件自动清零

W T2、W T1、W T0:设置等待时间

假如S T C89C52R C的工作频率为12M H z,那么机器周期为1u s,参照表12-,E E P R O M的读单个字

节、写单个字节、扇区擦除的所需要的时间大致如下:

读单字节:11*1u s=11u s

写单字节:60*1u s=60u s

扇区擦除:10942*1u s=10.942m s

无论单片机运行在什么工作频率下,E E P R O M的读、写、擦除操作的所需要的时间分别约为10u s、60u s、10m s。

深入重点:

�S T C89C52R C与E E P O R M实现的寄存器有6个,分别是I S P_D A T A、I S P_A D D R H、

I S P_A D D R L I S P_T R I G、I S P_C M D、I S P_C O N T R。

�E E P R O M的命令触发必须对I S P_T R I G寄存器先写入0x46,再写入0x B9。

�无论单片机运行在什么工作频率下,E E P R O M的读、写、擦除操作的所需要的时间分别约为10u s、60u s、10m s,因而要对I S P_C O N T R设置好等待时间,否则数据容易出现问题。

相关文档
最新文档