第8章 STC89C52单片机存储器扩展
- 格式:ppt
- 大小:5.61 MB
- 文档页数:87
STC89C52内部EEPROM单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。
在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过IIC 或SPI 等接口来进行数据通信。
这样不光会增加开发成本,同时在程序开发上也要花更多的心思。
在STC 单片机中内置了EEPROM(其实是采用IAP 技术读写内部FLASH 来实现EEPROM),这样就节省了片外资源,使用起来也更加方便。
下面就详细介绍STC 单片机内置EEPROM 及其使用方法。
STC 各型号单片机内置的EEPROM 的容量各有不同,见下表:(内部EEPROM 可以擦写100000 次以上)上面提到了IAP,它的意思是“在应用编程”,即在程序运行时程序存储器可由程序自身进行擦写。
正是是因为有了IAP,从而可以使单片机可以将数据写入到程序存储器中,使得数据如同烧入的程序一样,掉电不丢失。
当然写入数据的区域与程序存储区要分开来,以使程序不会遭到破坏。
要使用IAP 功能,与以下几个特殊功能寄存器相关:ISP_DA T A:ISP/IAP 操作时的数据寄存器。
ISP/IAP 从Flash 读出的数据放在此处,向Flash 写的数据也需放在此处ISP_ADDRH:ISP/IAP 操作时的地址寄存器高八位。
ISP_ADDRL:ISP/IAP 操作时的地址寄存器低八位。
ISP_CMD:ISP/IAP 操作时的命令模式寄存器,须命令触发寄存器触发方可生效。
ISP_TRIG:ISP/IAP 操作时的命令触发寄存器。
当ISPEN(ISP_CONTR.7)=1 时,对ISP_TRIG先写入0x46,再写入0xb9,ISP/IAP 命令才会生效。
单片机芯片型号起始地址内置EEPROM 容量(每扇区512 字节)STC89C51RC,STC89LE51RC 0x2000 共八个扇区STC89C52RC,STC89LE52RC 0x2000 共八个扇区STC89C54RD+,STC89LE54RD+ 0x8000 共五十八个扇区STC89C55RD+,STC89LE55RD+ 0x8000 共五十八个扇区STC89C58RD+,STC89LE58RD+ 0x8000 共五十八个扇区寄存器标识地址名称7 6 5 4 3 2 1 0 初始值ISP_DA TA 0xE2 ISP/IAP闪存数据寄存器11111111ISP_ADDRH 0xE3 ISP/IAP 闪存地址高位00000000ISP_ADDRL 0xE4 ISP/IAP 闪存地址低位00000000ISP_CMD 0xE5 ISP/IAP闪存命令寄存器MS2MS1 MS0 xxxxx000ISP_TRIG 0xE6 ISP/IAP 闪存命令触发xxxxxxxxISP_CONTR 0xE7 ISP/IAP 控制寄存器ISPEN SWBS SWRST WT2WT1 WT0 00xx000B7 B6 B5 B4 B3 B2 B1 B0 命令/操作模式选择保留命令选择-----0 0 0 待机模式,无ISP/IAP 操作-----0 0 1 对用户的应用程序Flash 区及数据Flash 区字节读-----0 1 0 对用户的应用程序Flash 区及数据Flash 区字节编程-----0 1 1 对用户的应用程序Flash 区及数据Flash 区扇区擦除ISP_CONTR:ISP/IAP 控制寄存器。
STC89C52单片机用户手册一、概述STC89C52 单片机是一款高性能、低功耗的 8 位微控制器,具有丰富的片内资源和强大的功能,广泛应用于各种电子设备和控制系统中。
二、主要特点1、增强型 8051 内核,指令代码完全兼容传统 8051 单片机。
2、工作电压范围宽,可在 38V 55V 之间正常工作。
3、片内集成 8K 字节的 Flash 程序存储器,可反复擦写 1000 次以上。
4、 512 字节的片内数据存储器(RAM)。
5、拥有 32 个可编程的 I/O 口,方便连接外部设备。
6、 3 个 16 位定时器/计数器,可用于定时、计数和脉冲宽度测量等功能。
7、 8 个中断源,包括 2 个外部中断、3 个定时器中断和 2 个串行口中断,具有两级中断优先级。
8、全双工串行通信接口(UART),可方便地与其他设备进行通信。
三、引脚功能1、 VCC:电源正极,接+5V 电源。
2、 GND:电源地。
3、 P0 口:8 位漏极开路双向 I/O 口,作为地址/数据总线分时复用口。
4、 P1 口:8 位准双向 I/O 口,具有内部上拉电阻。
5、 P2 口:8 位准双向 I/O 口,作为高 8 位地址总线。
6、 P3 口:8 位准双向 I/O 口,具有第二功能。
例如,P30 为串行输入口(RXD),P31 为串行输出口(TXD)等。
四、存储结构1、程序存储器STC89C52 单片机的程序存储器空间为 8K 字节,地址范围为0000H 1FFFH。
用于存放用户编写的程序代码。
2、数据存储器数据存储器分为内部数据存储器和外部数据存储器。
内部数据存储器包括低 128 字节的 RAM(地址范围为 00H 7FH)和高 128 字节的特殊功能寄存器(SFR,地址范围为 80H FFH)。
外部数据存储器最大可扩展至 64K 字节。
五、时钟与复位1、时钟电路STC89C52 单片机可以使用内部时钟和外部时钟。
内部时钟通过在XTAL1 和 XTAL2 引脚之间连接晶振和电容来产生时钟信号。
STC单片机内部扩展RAM的应用作者:郭天祥来源:原创更新时间:2008-11-27 21:19:35 浏览次数:5803RAM是用来在程序运行中存放随机变量的数据空间,51单片机默认的内部RAM只有128字节,52单片机增加至256字节,STC89C52增加到512字节,STC89C54、55、58、516等增加到1280字节,对于编程者来说,一个芯片的RAM越多,写起程序来就越容易得心应手,不会总考虑RAM不够用而担心这担心那,连过多的变量都不敢定义。
在前面我们写程序时曾讲到过,如果定义一个变量后,不对这个变量进行初始化,这个变量默认的初值就是0,其实这个结论是需要一定的条件的,在用KEIL编写程序时,总程序中所有变量占用的字节之和小于128字节,并且存储器模式为small模式的前提下,对定义的变量不进行初始化时,编译器会默认将变量值设定为0。
一旦程序中的总变量超过128字节,必须对所有变量进行初始化,否则,没有被初始化的变量默认值将是不确定的。
当变量总和超过128字节时,必须还要在编译器中重新设定存储器的存储模式,存储器模式一共有3种,分别为small、compact和large模式,在KEIL编译器中有选项可进行选择,选项表如图4.4.1所示。
它决定了没有明确指定存储类型的变量、函数参数等数据的默认存储区域。
如果在某些函数中需要使用非默认的存储模式,也可以使用关健字直接说明。
下面对这三种模式分别做介绍。
1. small模式small模式中,所有缺省变量参数均装入单片机内部128字节RAM中,当定义类似如:uchar a; float b;等变量时,这些变量都装入内部128字节RAM中。
使用该模式的优点是访问速度快,缺点是空间有限,而且是对堆栈的空间分配比较少,难以把握,碰到需要递归调用的时候需要小心。
所以这种模式只适用于小程序。
2. compact模式compact模式中,所有缺省变量均位于单片机内部256字节RAM中,和在small模式中使用关健字pdata 来定义变量的效果相同,如:uchar pdata a[100];在该种模式下,程序总变量不得超过256字节,对于只有128字节的单片机,使用此模式定义变量超过128字节时,程序将出错。
单片机STC89C52RC内部EEPRO M单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用E EPROM或FLASHR OM 等存储器来实现。
在传统的单片机系统中,一般是在片外扩展存储器,单片机与存储器之间通过II C 或SPI 等接口来进行数据通信。
这样不光会增加开发成本,同时在程序开发上也要花更多的心思。
在STC 单片机中内置了EEPROM(其实是采用ISP/IAP 技术读写内部F LASH 来实现EEPR OM),这样就节省了片外资源,使用起来也更加方便。
下面就详细介绍ST C 单片机内置EE PROM 及其使用方法STC 各型号单片机内置的EEPR OM 的容量最小有2K,最大有16K,基本上很好地满足项目的需要,更方便之处就是节省了周边的E EPROM器件,达到节省成本的目的,而且内部EEP ROM 的速度比外部的EEPROM的速度快很多。
STC 各型号单片机内置的EEPR OM 是以512 字节为一个扇区,EEPROM的起始地址=FALSH 容量值+1,那么STC89C52RC的起始地址为0x2000,第一扇区的起始地址和结束地址0x2000~0x21FF,第二扇区的起始地址和结束地址0x2200~0x23FF,其他扇区如此类推。
深入重点:�传统的EEPR OM 是电可擦可编程只读存储一种掉电后数据不丢失的存储芯片。
�STC89C52RC 的EEPROM是通过ISP/IAP 技术读写内部F LASH 来实现EEPR OM。
�STC89C52RC 的EEPROM起始地址为0x2000,以512 字节为一个扇区,EERPOM的大小为2K字节。
STC89C52RC 与EEPORM实现的寄存器有6 个,分别是ISP_DATA、ISP_ADD RH、ISP_ADD RLISP_TRI G、ISP_CMD、ISP_CON TR。