51单片机存储器扩展
- 格式:pptx
- 大小:1.92 MB
- 文档页数:34
c程序#include<reg52.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned intint n,m;void main(){unsigned int i;while(1){for(i=0x0000;i<=0x7fff;i++){XBYTE[i]=n;//写入ram}for(i=0x7fff;i>0x0000;i--){m=XBYTE[i];//读外部存储器}}}62256外部ram芯片相关知识:XBYTE是一个地址指针(可当成一个数组名或数组的首地址),它在文件absacc.h中由系统定义,指向外部RAM(包括I/O口)的0000H单元,XBYTE后面的中括号[ ]0x2000H 是指数组首地址0000H的偏移地址,即用XBYTE[0x2000]可访问偏移地址为0x2000的I/O端口。
这个主要是在用C51的P0,P2口做外部扩展时使用,其中XBYTE [0x0002],P2口对应于地址高位,P0口对应于地址低位。
一般P2口用于控制信号,P0口作为数据通道。
比如:P2.7接WR,P2.6接RD,P2.5接CS,那么就可以确定个外部RAM的一个地址,想往外部RAM的一个地址写一个字节时,地址可以定为XBYTE [0x4000],其中WR,CS为低,RD为高,那就是高位的4,当然其余的可以根据情况自己定,然后通过XBYTE [0x4000] = 57;这赋值语句,就可以把57写到外部RAM的0x4000处了,此地址对应一个字节。
XBYTE 的作用,可以用来定义绝对地址,是P0口和P2口的,其中P2口对应的是高位,P0口对应的是低位如XBYTE[0x1234] = 0x56;则等价于mov dptr,#1234hmov @dptr,#56h谢谢大家。
第八章MCS-51单片机存储器的扩展第一节MCS-51单片机存储器的概述(一)学习要求1、熟悉MCS-51 单片机的系统总线及系统总线扩展结构2、掌握常用的片选方法:线选法和全地址译码法。
(二)内容提要1、三总线的扩展方法单片机内资源少,容量小,在进行较复杂过程的控制时,它自身的功能远远不能满足需要。
为此,应扩展其功能。
MCS-51单片机的扩展性能较强,根据需要,可扩展。
三总线是指地址总线、数据总线、控制总线。
1)地址总线MCS-51 单片机地址总线宽度为16 位,寻址范围为64K。
地址信号:P0 作为地址线低8 位,P2 口作为地址线高8 位。
2)数据总线MCS-51 单片机的数据总线宽度为8 位。
数据信号:P0 口作为8 位数据口,P0 口在系统进行外部扩展时与低8 位地址总线分时复用。
3)控制总线主要的控制信号有/WR 、/RD 、ALE 、/PSEN 、/EA 等。
2、系统的扩展能力MCS-51 单片机地址总线宽度为16 位,因此它可扩展的程序存储器和数据存储器的最大容量是64K(216)。
1)线选法线选法就是将多余的地址总线(即除去存储容量所占用的地址总线外)中的某一根地址线作为选择某一片存储或某一个功能部件接口芯片的片选信号线。
一定会有一些这样的地址线,否则就不存在所谓的“选片”的问题了。
每一块芯片均需占用一根地址线,这种方法适用于存储容量较小,外扩芯片较少的小系统,其优点是不需地址译码器,硬件节省,成本低。
缺点是外扩器件的数量有限,而且地址空间是不连续的。
2)全地址译码法由于线选法中一根高位地址线只能选通一个部件,每个部件占用了很多重复的地址空间,从而限制了外部扩展部件的数量。
采用译码法的目的是减少各部件所占用的地址空间,以增加扩展部件的数量。
3)译码器级连当组成存储器的芯片较多,不能用线选法片选,又没有大位数译码器时,可采用多个小位数译码器级连的方式进行译码片选.4)译码法与线选法的混合使用译码法与线选法的混合使用时,凡用于译码的地址线就不应再用于线选,反之,已用于线选的地址线就不应再用于译码器的译码输入信号.(三)习题与思考题1. 简要说明MCS-51 单片机的扩展原理。
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字节时,程序将出错。
实验5 存储器扩展实验一、实验目的1.掌握PC存储器扩展的方法。
2.熟悉6264芯片的接口方法。
3.掌握8031内部RAM和外部RAM的数据操作二、实验设备PC机、星研Star16L仿真器系统+仿真头PODPH51(DIP)、EL-Ⅱ型通用接口板实验电路,PROTEUS仿真软件。
三、实验仿真:1)proteus仿真电路图2)实验程序;NAME T7_1_RAMORG 0000HSTART: MOV DPTR,#7000H ;起始地址送DPTRLOOP1: MOV A,#00H ;置数据初值LOOP: MOVX @DPTR,AADD A,#01H ;数据加一INC DPTR ;地址加一MOV R0,DPHCJNE R0,#80H,LOOP ;数据是否写完,没写完则继续SS: SJMP SSEND3)仿真结果运行上面的程序,由于设定起始地址为7000,而P2.0~P2.4分别作为地址线A8~A12,P2.5~P2.7分别接74ls138的ABC三个口,且38译码器的Y2接6264-U3的片选口CE,与接6264-U4的片选口CE,所以此时CBA为011,则选择的存储器为U4,将00~FF这组数据分别送到U4的以7000H为起始地址的单元中,并循环放置(即proteus仿真结果中的1000H 地址);若将程序中的起始地址改为5000H,检验是否写完数据的数值#80H改为#60H,则此时CBA为010,此时选择的是U3存储器,结果与选择U4时一样。
证明这些地址都可用,如果不可用,则在写入数据时所有地址单元中的数值保持为FF。
四、实验台操作1)接线实验台已将内部线路接好,可用地址范围为4000~7FFFH2)实验结果实验结果基本与仿真结果一致。