第七章单片机存储器的扩展..
- 格式:ppt
- 大小:1.08 MB
- 文档页数:32
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字节时,程序将出错。
单片机存储器扩展在单片机的应用中,常常会遇到内部存储器容量不足的情况。
这时候,就需要对单片机的存储器进行扩展,以满足系统对存储容量的需求。
单片机的存储器可以分为程序存储器和数据存储器。
程序存储器用于存储单片机运行的程序代码,而数据存储器则用于存储程序运行过程中的数据。
当单片机内部的存储器无法满足应用需求时,就需要通过外部扩展来增加存储容量。
在进行存储器扩展之前,我们需要了解单片机的存储器寻址方式。
不同的单片机可能有不同的寻址方式,但通常都包括直接寻址、间接寻址和变址寻址等。
了解寻址方式对于正确进行存储器扩展至关重要。
对于程序存储器的扩展,常用的方法是使用外部只读存储器(ROM),如 EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)等。
扩展时,需要将外部 ROM 与单片机的地址总线、数据总线和控制总线正确连接。
地址总线用于指定存储器的地址,数据总线用于传输数据,控制总线则用于控制存储器的读写操作。
以常见的 8051 单片机为例,它的地址总线为 16 位,可以寻址64KB 的存储空间。
如果要扩展 32KB 的程序存储器,我们可以选用一片容量为 32KB 的 EPROM 芯片,如 27256。
将 EPROM 的地址线 A0A14 与单片机的地址总线 A0 A14 相连,数据线 D0 D7 与单片机的数据总线 D0 D7 相连。
控制总线中的片选信号(CS)通常通过地址译码器来产生,以确保在特定的地址范围内选中该 EPROM 芯片。
在数据存储器的扩展方面,常用的是外部随机存取存储器(RAM),如静态 RAM(SRAM)和动态 RAM(DRAM)。
SRAM 速度较快,但价格相对较高;DRAM 价格较低,但需要不断刷新。
同样以 8051 单片机为例,如果要扩展 8KB 的数据存储器,可以选用一片 6264 SRAM 芯片。
连接方式与程序存储器扩展类似,地址线和数据线分别与单片机的对应总线相连。