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