1、单片机存储器扩展8、1 系统扩展结构STC89C52单片机属于总线型结构,片内各功能部件都就是按总线关系设计并集成为整体得。为减少连接线,简化组成结构,可把具有共性得连线归并成一组公共连线,即总线传送信息得公共通道(BUS)。单片机系统扩展主要包括存储器扩展与I/O接口部件扩展。三总线:地址总线(AB)、数据总线(DB)、控制总线(CB)、STC89C52单片机与外部设备连接有两种方式:第8章 单片机接口技术 I/O口方式(非总线方式)总线方式STC89C52单片机没有专用总线引脚,而就是采用了I/O引脚兼作总线引脚得方案。I/O口方式采用片内RAM指令访问外设 例如:MOV A,P0 总线方
2、式采用片外RAM指令访问外设例如:MOVX A,DPTR (片外RAM 00FFFFH)STC89C52单片机得存储器扩展即包括程序存储程序存储器扩展器扩展又包括数据存储器扩展数据存储器扩展。AT89S51单片机采用程序存储器空间与数据存储器空间截然分开得哈佛结构。扩展后,系统形成了两个并两个并行得外部存储器空间行得外部存储器空间。数据总线P0口地址总线P0+P2控制总线P3口+控制引脚STC89C52为减少引脚数量,采用了复用P0口方案,即P0口兼作数据线与低8位地址线,为了将地址与数据信息区分开来,需要在P0口外部增加地址锁存器地址锁存器,即将地址信息得低8位锁存后输出。使用得控制信号如下
3、:作为外扩程序存储器得读选通控制信号。与 为外扩数据存储器与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-带有三态输出门得
4、8D触发器 结构结构:内部由8路D触发器与8个三态缓冲器组成。原理原理:/OE端为低电平时,D端信号在 G端正脉冲作用下实现“接通-锁存锁存-隔离”功能。导通锁存隔离 74LS373的引脚373373功能表功能表引脚说明:D7D0:8位数据输入线,Q7Q0:8位数据输出线。G:数据输入锁存选通信号。当加到该引脚得信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。大家学习辛苦了,还是要坚持继续保持安静继续保持安静373得工作过程:1、P0口先将低
5、8位地址信号锁存在373中;2、373得输出端与输入端(P0口)隔离;3、P0口输出8位数据信号+P2口输出高8位地址信号+373输出低8位地址信号 同时产生16位地址信号+8位数据信号STC89C52单片机P0口与74LS373得连接2、锁存器74LS573 就是一种带有三态门得8D锁存器,功能及内部结构与74LS373完全一样,只就是其引脚排列与74LS373不同。与74LS373相比,74LS57374LS573得输入得输入D D端与输出端与输出Q Q端依次排列在芯片两侧端依次排列在芯片两侧,为为绘制印制电路板提供方便。绘制印制电路板提供方便。8、2、2 地址空间分配 实际系统设计中,既
6、需要扩展程序存储器,又需要扩展数据存储器,如何把片外得两个如何把片外得两个64KB64KB地址空间分配给各地址空间分配给各个程序存储器、数据存储器芯片个程序存储器、数据存储器芯片,使一个存储单元只对应一个存储单元只对应一个地址一个地址,避免单片机发出一个地址时,同时访问两个单元,发生数据冲突。这就就是存储器地址空间分配问题地址空间分配问题。STC89C52单片机发出得地址码用于选择某个存储器单元,在这个过程中单片机必须进行两种选择:一就是一就是选中该存储器芯片选中该存储器芯片,称为称为“片选片选”,未被选中得芯片不能被访问。二就是在二就是在“片选片选”得基础上再根据单片机发出得基础上再根据单片
7、机发出得地址码来对得地址码来对“选中选中”芯片得某一单元进行访问芯片得某一单元进行访问,即即“单元选择单元选择”。为实现片选,存储器芯片都有片选引脚。同时也都有多条地址线引脚,以便进行单元选择。注意,“片选”与“单元选择”都就是单片机通过地址线一次发出得地址信号来完成选择得。本书讲解时把单片机系统得地址线笼统地分为低位地址线与高位地址线,片选都就是使用高位地址线。实际上,16条地址线中得高、低位地址线得数目并不就是固定得,只就是习惯上把用于“单元选择”得地址线,都称为低位地址线,其余得为高位地址线。常用得存储器地址空间分配方法有两种常用得存储器地址空间分配方法有两种:线性选择法线性选择法(简称
8、线选法简称线选法)与地址译码法与地址译码法(简称译码法简称译码法)。1 1、线选法线选法-一般只适用于外扩少量得片外存储器与I/O接口芯片。线选法就是指直接利用单片机系统得某一高位地址线作为存储器芯片(或I/O接口芯片)得“片选”控制信号。为此,只需要把用到得高位地址线与存储器芯片得“片选”端直接连接即可。线选法得优点就是电路简单线选法得优点就是电路简单,不需要另外增加地址译码器硬件电路,体积小体积小,成本低成本低。缺点就是可寻址得缺点就是可寻址得芯片数目受到限制芯片数目受到限制,芯片之间地址不连续芯片之间地址不连续,地址空间没地址空间没有充分利用。有充分利用。2 2、译码法、译码法-适合于多
9、芯片扩展、使用译码器对使用译码器对AT89S51AT89S51单片机得高位地址进行译码单片机得高位地址进行译码,译译码输出作为存储器芯片得片选信号。码输出作为存储器芯片得片选信号。译码法得优点就是能够有效地利用存储器空间、译码法得优点就是能够有效地利用存储器空间、常用得译码器芯片有常用得译码器芯片有74LS13874LS138、74LS13974LS139与与74LS15474LS154。若全。若全部高位地址线都参加译码部高位地址线都参加译码,称为全译码称为全译码;若仅部分高位地址若仅部分高位地址线参加译码线参加译码,称为部分译码。部分译码存在着部分存储器称为部分译码。部分译码存在着部分存储器
10、地址空间相重叠得情况。地址空间相重叠得情况。(1)74LS138 (1)74LS138 3线线-8线线译码器译码器,有有3个数据输入端个数据输入端,经译码产生经译码产生8种状态。种状态。138真值表真值表 当一个选通端为G1为高电平,且另外两个选通端 与 为低电平时,可将输入端C、B、A得二进制编码在一个对应得引脚输出端以低电平译出,其余引脚输出均为高电平。此时此时,可将输可将输出为低电平得引脚作为某一存储器芯片出为低电平得引脚作为某一存储器芯片得片选信号。得片选信号。(2)74LS139(2)74LS139 双双2 2线线-4-4线译码器线译码器。这两个译码器完全独立这两个译码器完全独立,分
11、别有各自得数据输入端、译码状态输出端以及数据输入允许。例:若需外扩8片8KB得RAM 6264,如何通过74LS138把64KB空间分配给各个芯片?P2、7、P2、6、P2、5(高3位地址线)分别接74LS138得C、B、A端,由于对高3位地址译码,这样译码器有8个输出分别接到8片6264得各各“片选片选”端端,实现8选1得片选。低低13位地址位地址(P2、4P2、0,P0、7P0、0)完成对选中得6264芯片中得各个存储单元得“单元选择”。全地址译码全地址译码,地址有重叠吗?地址有重叠吗?在本例中,如果将 接到一片6116,芯片容量只有2KB,那么E000HE7FFH,E800HEFFFH,
12、F000HF7FFH,F800HFFFFH这4个2KB空间都对应6116芯片,也就也就就是说就是说,即使采用全地址译码法即使采用全地址译码法,也仍然会有地址重叠现象。也仍然会有地址重叠现象。采用译码器划分得地址空间块都就是相等得,如果将地址空间块划分为不等得块,可采用可编程逻辑器件FPGA对其编程来代替译码器进行非线性译码。8、3 程序存储器得扩展 外部程序存储器得种类单一,常采用只读存储器。只读存储器简称ROM(Read Only Memory)。ROM中得信息一旦写入,就不能随意更改,特别就是不能在程序运行过程中写入新得内容。ROM在电源关断后,仍能保存程序(我们称此特性为非易失性得),在
13、系统上电后,CPU可取出这些指令重新执行。向ROM中写入信息称为ROM编程。根据编程方式不同,分为以下几种。(1 1)掩模掩模ROMROM。在制造过程中编程,就是以掩模工艺实现得,因此称为掩模ROM。这种芯片存储结构简单,集成度高,但由于掩模工艺成本较高掩模工艺成本较高,因此只适合于大批量生产只适合于大批量生产。(2 2)可编程可编程ROMROM(PROMPROM)。芯片出厂时没有任何程序信息,用独立得编程器写入。但PROM只能写一次只能写一次,写入内容后,就不能再修改。(3 3)EPROMEPROM。用紫外线擦除紫外线擦除,用电信号编程电信号编程。在芯片外壳得中间位置有一个圆形窗口,对该窗口
14、照射紫外线照射紫外线就可擦除原有得信息可擦除原有得信息。使用编程器编程器可将调试完毕得程序写入。(4 4)E E2 2PROMPROM(EEPROMEEPROM)。一种用电信号编程电信号编程,也用电信号擦除电信号擦除得ROM芯片。对E2PROM得读写操作与RAM存储器几乎没有什么差别,只就是写入得速度写入得速度慢一些慢一些,但断电后仍能保存信息。(5 5)Flash ROMFlash ROM。又称闪速存储器(简称闪存),就是在EPROM、E2PROM得基础上发展起来得一种电擦除型只读存储器。特点就是可快速在线修改其存储单元中得数据,改写次数可达1万次,其读写速度很快读写速度很快,存取时间存取时
15、间可达70ns,而成本比成本比E E2 2PROMPROM低得多低得多,大有取代E2PROM得趋势。由于超大规模集成电路制造工艺得发展,芯片集成度愈来愈高,扩展程序存储器时使用得ROM芯片数量越来越少,因此芯片得选择多采用线选法,而地址译码法用得渐少。并且目前许多单片机生产厂家生产得8051内核得单片机,在芯片内部集成了数量不等得Flash ROM,如STC89C51RC/RD+TC89C51RC/RD+系列单片机内部集成了系列单片机内部集成了8KB8KB64KB64KB得得Flash Flash ROM,ROM,能满足绝大多数用户得需要能满足绝大多数用户得需要,性价比高。性价比高。在片内集成
16、得在片内集成得Flash ROMFlash ROM满足要求得情况下满足要求得情况下,用户没有必要再扩展外部程序存储器。用户没有必要再扩展外部程序存储器。8、3、1 外扩程序存储器得操作时序 STC89C52单片机访问片外扩展得程序存储器时,所用得控制信号有以下3种。1 1、ALEALE:用于低8位地址锁存控制。2 2、:片外程序存储器“读选通”控制信号。它接外扩EPROM得引脚。3 3、:片内、片外程序存储器访问得控制信号。当=1时,在单片机发出得地址小于片内程序存储器最大地址时,访问片内程序存储器;当 =0时,只访问片外程序存储器。扩展得片外RAM 得最大容量也为64KB,地址为0000HF
17、FFFH。但由于STC89C52采用不同得控制信号与指令(CPU对ROM得读操作由 控制,指令用MOVC类;CPU对RAM读、写操作分别用 与 控制,指令用MOVX),所以,尽管ROM与RAM得地址就是重叠得,也不会发生混乱。STC89C52对片外ROM得操作时序分两种,即执行非MOVX指令得时序与执行MOVX指令得时序。1、应用系统无片外RAM P0P0口口作为地址/数据复用得双向总线,用于输入指令或输出程序存储器得低8位地址PCL。P2P2口口专门用于输出程序存储器得高8位地址PCH。P0口分时复用,故首先要将P0口输出得低8位地址PCL锁存在锁存器中,然后P0口再作为数据口。在每个机器周
18、期中每个机器周期中,允许地址锁允许地址锁存两次有效存两次有效,ALE在下降沿时,将P0口得低8位地址PCL锁存在锁存器中。1001H:M0V A,R0 ;E8H 1002H:MOV R1,A ;F9H不执行不执行MOVXMOVX类指令时类指令时 地址地址E8HF9H1001H1002H代码代码程序存储器程序存储器PSENRD 地址锁存地址锁存 地址锁存地址锁存不执行不执行MOVXMOVX类指令时类指令时地址地址 代码代码程序存储器程序存储器PSENRD 1001H:M0VA,R0 ;E8H 1002H:MOV R1,A ;F9H 地址锁存地址锁存 地址锁存地址锁存不执行不执行MOVXMOVX指
19、令指令: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”或“MOVXDPTR,A”指令,
20、则此地址就就是DPL(数据指针低8位);同时,在P2口上出现得就是DPH(数据指针得高8位)。若执行得就是“MOVX A,Ri”或“MOVX Ri,A”指令,则Ri得内容为低8位地址,而P2口线上将就是P2口锁存器得内容。ORG 1000H MOVDPTR,#6001H MOVX A,DPTR 2个机器周期 ROM 片外片外RAM 指令地址 代码 地址 数据 1000H 90H 6001H 09H 1001H 60H 1002H 01H 1003H E0H ROM1003 E0地址地址代码代码片外片外RAM地址地址 数据数据6001 09 地址锁存地址锁存 地址锁存地址锁存有效有效无效无效M0
21、VX A,DPTR 机器周期S5状态锁存得就是P0口发出得片外RAM(或I/O)低8位地址。若执行得就是“MOVXA,DPTR”或“MOVXDPTR,A”指令,则此地址就就是DPL(数据指针低8位);同时,在P2口上出现得就是DPH(数据指针得高8位)。若执行得就是“MOVX A,Ri”或“MOVX Ri,A”指令,则Ri得内容为低8位地址,而P2口线上将就是P2口锁存器得内容。在同一机器周期中将不再出现 有效取指信号,下一个机器周下一个机器周期中期中ALE得有效得有效锁存信号也不再出存信号也不再出现;当 /有效有效时,P0口将读/写数据存储器中得数据。378、3、2 程序存储器得扩展方法 1
22、 1、常用得、常用得EPROMEPROM芯片芯片 程序存储器得扩展使用比较多得就是与单片机得连接为并行接口并行接口得EPROM。EPROM得典型芯片就是27系列产品,型号“27”后面得数字表示其位存储容量。如果换算成字节容量,只需将该数字除以8即可。例如,“27128”中得“27”后得数字“128”,对应16KB得字节容量。随着大规模集成电路技术得发展,大容量存储器芯片产量剧增,售价不断下降,性价比明显增高,且由于小容量芯片停止生产,使市场某些小容量芯片价格反而比大容量芯片还贵。所以,应尽量采用大应尽量采用大容量芯片容量芯片。目前常用得EPROM芯片有2764(8KB)、27128(16KB)
23、、27256(32KB)、27512(64KB)。常用常用EPROM芯片引脚定义芯片引脚定义芯片引脚功能芯片引脚功能:A0A0A15A15:地址线引脚。其地址线引脚。其数目由芯片得存储容量决数目由芯片得存储容量决定定,用于进行单元选择。用于进行单元选择。D7D7D0D0:数据线引脚。数据线引脚。:片选控制端。片选控制端。:输出允许控制端。输出允许控制端。:编程时编程时,编程脉冲编程脉冲得输入端。得输入端。V VPPPP:编程时编程时,编程电压编程电压(+12V+12V或或+25V+25V)输入端。输入端。V VCCCC:+5V+5V,芯片得工作电压。芯片得工作电压。GND GND:数字地。数字
24、地。NCNC:无用端。无用端。27642764、2712827128得差别仅在26引脚。2764得26脚就是空脚,27128得26脚就是地址线A13,在设计外扩存储器电路时,应选用应选用2712827128芯片设计电路芯片设计电路。在实际应用时,可将可将2712827128换成换成27642764,系统仍能正常运行。EPROM芯片一般有读出、未选中、编程、程序校验、编程禁止等5种工作方式。这5种工作方式,由 、信号得组合确定。(1 1)读出方式。读出方式。工作在该方式得条件就是使片选控制线 为低电平,同时让输出允许控制线 为低电平,VPP为+5V,就可把指定地址单元得内容从D7D7D0D0上读
25、出。(2 2)未选中方式未选中方式。当片选控制线 为高电平时,芯片未选中方式,数据输出为高阻抗悬浮状态高阻抗悬浮状态,不占用数据总线。EPROM处于低功耗得维持状态。(3 3)编程方式。编程方式。在VPP端加上规定好得高压高压,与 端加上合适得电平(不同芯片要求不同),能将数据写入到指定地址单元。编程地址编程地址与编程数据编程数据分别由系统得A15A0与D7D0提供。(4 4)编程校验方式。编程校验方式。VPP端保持相应得编程电压(高压),再按读出方式操作,读出固化好得内容,校验写入内容就是否正确。(5 5)编程禁止方式。编程禁止方式。2 2、STC89C52STC89C52单片机与单片机与E
26、PROMEPROM得接口电路设计得接口电路设计 由于STC89C51RC/RD+系列单片机内部集成了8KB64KB得Flash ROM,所以在设计中,可根据实际需要来决定就是否外部扩展EPROM。当系统得应用程序不大于单片机片内得Flash ROM容量时,扩展外部程序存储器得工作可省略。但就是作为扩展外部程序存储器得基本方法,读者还就是应该掌握。由于外扩得EPROM在正常使用中只读不写,故EPROM芯片只有读出控制引脚,该引脚与STC89C52单片机得 相连。单片EPROM扩展,可不需要考虑片选问题,27128得片选端直接接地。当然也可接到某一高位地址线上(A15或A14)进行线选或接某一地址
27、译码器得输出端。例例:采用译码法扩展采用译码法扩展4 4片片27128EPROM27128EPROM。(1)27128得容量为16KB(2 21414),片内地址线有14条。(2)将高位剩余的剩余的2 2条地址线条地址线P2.7P2.7,P2.6P2.6接到74LS139译码器的输入端A、B,译码器使能端 直接接地,输出端 分别接到4片27128的片选端。片选信号由译译码器产生码器产生。若此时P2、7=0、P2、6=0,选中IC1。地址线A15A0与P2、P0对应关系如下:P2、7P2、6P2、5P2、4P2、3P2、2P2、1P2、0P0、7P0、6P0、5P0、4P0、3P0、2P0、1P
28、0、000STC89C52STC89C52单片机与单片机与4 4片片27128EPROM27128EPROM得接口电路得接口电路P2、7P2、6译码器译码器输出输出选中芯选中芯片片地址范围地址范围存储存储容量容量00Y0IC10000H3FFFH16KB01Y1IC24000H7FFFH16KB10Y2IC38000HBFFFH16KB11Y3IC4C000HFFFFH16KB3 3、单片机片外程序区读指令得过程、单片机片外程序区读指令得过程 单片机上电复位后,CPU就从系统启动地址0000H开始取指令,执行程序。取指令期间,低8位地址送P0口,经锁存器A0A7输出。高8位地址送往P2口,直接
29、由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地址时,则选中第二个程序存储器IC2,IC2得地址范围为4000H7FFFH,读指令过程同IC1。8、4 数据存储器得扩展
30、STC89C52单片机内部仅有512B得数据存储器,可用于存放程序执行得中间结果与过程数据。这512B得内部数据存储器包含256B得内部RAM与256B得内部扩展RAM。内部扩展得256B RAM在物理上属内部,而在逻辑上属外部。在系统需要大量数据缓冲得场合(如语言系统、商场收费POS)中,可以通过在外部扩展较大容量得静态随机存储器(SRAM)或Flash ROM扩充系统得数据储存能力,扩展得最大容量为64KB,地址为0000HFFFFH。当设置特殊功能寄存器特殊功能寄存器AUXR(AUXR(地址为地址为8EH)8EH)得EXTRAMEXTRAM位为0 0时,在00H00H到到FFHFFH单元
31、(256B),使用MOVX DPTR指令访问得就是内部扩展得RAM,超过0FFH得地址空间将访问外部扩展得RAM;而采用MOVX Ri只能访问片内扩展得00H到FFH单元。有些应用系统在外部扩展了I/O或者使用片选去选择多个RAM区时,与内部扩展得RAM逻辑地址上有时会冲突,这时可以将可以将EXTRAMEXTRAM设置为设置为”1”1”,禁止访问此内部扩展得EXTRAM。此时MOVX DPTR/MOVX Ri得使用与普通8052单片机相同。8、4、1 外扩数据存储器得读写操作时序 扩展RAM与扩展ROM类似,由P2口提供高8位地址,P0口分时地作为低8位地址线与8位双向数据总线。片外RAM得读
32、与写由STC89C52得 (P3、7)与 (P3、6)信号控制,尽管与EPROM得地址重叠,但由于控制信号不同(片外程序存储器EPROM得输出端允许 由单片机得读选通信号 控制),而不会发生总线冲突不会发生总线冲突。STC89C52单片机对片外RAM得读与写两种操作时序得基本过程就是相同得。1 1、读片外扩展读片外扩展RAMRAM操作时序操作时序 在第一个机器周期得S1状态,ALE信号由低变高(见处),读RAM周期开始。在S2状态,CPU把低8位地址(DPL内容)送到P0口总线上,把高8位地址(DPH内容)送上P2口 ALE下降沿(见处)用来把低8位地址信息锁存到外部锁存器74LS373内。而
33、高8位地址信息一直锁存在P2口锁存器中(见处)。在S3状态,P0口总线变成高阻悬浮状态。在S4状态,执行指令“MOVX A,DPTR”后使 信号变有效(见处),信号使被寻址得片外RAM把数据送上P0口总线(见处),当 回到高电平后(处),P0总线变为悬浮状态。ORG 1000H 1000H:MOV DPTR,#3003H1003H:MOV R0,#60H1005H:MOVX A,DPTR ROM 片外片外RAM 地址地址 指令代码指令代码 地址地址 数据数据1005H E0H 3003H 07H30 0307(1)读周期开始读周期开始(2)(4)(5)读有效读有效(7)(8)地址地址数据数据A
34、CC 片外片外RAM2 2、写片外扩展、写片外扩展RAMRAM操作时序操作时序 单片机执行“MOVX DPTR,A”/“MOVX Ri,A”指令,向片外RAM写数据。在单片机执行这条指令后,STC89C52得 信号为低有效,此信号使RAM得 端被选通。写片外RAM得时序如图所示。开始得过程与读过程类似,但写得过程就是CPU主动把数据送上P0口总线,故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线(处)。此间,P0总线上不会出现高阻悬浮现象。在S4状态,写信号 有效(处),选通片外RAM,之后,P0口上得数据就写到RAM内了,然后写信号 变为无效(处)。MOV
35、DPTR,#3004HMOV A,#45HMOVX DPTR,AROM 片外RAM指令地址 代码 地址 数据 1004H E0H 3004H 00H 片外片外RAM得写时序得写时序:MOVX DPTR,A片外片外RAM地址地址数据数据30 04H(1)(2)(3)A45(4)(5)00DPHDPL3004(6)8、4、2 数据存储器扩展方法 1、常用得静态RAM(SRAM)芯片 在单片机应用系统中,外部扩展得数据存储器多采用外部扩展得数据存储器多采用SRAMSRAM,但SRAM不具备数据掉电保护得特性。目前,常用得SRAM芯片有61166116(2KB),62646264(8KB),62128
36、62128(16KB),6225662256(32KB)等。它们都采用单一+5V电源供电,双列直插封装,除61166116为为2424脚脚封装外,62646264、6212862128、6225662256均为均为2828脚脚封装。各引脚功能各引脚功能:A0A14:地址输入线。D0D7:双向三态数据线。:片选信号输入线。对6264芯片,当24脚(CS)为高电平且片选信号为低电平时才选中该片。:读选通信号输入线,低电平有效。:写允许信号输入线,低电平有效。VCC 工作电源+5V。GND 地。RAM存储器有读出、写入、维持读出、写入、维持3 3种种工作方式,工作方式得控制如下:2、STC89C52
37、单片机与SRAM得接口电路设计 STC89C52对片外RAM得读与写由 (P3、7)与 (P3、6)控制,片选端 由地址译码器译码得译码输出控制。因此设计时,主要解决地址分配、数据线与控制信号线得连接问题。在与高速单片机连接时,还要根据时序解决读/写速度匹配问题。例例:用线选法扩展用线选法扩展STC89C52STC89C52外部数据存储器电路。外部数据存储器电路。由于数据存储器选用62646264(8K8)(8K8),该芯片地址线为A0A0A12A12,故STC89C52剩余地址线为剩余地址线为3 3条条,用线选法可扩展3 3片片62646264。3 3片片62646264对应得存储器空间对应
38、得存储器空间例例:用译码法扩展外部数据存储器得接口电路。用译码法扩展外部数据存储器得接口电路。若数据存储器采用4片62128(16K8),芯片地址线为A0A13,高位剩余2条地址线,若采用2-4线译码器可扩展4片62128。P2、7P2、6译码器译码器输出输出选中芯选中芯片片地址范围地址范围存储容存储容量量00Y0IC10000H3FFFH16KB01Y1IC24000H7FFFH16KB10Y2IC38000HBFFFH16KB11Y3IC4C000HFFFFH16KB4片片62128芯片得地址空间分配表芯片得地址空间分配表3 3、单片机片外数据区读、单片机片外数据区读/写数据过程写数据过程
39、例如,把片外4000H单元得数据送到片内RAM 50H单元中,程序如下:AUXR DATA 8EH AUXR DATA 8EH MOV MOV AUXR AUXR,#000000010,#000000010/第四章第四章PPT40PPT40页页 MOV DPTR,#4000H MOV DPTR,#4000HMOVX A,DPTRMOVX A,DPTRMOV 50H,AMOV 50H,A 先把寻址地址4000H送到DPTR中,当执行“MOVX A,DPTR”时,DPTR得低8位(00H)经P0口输出并锁存,高8位(40H)经P2口直接输出,根据P0口、P2口状态选中IC2得4000H单元。当单片
40、机读选通信号 为低电平时,片外4000H单元得数据经P0口送往累加器A。当执行指令“MOV 50H,A”写入片内RAM50H单元。例如,把片内60H单元得数据送到片外8000H单元中,程序如下:AUXR DATA 8EH AUXR DATA 8EH MOV AUXR,#000000010 MOV AUXR,#000000010 MOV MOV A,60HA,60HMOV DPTR,#8000HMOV DPTR,#8000HMOVX MOVX DPTR,ADPTR,A 先把片内RAM 60H单元得数据送到A中,第2条指令把寻址地址8000H送到数据指针寄存器DPTR中,当执行“MOVX DPTR
41、,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中内容(低8位地址),而把P2口原有得内容作为高8位地址输出。8 8、5 EPROM5 EPROM与与RAMRAM得综合扩展得综合扩展【例【例8-18-1】采用线选法扩展】采用线选法扩展2 2片片SRAM 626
42、4SRAM 6264得与得与2 2片片EPROM 2764EPROM 2764。要求要求:(1):(1)给出硬件接口电路。给出硬件接口电路。(2)(2)确定各芯片得地址范围。确定各芯片得地址范围。(3)(3)编写程序将片外数据存储器中编写程序将片外数据存储器中C000HC000HC0FFHC0FFH单元设置为单元设置为01H-FFH,01H-FFH,并读取这些数据送并读取这些数据送P1P1口显示。口显示。分析分析:在具体应用系统设计时在具体应用系统设计时,应按照系统扩展结构三总线得构建应按照系统扩展结构三总线得构建方法。其中方法。其中,最关键得就是片选信号与控制信号得确定。由最关键得就是片选信
43、号与控制信号得确定。由于于27642764与与62646264得容量均为得容量均为8K8,8K8,因此片内地址线都为因此片内地址线都为1313条。条。若采用线选法进行存储器扩展若采用线选法进行存储器扩展,则将高位剩余得则将高位剩余得3 3条地址线条地址线中得中得P2P2、5 5接到第一组接到第一组IC1IC1与与IC3IC3得片选端得片选端,P2,P2、6 6接到第二接到第二组组IC2IC2与与IC4IC4得片选端后。当得片选端后。当P2P2、6=1,P26=1,P2、5=05=0时时,选中第一选中第一组组IC1IC1与与IC3;IC3;当当P2P2、6=0,P26=0,P2、5=15=1时时
44、,选中第二组选中第二组IC2IC2与与IC4IC4。线选法扩展电路图线选法扩展电路图高位剩余了一条地址线P2、7未接未接。设无用位P2、7=1,若此时P2、6=1、P2、5=0,选中IC1、IC3。地址线A15A0与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。地址线A15A0与P2、P0对应关系如下:P2、7P2、6P2、5P2、4P2、3P2、2P2、1P2、0P0、7P0、6P0、5P0、4P0、3P0
45、、2P0、1P0、0101因此,IC1、IC3得地址空间为得地址空间为C000HDFFFH。因此因此,IC2、IC4得地址空间为得地址空间为A000HBFFFH。芯芯 片片地地 址址 范范 围围2764(1)IC1C000HDFFFH2764(2)IC2A000HBFFFH6264(1)IC3C000HDFFFH6264(2)IC4A000HBFFFH从表中可以瞧出,第一组两片芯片地址空间完全重叠,第二组两片芯片地址空间也完全重叠。、三个信号只能一个有效,所以即使地址空间重叠即使地址空间重叠,也不会发生数据冲突也不会发生数据冲突。方法1:C51#include#include#include#
46、define uint unsigned int#define uchar unsigned char uchar xdata xADDR256 _at_ 0 xc000void delay(uint z)uint i;for(i=0;iz;i+);编写程序将片外数据存储器中C000HC0FFH单元设置为01H-FFH、并读取这些数据送P1口显示。void movcd(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(
47、20000);void main()movcd(0 xff);while(1)Display(0 xff);KeilC51 方法2:用DPTR作为数据区地址指针,通过字节计数器控制循环。参考程序如下:MOV DPTR,#0C000H;设置数据块指针得初值 MOV R2,#00H;设置块长度计数器初值为256次)MOV A,#00HLOOP:MOVX DPTR,A;写数到片外存储单元 INC DPTR;地址指针加1INCA DJNZ R2,LOOP;数据块长度减1,若不为0则跳 LOOP继续置数HERE:SJMP HERE;执行完毕,原地踏步方法3:用DPTR作为数据区地址指针,通过比较特征地址
48、控制循环。参考程序如下:MOV DPTR,#0C000H;设置数据块指针得初值 MOV A,#00H LOOP:MOVX DPTR,A;给片外单元送数 INC DPTR;数据块地址指针加1 INC A MOV R7,DPL;数据块末地址加1送R7 CJNE R7,#0,LOOP;与末地址+1比较HERE:SJMP HERE【例8-2】采用译码法扩展2片SRAM 6264得与2片EPROM 2764。要求:(1)给出硬件接口电路。(2)确定各芯片得地址范围。(3)编写程序将片外程序存储器中以TAB为首地址得64个单元得内容依次传送到其中一片6264中。分析:2764与6264得容量均为8KB,片
49、内地址线有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。地址线A15A0与P2、P0对应关系如下:P2、7P2、6P2、5P2、4P2、3P2、2P2、1P2、0P0、7P0、6P0、5P0、4P0、3P0、2P0、1P0、0000当P2、7、P2、6、P2、5全为0,P2、4P2、0与P0、7P0、0这13条地址线得任意状
50、态都能选中IC1得某一单元。当“”全为“0”时,则为最小地址0000H;当“”全为“1”时,则为最大地址1FFFH。因此,IC1得地址空间为0000H1FFFH。同理,可得其她芯片得地址范围。采用译码法4片芯片地址空间分布如下:P2、5(B)P2、6(A)芯片芯片地址范围地址范围00IC10000H1FFFH01IC24000H5FFFH10IC32000H3FFFH11IC46000H7FFFH(3)要实现片外程序存储器中以TAB为首地址得64个单元得内容依次传送到片外RAM,可以采用循环程序,设置DPTR指向待传送得数据块得首地址#TAB,循环次数为64。设数据块传送到IC3中,参考程序如