第8章STC89C52单片机存储器扩展_第1页
第8章STC89C52单片机存储器扩展_第2页
第8章STC89C52单片机存储器扩展_第3页
第8章STC89C52单片机存储器扩展_第4页
第8章STC89C52单片机存储器扩展_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

I/O口方式(非总线方式)总线方式STC89C52单片机没有专用总线引脚,而是采用了I/O引脚兼作总线引脚的方案。I/O口方式——采用片内RAM指令访问外设例如:MOVA,P0

总线方式——采用片外RAM指令访问外设例如:MOVXA,@DPTR

(片外RAM0~0FFFFH)目前二页\总数八十三页\编于四点STC89C52单片机的存储器扩展即包括程序存储器扩展又包括数据存储器扩展。AT89S51单片机采用程序存储器空间和数据存储器空间截然分开的哈佛结构。扩展后,系统形成了两个并行的外部存储器空间。目前三页\总数八十三页\编于四点数据总线——P0口地址总线——P0+P2控制总线——P3口+控制引脚STC89C52为减少引脚数量,采用了复用P0口方案,即P0口兼作数据线和低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两次有效,可以利用地址锁存器在ALE的下降沿将P0口输出的地址信息锁存,当ALE转为低电平时,P0输出8位数据信息。1.锁存器74LS373----带有三态输出门的8D触发器

目前六页\总数八十三页\编于四点结构:内部由8路D触发器和8个三态缓冲器组成。原理:/OE端为低电平时,D端信号在G端正脉冲作用下实现“接通-锁存-隔离”功能。导通锁存隔离目前七页\总数八十三页\编于四点

74LS373的引脚373功能表引脚说明:D7~D0:8位数据输入线,Q7~Q0:8位数据输出线。G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。

:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。目前八页\总数八十三页\编于四点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地址空间分配实际系统设计中,既需要扩展程序存储器,又需要扩展数据存储器,如何把片外的两个64KB地址空间分配给各个程序存储器、数据存储器芯片,使一个存储单元只对应一个地址,避免单片机发出一个地址时,同时访问两个单元,发生数据冲突。这就是存储器地址空间分配问题。STC89C52单片机发出的地址码用于选择某个存储器单元,在这个过程中单片机必须进行两种选择:一是选中该存储器芯片,称为“片选”,未被选中的芯片不能被访问。二是在“片选”的基础上再根据单片机发出的地址码来对“选中”芯片的某一单元进行访问,即“单元选择”。为实现片选,存储器芯片都有片选引脚。同时也都有多条地址线引脚,以便进行单元选择。注意,“片选”和“单元选择”都是单片机通过地址线一次发出的地址信号来完成选择的。目前十二页\总数八十三页\编于四点本书讲解时把单片机系统的地址线笼统地分为低位地址线和高位地址线,片选都是使用高位地址线。实际上,16条地址线中的高、低位地址线的数目并不是固定的,只是习惯上把用于“单元选择”的地址线,都称为低位地址线,其余的为高位地址线。目前十三页\总数八十三页\编于四点常用的存储器地址空间分配方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法)。1.线选法----一般只适用于外扩少量的片外存储器和I/O接口芯片。线选法是指直接利用单片机系统的某一高位地址线作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只需要把用到的高位地址线与存储器芯片的“片选”端直接连接即可。

线选法的优点是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。缺点是可寻址的芯片数目受到限制,芯片之间地址不连续,地址空间没有充分利用。目前十四页\总数八十三页\编于四点2.译码法---适合于多芯片扩展.

使用译码器对AT89S51单片机的高位地址进行译码,译码输出作为存储器芯片的片选信号。

译码法的优点是能够有效地利用存储器空间.

常用的译码器芯片有74LS138、74LS139和74LS154。若全部高位地址线都参加译码,称为全译码;若仅部分高位地址线参加译码,称为部分译码。部分译码存在着部分存储器地址空间相重叠的情况。(1)74LS138

3线-8线译码器,有3个数据输入端,经译码产生8种状态。目前十五页\总数八十三页\编于四点138真值表当一个选通端为G1为高电平,且另外两个选通端和为低电平时,可将输入端C、B、A的二进制编码在一个对应的引脚输出端以低电平译出,其余引脚输出均为高电平。此时,可将输出为低电平的引脚作为某一存储器芯片的片选信号。目前十六页\总数八十三页\编于四点(2)74LS139

双2线-4线译码器。这两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许。

目前十七页\总数八十三页\编于四点例:若需外扩8片8KB的RAM6264,如何通过74LS138把64KB空间分配给各个芯片?P2.7、P2.6、P2.5(高3位地址线)分别接74LS138的C、B、A端,由于对高3位地址译码,这样译码器有8个输出分别接到8片6264的各“片选”端,实现8选1的片选。低13位地址(P2.4~P2.0,P0.7~P0.0)完成对选中的6264芯片中的各个存储单元的“单元选择”。全地址译码,地址有重叠吗?目前十八页\总数八十三页\编于四点在本例中,如果将接到一片6116,芯片容量只有2KB,那么E000H~E7FFH,E800H~EFFFH,F000H~F7FFH,F800H~FFFFH这4个2KB空间都对应6116芯片,也就是说,即使采用全地址译码法,也仍然会有地址重叠现象。采用译码器划分的地址空间块都是相等的,如果将地址空间块划分为不等的块,可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码。目前十九页\总数八十三页\编于四点8.3程序存储器的扩展外部程序存储器的种类单一,常采用只读存储器。只读存储器简称ROM(ReadOnlyMemory)。ROM中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容。ROM在电源关断后,仍能保存程序(我们称此特性为非易失性的),在系统上电后,CPU可取出这些指令重新执行。向ROM中写入信息称为ROM编程。根据编程方式不同,分为以下几种。目前二十页\总数八十三页\编于四点(1)掩模ROM。在制造过程中编程,是以掩模工艺实现的,因此称为掩模ROM。这种芯片存储结构简单,集成度高,但由于掩模工艺成本较高,因此只适合于大批量生产。(2)可编程ROM(PROM)。芯片出厂时没有任何程序信息,用独立的编程器写入。但PROM只能写一次,写入内容后,就不能再修改。(3)EPROM。用紫外线擦除,用电信号编程。在芯片外壳的中间位置有一个圆形窗口,对该窗口照射紫外线就可擦除原有的信息。使用编程器可将调试完毕的程序写入。(4)E2PROM(EEPROM)。一种用电信号编程,也用电信号擦除的ROM芯片。对E2PROM的读写操作与RAM存储器几乎没有什么差别,只是写入的速度慢一些,但断电后仍能保存信息。目前二十一页\总数八十三页\编于四点(5)FlashROM。又称闪速存储器(简称闪存),是在EPROM、E2PROM的基础上发展起来的一种电擦除型只读存储器。特点是可快速在线修改其存储单元中的数据,改写次数可达1万次,其读写速度很快,存取时间可达70ns,而成本比E2PROM低得多,大有取代E2PROM的趋势。目前二十二页\总数八十三页\编于四点由于超大规模集成电路制造工艺的发展,芯片集成度愈来愈高,扩展程序存储器时使用的ROM芯片数量越来越少,因此芯片的选择多采用线选法,而地址译码法用的渐少。并且目前许多单片机生产厂家生产的8051内核的单片机,在芯片内部集成了数量不等的FlashROM,如STC89C51RC/RD+系列单片机内部集成了8KB~64KB的FlashROM,能满足绝大多数用户的需要,性价比高。

在片内集成的FlashROM满足要求的情况下,用户没有必要再扩展外部程序存储器。目前二十三页\总数八十三页\编于四点8.3.1外扩程序存储器的操作时序STC89C52单片机访问片外扩展的程序存储器时,所用的控制信号有以下3种。

1.ALE:用于低8位地址锁存控制。

2.:片外程序存储器“读选通”控制信号。它接外扩EPROM的引脚。

3.:片内、片外程序存储器访问的控制信号。当=1时,在单片机发出的地址小于片内程序存储器最大地址时,访问片内程序存储器;当=0时,只访问片外程序存储器。目前二十四页\总数八十三页\编于四点

扩展的片外RAM的最大容量也为64KB,地址为0000H~FFFFH。但由于STC89C52采用不同的控制信号和指令(CPU对ROM的读操作由控制,指令用MOVC类;CPU对RAM读、写操作分别用和控制,指令用MOVX),所以,尽管ROM与RAM的地址是重叠的,也不会发生混乱。目前二十五页\总数八十三页\编于四点STC89C52对片外ROM的操作时序分两种,即执行非MOVX指令的时序和执行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类指令时

地址E8HF9H1001H1002H代码程序存储器PSENRD

地址锁存

地址锁存目前二十八页\总数八十三页\编于四点不执行MOVX类指令时地址代码程序存储器PSENRD

1001H:M0V A,R0;E8H

1002H:MOVR1,A;F9H

地址锁存

地址锁存目前二十九页\总数八十三页\编于四点不执行MOVX指令:

P2口专门用于输出PCH中的内容,它可直接与外部存储器的地址线相连。P0口除了输出PCL中的内容外,还要输入指令。所以,必须用ALE信号锁存PCL。同时,PSEN也是每个机器周期中两次有效,用于选通片外程序存储器,将指令读入片内。

目前三十页\总数八十三页\编于四点2.应用系统扩展了片外RAM

在执行访问片外RAM(或I/O)的MOVX指令时,16位地址应转而指向数据存储器。在指令输入以前,P2口输出的地址PCH、PCL指向程序存储器;在指令输入并判定是MOVX指令后,ALE在该机器周期S5状态锁存的是P0口发出的片外RAM(或I/O)低8位地址。若执行的是“MOVXA,@DPTR”或“MOVX@DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。若执行的是“MOVXA,@Ri”或“MOVX@Ri,A”指令,则Ri的内容为低8位地址,而P2口线上将是P2口锁存器的内容。目前三十一页\总数八十三页\编于四点目前三十二页\总数八十三页\编于四点

ORG1000H

MOV DPTR,#6001H

MOVX

A,@DPTR

2个机器周期

ROM

片外RAM

指令地址代码地址数据

1000H90H

6001H09H1001H60H1002H01H1003HE0H目前三十三页\总数八十三页\编于四点ROM1003

E0地址代码片外RAM地址数据6001

09地址锁存

地址锁存有效无效M0VXA,@DPTR目前三十四页\总数八十三页\编于四点机器周期S5状态锁存的是P0口发出的片外RAM(或I/O)低8位地址。若执行的是“MOVX

A,@DPTR”或“MOVX

@DPTR,A”指令,则此地址就是DPL(数据指针低8位);同时,在P2口上出现的是DPH(数据指针的高8位)。若执行的是“MOVXA,@Ri”或“MOVX@Ri,A”指令,则Ri的内容为低8位地址,而P2口线上将是P2口锁存器的内容。在同一机器周期中将不再出现有效取指信号,下一个机器周期中ALE的有效锁存信号也不再出现;当

/有效时,P0口将读/写数据存储器中的数据。35目前三十五页\总数八十三页\编于四点8.3.2程序存储器的扩展方法1.常用的EPROM芯片程序存储器的扩展使用比较多的是与单片机的连接为并行接口的EPROM。EPROM的典型芯片是27系列产品,型号“27”后面的数字表示其位存储容量。如果换算成字节容量,只需将该数字除以8即可。例如,“27128”中的“27”后的数字“128”,对应16KB的字节容量。随着大规模集成电路技术的发展,大容量存储器芯片产量剧增,售价不断下降,性价比明显增高,且由于小容量芯片停止生产,使市场某些小容量芯片价格反而比大容量芯片还贵。所以,应尽量采用大容量芯片。目前三十六页\总数八十三页\编于四点目前常用的EPROM芯片有2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。常用EPROM芯片引脚定义芯片引脚功能:A0~A15:地址线引脚。其数目由芯片的存储容量决定,用于进行单元选择。D7~D0:数据线引脚。

:片选控制端。

:输出允许控制端。

:编程时,编程脉冲的输入端。VPP:编程时,编程电压(+12V或+25V)输入端。VCC:+5V,芯片的工作电压。GND:数字地。NC:无用端。2764、27128的差别仅在26引脚。2764的26脚是空脚,27128的26脚是地址线A13,在设计外扩存储器电路时,应选用27128芯片设计电路。在实际应用时,可将27128换成2764,系统仍能正常运行。目前三十七页\总数八十三页\编于四点目前三十八页\总数八十三页\编于四点EPROM芯片一般有读出、未选中、编程、程序校验、编程禁止等5种工作方式。这5种工作方式,由

、、

信号的组合确定。目前三十九页\总数八十三页\编于四点(1)读出方式。工作在该方式的条件是使片选控制线

为低电平,同时让输出允许控制线

为低电平,VPP为+5V,就可把指定地址单元的内容从D7~D0上读出。(2)未选中方式。当片选控制线

为高电平时,芯片未选中方式,数据输出为高阻抗悬浮状态,不占用数据总线。EPROM处于低功耗的维持状态。(3)编程方式。在VPP端加上规定好的高压,

端加上合适的电平(不同芯片要求不同),能将数据写入到指定地址单元。编程地址和编程数据分别由系统的A15~A0和D7~D0提供。目前四十页\总数八十三页\编于四点(4)编程校验方式。VPP端保持相应的编程电压(高压),再按读出方式操作,读出固化好的内容,校验写入内容是否正确。(5)编程禁止方式。目前四十一页\总数八十三页\编于四点2.STC89C52单片机与EPROM的接口电路设计

由于STC89C51RC/RD+系列单片机内部集成了8KB~64KB的FlashROM,所以在设计中,可根据实际需要来决定是否外部扩展EPROM。当系统的应用程序不大于单片机片内的FlashROM容量时,扩展外部程序存储器的工作可省略。但是作为扩展外部程序存储器的基本方法,读者还是应该掌握。目前四十二页\总数八十三页\编于四点由于外扩的EPROM在正常使用中只读不写,故EPROM芯片只有读出控制引脚,该引脚与STC89C52单片机的相连。单片EPROM扩展,可不需要考虑片选问题,27128的片选端直接接地。当然也可接到某一高位地址线上(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。地址线A15~A0与P2、P0对应关系如下:P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.000××××××××××××××目前四十四页\总数八十三页\编于四点STC89C52单片机与4片27128EPROM的接口电路目前四十五页\总数八十三页\编于四点P2.7P2.6译码器输出选中芯片地址范围存储容量00Y0IC10000H~3FFFH16KB01Y1IC24000H~7FFFH16KB10Y2IC38000H~BFFFH16KB11Y3IC4C000H~FFFFH16KB目前四十六页\总数八十三页\编于四点3.单片机片外程序区读指令的过程

单片机上电复位后,CPU就从系统启动地址0000H开始取指令,执行程序。取指令期间,低8位地址送P0口,经锁存器A0~A7输出。高8位地址送往P2口,直接由P2.0~P2.5锁存到A8~A13地址线上,P2.7、P2.6作为74LS139译码输入产生片选控制信号。这样,根据P2口、P0口状态则选中第一个程序存储器芯片IC1(27128)的第一个单元地址0000H。然后当变为低时,把0000H中指令代码经P0口读入内部RAM中进行译码,从而决定进行何种操作。在取出一个指令字节后,PC自动加1,然后取第二个字节,依次类推。当PC=3FFFH时,从IC1最后一个单元取指令,然后PC=4000H,CPU向P2口、P0口送出4000H地址时,则选中第二个程序存储器IC2,IC2的地址范围为4000H~7FFFH,读指令过程同IC1。目前四十七页\总数八十三页\编于四点8.4数据存储器的扩展STC89C52单片机内部仅有512B的数据存储器,可用于存放程序执行的中间结果和过程数据。这512B的内部数据存储器包含256B的内部RAM和256B的内部扩展RAM。内部扩展的256BRAM在物理上属内部,而在逻辑上属外部。在系统需要大量数据缓冲的场合(如语言系统、商场收费POS)中,可以通过在外部扩展较大容量的静态随机存储器(SRAM)或FlashROM扩充系统的数据储存能力,扩展的最大容量为64KB,地址为0000H~FFFFH。当设置特殊功能寄存器AUXR(地址为8EH)的EXTRAM位为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位双向数据总线。片外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口锁存器中(见③处)。在S3状态,P0口总线变成高阻悬浮状态④。在S4状态,执行指令“MOVXA,@DPTR”后使信号变有效(见⑤处),信号使被寻址的片外RAM把数据送上P0口总线(见⑥处),当回到高电平后(⑦处),P0总线变为悬浮状态⑧。目前五十一页\总数八十三页\编于四点ORG1000H1000H:MOV

DPTR,#3003H1003H:MOV

R0,#60H1005H:MOVXA,@DPTR

ROM片外RAM地址

指令代码

地址数据1005H

E0H

3003H07H目前五十二页\总数八十三页\编于四点300307(1)读周期开始(2)(4)(5)读有效(7)(8)地址数据ACC

片外RAM目前五十三页\总数八十三页\编于四点2.写片外扩展RAM操作时序单片机执行“MOVX@DPTR,A”/“MOVX@Ri,A”指令,向片外RAM写数据。在单片机执行这条指令后,STC89C52的信号为低有效,此信号使RAM的端被选通。写片外RAM的时序如图所示。开始的过程与读过程类似,但写的过程是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(③处)。此间,P0总线上不会出现高阻悬浮现象。在S4状态,写信号有效(⑤处),选通片外RAM,之后,P0口上的数据就写到RAM内了,然后写信号变为无效(⑥处)。目前五十四页\总数八十三页\编于四点目前五十五页\总数八十三页\编于四点MOV

DPTR,#3004HMOV

A,#45HMOVX@DPTR,A

ROM片外RAM指令地址代码地址数据

1004H

E0H3004H00H目前五十六页\总数八十三页\编于四点片外RAM的写时序:MOVX@DPTR,A片外RAM地址数据3004H(1)(2)(3)A45(4)(5)00DPHDPL3004(6)目前五十七页\总数八十三页\编于四点目前五十八页\总数八十三页\编于四点8.4.2数据存储器扩展方法1.常用的静态RAM(SRAM)芯片在单片机应用系统中,外部扩展的数据存储器多采用SRAM,但SRAM不具备数据掉电保护的特性。目前,常用的SRAM芯片有6116(2KB),6264(8KB),62128(16KB),62256(32KB)等。它们都采用单一+5V电源供电,双列直插封装,除6116为24脚封装外,6264、62128、62256均为28脚封装。目前五十九页\总数八十三页\编于四点各引脚功能:A0~A14:地址输入线。D0~D7:双向三态数据线。

:片选信号输入线。对6264芯片,当24脚(CS)为高电平且片选信号为低电平时才选中该片。

:读选通信号输入线,低电平有效。

:写允许信号输入线,低电平有效。VCC

—工作电源+5V。GND

—地。目前六十页\总数八十三页\编于四点

RAM存储器有读出、写入、维持3种工作方式,工作方式的控制如下:目前六十一页\总数八十三页\编于四点2.STC89C52单片机与SRAM的接口电路设计STC89C52对片外RAM的读和写由(P3.7)和(P3.6)控制,片选端由地址译码器译码的译码输出控制。因此设计时,主要解决地址分配、数据线和控制信号线的连接问题。在与高速单片机连接时,还要根据时序解决读/写速度匹配问题。目前六十二页\总数八十三页\编于四点例:用线选法扩展STC89C52外部数据存储器电路。

由于数据存储器选用6264(8K×8),该芯片地址线为A0~A12,故STC89C52剩余地址线为3条,用线选法可扩展3片6264。目前六十三页\总数八十三页\编于四点

3片6264对应的存储器空间目前六十四页\总数八十三页\编于四点例:用译码法扩展外部数据存储器的接口电路。若数据存储器采用4片62128(16K×8),芯片地址线为A0~A13,高位剩余2条地址线,若采用2-4线译码器可扩展4片62128。目前六十五页\总数八十三页\编于四点P2.7P2.6译码器输出选中芯片地址范围存储容量00Y0IC10000H~3FFFH16KB01Y1IC24000H~7FFFH16KB10Y2IC38000H~BFFFH16KB11Y3IC4C000H~FFFFH16KB4片62128芯片的地址空间分配表目前六十六页\总数八十三页\编于四点3.单片机片外数据区读/写数据过程例如,把片外4000H单元的数据送到片内RAM50H单元中,程序如下:

AUXRDATA8EHMOVAUXR,#000000010//第四章PPT40页MOVDPTR,#4000H MOVXA,@DPTR MOV50H,A先把寻址地址4000H送到DPTR中,当执行“MOVXA,@DPTR”时,DPTR的低8位(00H)经P0口输出并锁存,高8位(40H)经P2口直接输出,根据P0口、P2口状态选中IC2的4000H单元。当单片机读选通信号为低电平时,片外4000H单元的数据经P0口送往累加器A。当执行指令“MOV50H,A”写入片内RAM50H单元。目前六十七页\总数八十三页\编于四点例如,把片内60H单元的数据送到片外8000H单元中,程序如下:

AUXRDATA8EHMOVAUXR,#000000010MOV A,60H MOVDPTR,#8000H MOVX @DPTR,A

先把片内RAM60H单元的数据送到A中,第2条指令把寻址地址8000H送到数据指针寄存器DPTR中,当执行“MOVX@DPTR,A”时,DPTR的低8位(00H)由P0口输出并锁存,高8位(80H)由P2口直接输出,根据P0口、P2口状态选中IC3(6264)的8000H单元。当写选通信号有效时,A中的内容送往片外RAM8000H单元。目前六十八页\总数八十三页\编于四点

单片机读写片外数据存储器中内容,除了用“MOVXA,@DPTR”和“MOVX@DPTR,A”外,还可用指令“MOVXA,@Ri”和“MOVX@Ri,A”。这时P0口装入Ri中内容(低8位地址),而把P2口原有的内容作为高8位地址输出。目前六十九页\总数八十三页\编于四点8.5EPROM和RAM的综合扩展【例8-1】采用线选法扩展2片SRAM6264的和2片EPROM2764。要求:(1)给出硬件接口电路。(2)确定各芯片的地址范围。(3)编写程序将片外数据存储器中C000H~C0FFH单元设置为01H-FFH,并读取这些数据送P1口显示。分析:在具体应用系统设计时,应按照系统扩展结构三总线的构建方法。其中,最关键的是片选信号和控制信号的确定。由于2764和6264的容量均为8K×8,因此片内地址线都为13条。若采用线选法进行存储器扩展,则将高位剩余的3条地址线中的P2.5接到第一组IC1和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。地址线A15~A0与P2、P0对应关系如下:P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0110×××××××××××××设无用位P2.7=1,若此时P2.6=0、P2.5=1,选中IC2、IC4。地址线A15~A0与P2、P0对应关系如下:P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0101×××××××××××××因此,IC1、IC3的地址空间为C000H~DFFFH。因此,IC2、IC4的地址空间为A000H~BFFFH。目前七十二页\总数八十三页\编于四点芯片地址范围2764(1)IC1C000H~DFFFH2764(2)IC2A000H~BFFFH6264(1)IC3C000H~DFFFH6264(2)IC4A000H~BFFFH从表中可以看出,第一组两片芯片地址空间完全重叠,第二组两片芯片地址空间也完全重叠。、、三个信号只能一个有效,所以即使地址空间重叠,也不会发生数据冲突。目前七十三页\总数八十三页\编于四点方法1:C51#include<reg52.h>#include<intrins.h>#include<absacc.h>#defineuintunsignedint#defineucharunsignedcharucharxdataxADDR[256]_at_0xc000voiddelay(uintz){uinti;for(i=0;i<z;i++);}编写程序将片外数据存储器中C000H~C0FFH单元设置为01H-FFH.并读取这些数据送P1口显示。目前七十四页\总数八十三页\编于四点voidmovcd(ucharlenth){ uinti; for(i=0;i<lenth+1;i++){ xADDR[i]=i; }}voidDisplay(ucharlenth){ uinti; for(i=0;i<lenth;i++) { P1= xADDR[i];delay(20000); }}目前七十五页\总数八十三页\编于四点voidmain(){ movcd(0xff); while(1) { Display(0xff); }}KeilC51目前七十六页

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论