收藏 分享(赏)

第8章 STC89C52单片机存储器扩展.ppt

上传人:精品资料 文档编号:9720472 上传时间:2019-08-28 格式:PPT 页数:87 大小:5.61MB
下载 相关 举报
第8章 STC89C52单片机存储器扩展.ppt_第1页
第1页 / 共87页
第8章 STC89C52单片机存储器扩展.ppt_第2页
第2页 / 共87页
第8章 STC89C52单片机存储器扩展.ppt_第3页
第3页 / 共87页
第8章 STC89C52单片机存储器扩展.ppt_第4页
第4页 / 共87页
第8章 STC89C52单片机存储器扩展.ppt_第5页
第5页 / 共87页
点击查看更多>>
资源描述

1、,8.1 系统扩展结构 8.2 地址锁存与地址空间分配 8.3 程序存储器的扩展 8.4 数据存储器的扩展 8.5 EPROM和RAM的综合扩展,第八章 STC89C52单片机存储器的扩展,8.1 系统扩展结构,STC89C52单片机属于总线型结构,片内各功能部件都是按总线关系设计并集成为整体的。,为减少连接线,简化组成结构,可把具有共性的连线归并成一组公共连线,即总线传送信息的公共通道(BUS)。,单片机系统扩展主要包括存储器扩展和I/O接口部件扩展。,三总线:地址总线(AB) 、数据总线(DB)、控制总线(CB).,STC89C52单片机与外部设备连接有两种方式:,第8章 单片机接口技术,

2、I/O口方式(非总线方式 ),总线方式,STC89C52单片机没有专用总线引脚,而是采用了I/O引脚兼作总线引脚的方案。,I/O口方式采用片内RAM指令访问外设例如:MOV A,P0,总线方式采用片外RAM指令访问外设 例如:MOVX A, DPTR (片外RAM 00FFFFH),STC89C52单片机的存储器扩展即包括程序存储器扩展又包括数据存储器扩展。AT89S51单片机采用程序存储器空间和数据存储器空间截然分开的哈佛结构。扩展后,系统形成了两个并行的外部存储器空间。,数据总线P0口 地址总线P0+P2 控制总线P3口+控制引脚,STC89C52为减少引脚数量,采用了复用P0口方案,即P

3、0口兼作数据线和低8位地址线,为了将地址和数据信息区分开来,需要在P0口外部增加地址锁存器,即将地址信息的低8位锁存后输出。,使用的控制信号如下:作为外扩程序存储器的 读选通控制信号。和 为外扩数据存储器和 I/O的读、写选通控制信号。 ALE作为P0口发出的低8位地址 锁存控制信号。为片内外程序存储器的选择 控制信号。,STC89C52RC的4个并行I/O口,由于系统扩展的需要,能够真正作为数字I/O使用,就剩下P1和P3的部分口线了。,8.2 地址锁存与地址空间分配 8.2.1 地址锁存目前,常用的地址锁存器芯片有74LS373、74HC373,74LS573等。在每个机器周期,ALE两次

4、有效,可以利用地址锁存器在ALE的下降沿将P0口输出的地址信息锁存,当ALE转为低电平时,P0输出8位数据信息。 1锁存器74LS373-带有三态输出门的8D触发器,结构:内部由8路D触发器和8个三态缓冲器组成。,原理:/OE端为低电平时,D端信号在 G端正脉冲作用下实现“接通-锁存-隔离”功能。,74LS373的引脚,373功能表,引脚说明: D7D0:8位数据输入线, Q7Q0:8位数据输出线。 G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数

5、据输出线。当该信号为高电平时,输出线为高阻态。,373的工作过程: 1、P0口先将低8位地址信号锁存在373中; 2、373的输出端与输入端(P0口)隔离; 3、P0口输出8位数据信号+P2口输出高8位地址信号+373输出低8位地址信号同时产生16位地址信号+8位数据信号,STC89C52单片机P0口与74LS373的连接,2锁存器74LS573是一种带有三态门的8D锁存器,功能及内部结构与74LS373完全一样,只是其引脚排列与74LS373不同。与74LS373相比, 74LS573的输入D端和输出Q端依次排列在芯片两侧,为绘制印制电路板提供方便。,8.2.2 地址空间分配,实际系统设计中

6、,既需要扩展程序存储器,又需要扩展数据存储器,如何把片外的两个64KB地址空间分配给各个程序存储器、数据存储器芯片,使一个存储单元只对应一个地址,避免单片机发出一个地址时,同时访问两个单元,发生数据冲突。这就是存储器地址空间分配问题。,STC89C52单片机发出的地址码用于选择某个存储器单元,在这个过程中单片机必须进行两种选择:一是选中该存储器芯片,称为“片选”,未被选中的芯片不能被访问。二是在“片选”的基础上再根据单片机发出的地址码来对“选中” 芯片的某一单元进行访问,即“单元选择”。为实现片选,存储器芯片都有片选引脚。同时也都有多条地址线引脚,以便进行单元选择。注意,“片选”和“单元选择”

7、都是单片机通过地址线一次发出的地址信号来完成选择的。,本书讲解时把单片机系统的地址线笼统地分为低位地址线和高位地址线,片选都是使用高位地址线。实际上,16条地址线中的高、低位地址线的数目并不是固定的,只是习惯上把用于 “单元选择”的地址线,都称为低位地址线,其余的为高位地址线。,常用的存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法)。,1.线选法-一般只适用于外扩少量的片外存储器和I/O接口芯片。线选法是指直接利用单片机系统的某一高位地址线作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只需要把用到的高位地址线与存储器芯片的“片选”端直接连接即可。线

8、选法的优点是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。缺点是可寻址的芯片数目受到限制,芯片之间地址不连续,地址空间没有充分利用。,2.译码法-适合于多芯片扩展.使用译码器对AT89S51单片机的高位地址进行译码,译码输出作为存储器芯片的片选信号。译码法的优点是能够有效地利用存储器空间.常用的译码器芯片有74LS138、74LS139和74LS154。若全部高位地址线都参加译码,称为全译码;若仅部分高位地址线参加译码,称为部分译码。部分译码存在着部分存储器地址空间相重叠的情况。(1)74LS1383线-8线译码器,有3个数据输入端,经译码产生8种状态。,138真值表,当一个选通

9、端为G1为高电平,且另外两个选通端 和 为低电平时,可将输入端C、B、A的二进制编码在一个对应的引脚输出端以低电平译出,其余引脚输出均为高电平。此时,可将输出为低电平的引脚作为某一存储器芯片的片选信号。,(2)74LS139,双2线-4线译码器。这两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许。,例:若需外扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片?,P2.7、P2.6、P2.5(高3位地址线)分别接74LS138的C、B、A端,由于对高3位地址译码,这样译码器有8个输出分别接到8片6264的各 “片选”端,实现8选1的片选。

10、 低13位地址(P2.4P2.0,P0.7P0.0)完成对选中的6264芯片中的各个存储单元的“单元选择”。,全地址译码, 地址有重叠吗?,在本例中,如果将 接到一片6116,芯片容量只有2KB,那么E000HE7FFH,E800HEFFFH,F000HF7FFH,F800HFFFFH这4个2KB空间都对应6116芯片,也就是说,即使采用全地址译码法,也仍然会有地址重叠现象。,采用译码器划分的地址空间块都是相等的,如果将地址空间块划分为不等的块,可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码。,8.3 程序存储器的扩展外部程序存储器的种类单一,常采用只读存储器。只读存储器简称R

11、OM(Read Only Memory)。ROM中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容。ROM在电源关断后,仍能保存程序(我们称此特性为非易失性的),在系统上电后,CPU可取出这些指令重新执行。向ROM中写入信息称为ROM编程。根据编程方式不同,分为以下几种。,(1)掩模ROM。在制造过程中编程,是以掩模工艺实现的,因此称为掩模ROM。这种芯片存储结构简单,集成度高,但由于掩模工艺成本较高,因此只适合于大批量生产。 (2)可编程ROM(PROM)。芯片出厂时没有任何程序信息,用独立的编程器写入。但PROM只能写一次,写入内容后,就不能再修改。 (3)EPROM

12、。用紫外线擦除,用电信号编程。在芯片外壳的中间位置有一个圆形窗口,对该窗口照射紫外线就可擦除原有的信息。使用编程器可将调试完毕的程序写入。 (4)E2PROM(EEPROM)。一种用电信号编程,也用电信号擦除的ROM芯片。对E2PROM的读写操作与RAM存储器几乎没有什么差别,只是写入的速度慢一些,但断电后仍能保存信息。,(5)Flash ROM。 又称闪速存储器(简称闪存),是在EPROM、E2PROM的基础上发展起来的一种电擦除型只读存储器。特点是可快速在线修改其存储单元中的数据,改写次数可达1万次,其读写速度很快,存取时间可达70ns,而成本比E2PROM低得多,大有取代E2PROM的趋

13、势。,由于超大规模集成电路制造工艺的发展,芯片集成度愈来愈高,扩展程序存储器时使用的ROM芯片数量越来越少,因此芯片的选择多采用线选法,而地址译码法用的渐少。并且目前许多单片机生产厂家生产的8051内核的单片机,在芯片内部集成了数量不等的Flash ROM,如STC89C51RC/RD+系列单片机内部集成了8KB64KB的Flash ROM,能满足绝大多数用户的需要,性价比高。在片内集成的Flash ROM满足要求的情况下,用户没有必要再扩展外部程序存储器。,8.3.1 外扩程序存储器的操作时序STC89C52单片机访问片外扩展的程序存储器时,所用的控制信号有以下3种。1.ALE :用于低8位

14、地址锁存控制。2. :片外程序存储器“读选通”控制信号。它接外扩EPROM的引脚。3. :片内、片外程序存储器访问的控制信号。当 =1时,在单片机发出的地址小于片内程序存储器最大地址时,访问片内程序存储器;当 =0时,只访问片外程序存储器。,扩展的片外RAM 的最大容量也为64KB,地址为0000HFFFFH。但由于STC89C52采用不同的控制信号和指令(CPU对ROM的读操作由 控制,指令用MOVC类;CPU对RAM读、写操作分别用 和 控制,指令用MOVX),所以,尽管ROM与RAM的地址是重叠的,也不会发生混乱。,STC89C52对片外ROM的操作时序分两种,即执行非MOVX指令的时序

15、和执行MOVX指令的时序。1应用系统无片外RAM,P0口作为地址/数据复用的双向总线,用于输入指令或输出程序存储器的低8位地址PCL。P2口专门用于输出程序存储器的高8位地址PCH。P0口分时复用,故首先要将P0口输出的低8位地址PCL锁存在锁存器中,然后P0口再作为数据口。在每个机器周期中,允许地址锁存两次有效,ALE在下降沿时,将P0口的低8位地址PCL锁存在锁存器中。,1001H: M0V A,R0 ; E8H 1002H: MOV R1,A ; F9H,不执行MOVX类指令时,地址,E8H,F9H,10,01H,10,02H,代码,程序存储器,不执行MOVX类指令时,地址,代码,程序存

16、储器,PSEN,1001H:M0V A,R0 ; E8H 1002H:MOV R1,A ; F9H,不执行MOVX指令:P2口专门用于输出PCH中的内容,它可直接与外部存储器的地址线相连。P0口除了输出PCL中的内容外,还要输入指令。所以,必须用ALE信号锁存PCL。同时,PSEN也是每个机器周期中两次有效,用于选通片外程序存储器,将指令读入片内。,2应用系统扩展了片外RAM在执行访问片外RAM(或I/O)的MOVX指令时,16位地址应转而指向数据存储器。 在指令输入以前,P2口输出的地址PCH、PCL指向程序存储器;在指令输入并判定是MOVX指令后, ALE在该机器周期S5状态锁存的是P0口

17、发出的片外RAM(或I/O)低8位地址。若执行的是“MOVX A,DPTR”或 “MOVX DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。若执行的是“MOVX A,Ri”或“MOVX Ri,A”指令,则Ri的内容为低8位地址,而P2口线上将是P2口锁存器的内容。,ORG 1000HMOV DPTR,#6001HMOVX A,DPTR 2个机器周期ROM 片外RAM指令地址 代码 地址 数据1000H 90H 6001H 09H1001H 60H1002H 01H1003H E0H,ROM,10,03,E0,地址,代码,片外RAM,

18、地址,数据,60,01,09,M0VX A,DPTR,机器周期S5状态锁存的是P0口发出的片外RAM(或I/O)低8位地址。若执行的是“MOVX A,DPTR”或 “MOVX DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。若执行的是“MOVX A,Ri”或“MOVX Ri,A”指令,则Ri的内容为低8位地址,而P2口线上将是P2口锁存器的内容。在同一机器周期中将不再出现 有效取指信号,下一个机器周期中ALE的有效锁存信号也不再出现;当 / 有效时,P0口将读/写数据存储器中的数据。,36,8.3.2 程序存储器的扩展方法1.常用的

19、EPROM芯片程序存储器的扩展使用比较多的是与单片机的连接为并行接口的EPROM。EPROM的典型芯片是27系列产品,型号 “27”后面的数字表示其位存储容量。如果换算成字节容量,只需将该数字除以8即可。例如,“27128”中的“27”后的数字 “128”,对应16KB的字节容量。随着大规模集成电路技术的发展,大容量存储器芯片产量剧增,售价不断下降,性价比明显增高,且由于小容量芯片停止生产,使市场某些小容量芯片价格反而比大容量芯片还贵。所以,应尽量采用大容量芯片。,目前常用的EPROM芯片有2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。,常用EPR

20、OM芯片引脚定义,芯片引脚功能: A0A15:地址线引脚。其数目由芯片的存储容量决定,用于进行单元选择。 D7D0:数据线引脚。:片选控制端。:输出允许控制端。:编程时,编程脉冲的输入端。 VPP:编程时,编程电压(+12V或+25V)输入端。 VCC:+5V,芯片的工作电压。 GND :数字地。 NC:无用端。,2764、27128的差别仅在26 引脚。2764的26脚是空脚, 27128的26脚是地址线A13, 在设计外扩存储器电路时, 应选用27128 芯片设计电路。在实际应用 时,可将27128换成2764, 系统仍能正常运行。,EPROM芯片一般有读出、未选中、编程、程序校验、编程禁

21、止等5种工作方式。这5种工作方式,由 、 、 信号的组合确定。,(1)读出方式。工作在该方式的条件是使片选控制线 为低电平,同时让输出允许控制线 为低电平,VPP为+5V,就可把指定地址单元的内容从D7D0上读出。 (2)未选中方式。当片选控制线 为高电平时,芯片未选中方式,数据输出为高阻抗悬浮状态,不占用数据总线。EPROM处于低功耗的维持状态。 (3)编程方式。在VPP端加上规定好的高压, 和 端加上合适的电平(不同芯片要求不同),能将数据写入到指定地址单元。编程地址和编程数据分别由系统的A15A0和D7D0提供。,(4)编程校验方式。VPP端保持相应的编程电压(高压),再按读出方式操作,

22、读出固化好的内容,校验写入内容是否正确。 (5)编程禁止方式。,2.STC89C52单片机与EPROM的接口电路设计由于STC89C51RC/RD+系列单片机内部集成了8KB64KB的Flash ROM,所以在设计中,可根据实际需要来决定是否外部扩展EPROM。当系统的应用程序不大于单片机片内的Flash ROM容量时,扩展外部程序存储器的工作可省略。但是作为扩展外部程序存储器的基本方法,读者还是应该掌握。,由于外扩的EPROM在正常使用中只读不写,故EPROM芯片只有读出控制引脚 ,该引脚与STC89C52单片机的相连。单片EPROM扩展,可不需要考虑片选问题,27128的片选端直接接地。当

23、然也可接到某一高位地址线上(A15或A14)进行线选或接某一地址译码器的输出端。,例:采用译码法扩展4片27128EPROM。,(1)27128的容量为16KB(214),片内地址线有14条。,(2)将高位剩余的2条地址线P2.7,P2.6接到74LS139译码器的输入端A、B,译码器使能端 直接接地,输出端 分别接到4片27128的片选端。片选信号由译码器产生。,若此时P2.7=0、P2.6=0,选中IC1。地址线A15A0与 P2、P0对应关系如下:,STC89C52单片机与4片27128EPROM的接口电路,3.单片机片外程序区读指令的过程单片机上电复位后,CPU就从系统启动地址0000

24、H开始取指令,执行程序。取指令期间,低8位地址送P0口,经锁存器A0A7输出。高8位地址送往P2口,直接由P2.0P2.5锁存到A8A13地址线上,P2.7、P2.6作为74LS139译码输入产生片选控制信号。这样,根据P2口、P0口状态则选中第一个程序存储器芯片IC1(27128)的第一个单元地址0000H。然后当 变为低时,把0000H中指令代码经P0口读入内部RAM中进行译码,从而决定进行何种操作。在取出一个指令字节后,PC自动加1,然后取第二个字节,依次类推。当PC=3FFFH时,从IC1最后一个单元取指令,然后PC=4000H,CPU向P2口、P0口送出4000H地址时,则选中第二个

25、程序存储器IC2,IC2的地址范围为4000H7FFFH,读指令过程同IC1。,8.4 数据存储器的扩展STC89C52单片机内部仅有512B的数据存储器,可用于存放程序执行的中间结果和过程数据。这512B的内部数据存储器包含256B的内部RAM和256B的内部扩展RAM。内部扩展的256B RAM在物理上属内部,而在逻辑上属外部。在系统需要大量数据缓冲的场合(如语言系统、商场收费POS)中,可以通过在外部扩展较大容量的静态随机存储器(SRAM)或Flash ROM扩充系统的数据储存能力,扩展的最大容量为64KB,地址为0000HFFFFH。当设置特殊功能寄存器AUXR(地址为8EH)的EXT

26、RAM位为0时,在00H到FFH单元(256B),使用MOVX DPTR指令访问的是内部扩展的RAM,超过0FFH的地址空间将访问外部扩展的RAM;而采用MOVX Ri只能访问片内扩展的00H到FFH单元。,有些应用系统在外部扩展了I/O或者使用片选去选择多个RAM区时,与内部扩展的RAM逻辑地址上有时会冲突,这时可以将EXTRAM设置为”1”, 禁止访问此内部扩展的EXTRAM。此时MOVX DPTR/MOVX Ri的使用和普通8052单片机相同。 8.4.1 外扩数据存储器的读写操作时序扩展RAM和扩展ROM类似,由P2口提供高8位地址,P0口分时地作为低8位地址线和8位双向数据总线。片外

27、RAM的读和写由STC89C52的 (P3.7)和 (P3.6)信号控制,尽管与EPROM的地址重叠,但由于控制信号不同(片外程序存储器EPROM的输出端允许 由单片机的读选通信号控制),而不会发生总线冲突。STC89C52单片机对片外RAM的读和写两种操作时序的基本过程是相同的。,1.读片外扩展RAM操作时序,在第一个机器周期的S1状态,ALE信号由低变高(见处),读RAM周期开始。在S2状态,CPU把低8位地址(DPL内容)送到P0口总线上,把高8位地址(DPH内容)送上P2口ALE下降沿(见处)用来把低8位地址信息锁存到外部锁存器74LS373内。而高8位地址信息一直锁存在P2口锁存器中

28、(见处)。在S3状态,P0口总线变成高阻悬浮状态。在S4状态,执行指令“MOVX A,DPTR”后使 信号变有效(见处), 信号使被寻址的片外RAM把数据送上P0口总线(见处),当 回到高电平后(处),P0总线变为悬浮状态。,ORG 1000H 1000H: MOV DPTR,#3003H 1003H: MOV R0,#60H 1005H: MOVX A,DPTRROM 片外RAM地址 指令代码 地址 数据 1005H E0H 3003H 07H,30,03,07,(1),读周期开始,(2),(4),(5)读有效,(7),(8),地址,数据,ACC,片外RAM,2.写片外扩展RAM操作时序单片

29、机执行“MOVX DPTR,A”/“MOVX Ri,A”指令,向片外RAM写数据。在单片机执行这条指令后,STC89C52的 信号为低有效,此信号使RAM的 端被选通。写片外RAM的时序如图所示。开始的过程与读过程类似,但写的过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(处)。此间,P0总线上不会出现高阻悬浮现象。在S4状态,写信号 有效(处),选通片外RAM,之后,P0口上的数据就写到RAM内了,然后写信号 变为无效(处)。,MOV DPTR,#3004H MOV A,#45H MOVX DPTR,AROM 片外RA

30、M 指令地址 代码 地址 数据1004H E0H 3004H 00H,片外RAM的写时序:MOVX DPTR,A,片外RAM,地址,数据,30,04H,(1),(2),(3),A,45,(4),(5),00,DPH,DPL,30,04,(6),8.4.2 数据存储器扩展方法1.常用的静态RAM(SRAM)芯片在单片机应用系统中,外部扩展的数据存储器多采用SRAM,但SRAM不具备数据掉电保护的特性。目前,常用的SRAM芯片有6116(2KB),6264(8KB),62128(16KB),62256(32KB)等。它们都采用单一+5V电源供电,双列直插封装,除6116为24脚封装外,6264、6

31、2128、62256均为28脚封装。,各引脚功能: A0A14:地址输入线。 D0D7:双向三态数据线。:片选信号输入线。对6264芯片,当24脚(CS)为高电平且片选信号为低电平时才选中该片。:读选通信号输入线,低电平有效。:写允许信号输入线,低电平有效。 VCC 工作电源+5V。 GND 地。,RAM存储器有读出、写入、维持3种工作方式,工作方式的控制如下:,2.STC89C52单片机与SRAM的接口电路设计STC89C52对片外RAM的读和写由 (P3.7)和 (P3.6)控制,片选端 由地址译码器译码的译码输出控制。因此设计时,主要解决地址分配、数据线和控制信号线的连接问题。在与高速单

32、片机连接时,还要根据时序解决读/写速度匹配问题。,例:用线选法扩展STC89C52外部数据存储器电路。由于数据存储器选用6264(8K8),该芯片地址线为A0A12,故STC89C52剩余地址线为3条,用线选法可扩展3片6264。,3片6264对应的存储器空间,例:用译码法扩展外部数据存储器的接口电路。若数据存储器采用4片62128(16K8),芯片地址线为A0A13,高位剩余2条地址线,若采用2-4线译码器可扩展4片62128。,4片62128芯片的地址空间分配表,3.单片机片外数据区读/写数据过程 例如,把片外4000H单元的数据送到片内RAM 50H单元中,程 序如下:AUXR DATA

33、 8EHMOV AUXR,#000000010/第四章PPT40页MOV DPTR,#4000HMOVX A,DPTRMOV 50H,A,先把寻址地址4000H送到DPTR中,当执行“MOVX A,DPTR”时,DPTR的低8位(00H)经P0口输出并锁存,高8位(40H)经P2口直接输出,根据P0口、P2口状态选中IC2的4000H单元。当单片机读选通信号 为低电平时,片外4000H单元的数据经P0口送往累加器A。当执行指令“MOV 50H,A”写入片内RAM50H单元。,例如,把片内60H单元的数据送到片外8000H单元中,程序如 下:AUXR DATA 8EHMOV AUXR,#0000

34、00010MOV A,60HMOV DPTR,#8000HMOVX DPTR,A,先把片内RAM 60H单元的数据送到A中,第2条指令把寻址地址8000H送到数据指针寄存器DPTR中,当执行“MOVX DPTR,A”时,DPTR的低8位(00H)由P0口输出并锁存,高8位(80H)由P2口直接输出,根据P0口、P2口状态选中IC3(6264)的8000H单元。当写选通信号 有效时,A中的内容送往片外RAM 8000H单元。,单片机读写片外数据存储器中内容,除了用“MOVX A,DPTR”和“MOVX DPTR,A”外,还可用指令“MOVX A,Ri”和“MOVX Ri,A”。这时P0口装入Ri

35、中内容(低8位地址),而把P2口原有的内容作为高8位地址输出。,8.5 EPROM和RAM的综合扩展 【例8-1】采用线选法扩展2片SRAM 6264的和2片EPROM 2764。要求:(1)给出硬件接口电路。(2)确定各芯片的地址范围。(3)编写程序将片外数据存储器中C000HC0FFH单元设置为01H-FFH,并读取这些数据送P1口显示。 分析: 在具体应用系统设计时,应按照系统扩展结构三总线的构建方法。其中,最关键的是片选信号和控制信号的确定。由于2764和6264的容量均为8K8,因此片内地址线都为13条。 若采用线选法进行存储器扩展,则将高位剩余的3条地址线中的P2.5接到第一组IC

36、1和IC3的片选端 ,P2.6接到第二组IC2和IC4的片选端后。当P2.6=1,P2.5=0时,选中第一组IC1和IC3;当P2.6=0,P2.5=1时,选中第二组IC2和IC4。,线选法扩展电路图,高位剩余了一条地址线P2.7未接。 设无用位P2.7=1,若此时P2.6=1、P2.5=0,选中IC1、IC3。地址线A15A0与P2、P0对应关系如下:,设无用位P2.7=1,若此时P2.6=0、P2.5=1,选中IC2、IC4。地址线A15A0与P2、P0对应关系如下:,因此,IC1、IC3的地址空间为C000HDFFFH。,因此,IC2、IC4的地址空间为A000HBFFFH。,从表中可以

37、看出,第一组两片芯片地址空间完全重叠,第二组两片芯片地址空间也完全重叠。 、 、 三个信号只能一个有效,所以即使地址空间重叠,也不会发生数据冲突。,方法1:C51 #include #include #include #define uint unsigned int #define uchar unsigned char uchar xdata xADDR256 _at_ 0xc000 void delay(uint z) uint i;for(i=0;iz;i+); ,编写程序将片外数据存储器中C000HC0FFH单元设置为01H-FFH. 并读取这些数据送P1口显示。,void movc

38、d(uchar lenth) uint i;for(i=0;ilenth+1;i+)xADDRi=i; void Display(uchar lenth) uint i; for(i=0;ilenth;i+) P1= xADDRi;delay(20000);,void main() movcd(0xff); while(1) Display(0xff); ,Keil C51,方法2:用DPTR作为数据区地址指针,通过字节计数器控制循环。参考程序如下:MOV DPTR,#0C000H ;设置数据块指针的初值MOV R2,#00H ;设置块长度计数器初值为256次)MOV A,#00H LOOP:

39、MOVX DPTR,A; 写数到片外存储单元INC DPTR ;地址指针加1INC ADJNZ R2,LOOP ;数据块长度减1, 若不为0则跳 LOOP继续置数 HERE:SJMP HERE ;执行完毕,原地踏步,方法3:用DPTR作为数据区地址指针,通过比较特征地址控制循环。 参考程序如下:MOV DPTR,#0C000H ;设置数据块指针的初值MOV A,#00H LOOP:MOVX DPTR,A ;给片外单元送数INC DPTR ;数据块地址指针加1INC AMOV R7,DPL ;数据块末地址加1送R7CJNE R7,#0,LOOP ;与末地址+1比较 HERE:SJMP HERE,

40、【例8-2】采用译码法扩展2片SRAM 6264的和2片EPROM 2764。要求:(1)给出硬件接口电路。(2)确定各芯片的地址范围。(3)编写程序将片外程序存储器中以TAB为首地址的64个单元的内容依次传送到其中一片6264中。分析:2764和6264的容量均为8KB,片内地址线有13条。可将高位剩余的3条地址线接到74LS139译码器的3个输入端 、A、B,输出端 分别连接4片芯片IC1、IC2、IC3、IC4的片选端。,译码法扩展电路图,(1)扩展接口电路如图所示:,(2)74LS139译码器要工作,使能端 必须为0,因此P2.7=0。若此时P2.6=0、P2.5=0,选中IC1。地址

41、线A15A0与P2、P0对应关系如下:,当P2.7、P2.6、P2.5全为0,P2.4P2.0与P0.7P0.0这13条地址线的任意状态都能选中IC1的某一单元。当“”全为“0”时,则为最小地址0000H;当“”全为“1”时,则为最大地址1FFFH。因此,IC1的地址空间为0000H1FFFH。同理,可得其他芯片的地址范围。,采用译码法4片芯片地址空间分布如下:,(3)要实现片外程序存储器中以TAB为首地址的64个单元的内容依次传送到片外RAM,可以采用循环程序,设置DPTR指向待传送的数据块的首地址#TAB,循环次数为64。设数据块传送到IC3中,参考程序如下:方法一:MOV DPTR,#T

42、AB;要传数据的首地址#TAB送入数据指针DPTRMOV R0,#0 ;R0的初始值为0,也是RAM地址低字节MOV P2,#20H ;片外存储单元地址高字节 AGIN: MOV A,R0MOVC A,A+DPTR ;把以TAB为首址32个单元内容送入APUSH DPHPUSH DPL,MOVX R0,A;程序存储器中表的内容送入外部RAM单元POP DPLPOP DPHINC R0 ;循环次数加1,也即外部RAM单元的地址指针加1CJNE R0,#64,AGIN ;判64个单元的数据是否已经传送完毕,未完则继续 HERE:SJMP HERE ;原地跳转,模拟一段实际要 TAB: DB , ;

43、外部程序存储器中要传送的64个单元的内容,Keil C51,方法二:MOV DPTR,#TAB;要传数据的首地址#TAB送入数据指针DPTRMOV R0,#0 ;R0的初始值为0MOV R3,#20HMOV R2,#00H AGIN: MOV A,R0MOVC A,A+DPTR ;把以TAB为首址32个单元内容送入APUSH DPHPUSH DPLMOV DPL,R2MOV DPH,R3,MOVX DPTR,A;程序存储器中表的内容送入外部RAM单元INC DPTRMOV R2,DPLMOV R3,DPHPOP DPLPOP DPHINC R0 ;循环次数加1,也即外部RAM单元的地址指针加1CJNE R0,#64,AGIN ;判64个单元的数据是否已经传送完毕,未完则继续 HERE:SJMP HERE ;原地跳转,模拟一段实际要 TAB: DB , ;外部程序存储器中要传送的64个单元的内容,Keil C51,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报