《第8章 扩展存储器.ppt》由会员分享,可在线阅读,更多相关《第8章 扩展存储器.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程主讲人:第8章 扩展存储器2第第8 8章章 AT89S52AT89S52单片机外部单片机外部 存储器的扩展存储器的扩展23 3第第8章章 AT89S52单片机外部存储器的并行扩展单片机外部存储器的并行扩展8.1 系统并行扩展结构系统并行扩展结构8.2 地址空间分配和外部地址锁存器地址空间分配和外部地址锁存器 8.2.1 存储器地址空间分配存储器地址空间分配 8.2.2 外部地址锁存器外部地址锁存器8.3 静态数据存储器静态数据存储器RAM的并行扩展的并行扩展 8.3.1 常用的静态常用的静态RAM(SRAM)芯片)芯片 8.3.2 外扩数据存储器的读写操作时序外扩数据存储器的读写操作时序
2、8.3.3 AT89S52单片机与单片机与RAM的接口设计与软件编程的接口设计与软件编程8.4 片内片内Flash存储器的编程存储器的编程 8.4.1 使用通用编程器的程序写入使用通用编程器的程序写入 8.4.2 使用下载线的使用下载线的ISP编程编程48.5 E2PROM的并行扩展的并行扩展 8.5.1 并行并行E2PROM芯片简介芯片简介 8.5.2 E2PROM的工作方式的工作方式 8.5.3 AT89S52单片机扩展单片机扩展E2PROM AT2864的设计的设计5【内容概要】【内容概要】当当AT89S52单片机片内的数据存储器与程序存储器(单片机片内的数据存储器与程序存储器(Flas
3、h存储器)的容存储器)的容量不能满足需要的情况下,需要进行扩展。存储器的扩展分为并行扩展和串量不能满足需要的情况下,需要进行扩展。存储器的扩展分为并行扩展和串行扩展,本章介绍并行扩展存储器的基本方法,首先介绍了系统并行扩展的行扩展,本章介绍并行扩展存储器的基本方法,首先介绍了系统并行扩展的基本结构,还介绍了片外存储器地址空间分配的的两种方法:线选法和译码基本结构,还介绍了片外存储器地址空间分配的的两种方法:线选法和译码法,以及外部地址锁存器的选择。法,以及外部地址锁存器的选择。对于片内对于片内Flash程序存储器,重点介绍了程序的写入,而对片外数据存储程序存储器,重点介绍了程序的写入,而对片外
4、数据存储器以及器以及E2PROM的并行扩展则进行了较为详细的阐述。的并行扩展则进行了较为详细的阐述。68.1 系统扩展结构系统扩展结构 AT89S52单片机采用总线结构,使扩展易于实现,单片机采用总线结构,使扩展易于实现, AT89S52单片机单片机系统扩展结构如系统扩展结构如图图8-1所示。所示。 6图图8-1 AT89S52单片机的系统扩展结构单片机的系统扩展结构7 由由图图8-18-1可以看出,可以看出,系统扩展系统扩展主要包括主要包括存储器扩展存储器扩展和和I/OI/O接口部件扩展接口部件扩展。 AT89S52 AT89S52单片机的存储器扩展即包括单片机的存储器扩展即包括程序存储器扩
5、展程序存储器扩展又包括又包括数据存储数据存储器扩展器扩展。AT89S52AT89S52单片机采用程序存储器空间和数据存储器空间截然分开单片机采用程序存储器空间和数据存储器空间截然分开的的哈佛结构哈佛结构。扩展后,系统形成了。扩展后,系统形成了两个并行的外部存储器空间两个并行的外部存储器空间。 系统扩展是以系统扩展是以AT89S52AT89S52为核心,通过总线把单片机与各扩展部件连接为核心,通过总线把单片机与各扩展部件连接起来。因此,要进行系统扩展起来。因此,要进行系统扩展首先要构造首先要构造系统总线系统总线。 系统总线按功能通常分为系统总线按功能通常分为3 3组,如组,如图图8-18-1所示
6、。所示。78 (1)地址总线)地址总线(Address Bus,AB):用于传送单片机):用于传送单片机发出的地址信发出的地址信号号,以便进行存储单元和,以便进行存储单元和I/O接口芯片中的寄存器单元的选择。接口芯片中的寄存器单元的选择。 (2)数据总线)数据总线(Data Bus,DB):用于单片机与外部存储器之间或):用于单片机与外部存储器之间或与与I/O接口之间传送数据,数据总线是接口之间传送数据,数据总线是双向的双向的。 (3)控制总线)控制总线(Control Bus,CB):控制总线是单片机发出的各种):控制总线是单片机发出的各种控制信号线。控制信号线。如何来构造系统的三总线。如何
7、来构造系统的三总线。91 1P0P0口作为低口作为低8 8位地址位地址/ /数据总线数据总线AT89S51AT89S51受引脚数目限制,受引脚数目限制,P0P0口口既用作低既用作低8 8位地址总线,又用作数据总线位地址总线,又用作数据总线(分时复用),因此需(分时复用),因此需增加一个增加一个8 8位地址锁存器位地址锁存器。AT89S51AT89S51访问外部扩展的存访问外部扩展的存储器单元或储器单元或I/OI/O接口寄存器时,接口寄存器时,先发出低先发出低8 8位地址位地址送地址锁存器锁存,锁存器送地址锁存器锁存,锁存器输出作为系统的低输出作为系统的低8 8位地址(位地址(A7A7 A0A0
8、)。随后,)。随后,P0P0口口又作为数据总线口又作为数据总线口(D7D7 D0D0),如),如图图8-28-2所示。所示。 2 2P2P2口的口线作为高位地址线口的口线作为高位地址线P2P2口用作系统的口用作系统的高高8 8位地址线位地址线,再加上地址锁存器提供的低,再加上地址锁存器提供的低8 8位地址,便形位地址,便形成了系统完整的成了系统完整的1616位地址总线。位地址总线。910使单片机系统的寻址范围达到使单片机系统的寻址范围达到64KB。10 图图8-2 单片机扩展的片外三总线单片机扩展的片外三总线 113控制信号线控制信号线 除地址线和数据线外,还要有系统的控制总线。这些信号有的就
9、是单除地址线和数据线外,还要有系统的控制总线。这些信号有的就是单片机引脚的第一功能信号,有的则是片机引脚的第一功能信号,有的则是P3口第二功能信号。包括:口第二功能信号。包括:(1)PSEN*作为作为外扩程序存储器外扩程序存储器的的读选通读选通控制信号。控制信号。(2)RD*和和WR*为为外扩数据存储器外扩数据存储器和和I/O的读、写选通控制信号。的读、写选通控制信号。(3)ALE作为作为P0口发出的低口发出的低8位地址锁存控制信号。位地址锁存控制信号。(4)EA*为片内、片外程序存储器的选择控制信号。为片内、片外程序存储器的选择控制信号。 可见,可见,AT89S52的的4个并行个并行I/O口
10、,由于系统扩展的需要,口,由于系统扩展的需要,真正作为数真正作为数字字I/O用,就剩下用,就剩下P1和和P3的部分口线的部分口线。11128.2 地址空间分配和外部地址锁存器地址空间分配和外部地址锁存器 本节讨论本节讨论如何进行存储器空间的如何进行存储器空间的地址分配地址分配,并介绍用于输出低,并介绍用于输出低8位地址的位地址的常用的常用的地址锁存器地址锁存器。8.2.1 存储器地址空间分配存储器地址空间分配 实际系统设计中,既需要扩展程序存储器,又需要扩展数据存储器,实际系统设计中,既需要扩展程序存储器,又需要扩展数据存储器,如如何把片外的两个何把片外的两个64KB地址空间分配给各个程序存储
11、器、数据存储器芯片,地址空间分配给各个程序存储器、数据存储器芯片,使使一个存储单元只对应一个地址一个存储单元只对应一个地址,避免单片机发出一个地址时,同时访问,避免单片机发出一个地址时,同时访问两个单元,发生数据冲突。这就是存储器两个单元,发生数据冲突。这就是存储器地址空间分配问题地址空间分配问题。1213AT89S52单片机发出的单片机发出的地址码地址码用于选择某个存储器单元,外扩多片存储器用于选择某个存储器单元,外扩多片存储器芯片中,单片机必须进行芯片中,单片机必须进行两种选择两种选择:一是一是选中该存储器芯片,这称为选中该存储器芯片,这称为“片片选选”,未被选中的芯片不能被访问。未被选中
12、的芯片不能被访问。二是二是在在“片选片选”的基础上再根据单片机的基础上再根据单片机发出的地址码来对发出的地址码来对“选中选中” 芯片的某一单元进行访问,即芯片的某一单元进行访问,即“单元选择单元选择”。为实现片选,存储器芯片都有为实现片选,存储器芯片都有片选引脚片选引脚。同时也都有多条。同时也都有多条地址线引脚地址线引脚,以,以便进行单元选择。便进行单元选择。注意,注意,“片选片选”和和“单元选择单元选择”都是单片机通过地址线一都是单片机通过地址线一次发出的地址信号来完成选择次发出的地址信号来完成选择。通常把单片机系统的地址线笼统地分为通常把单片机系统的地址线笼统地分为低位地址线低位地址线和和
13、高位地址线高位地址线,“片选片选”1314都是使用都是使用高位地址线高位地址线。实际上,。实际上,16条地址线中的高、低位地址线的数目条地址线中的高、低位地址线的数目并不是固定的,只是习惯上把用于并不是固定的,只是习惯上把用于 “单元选择单元选择”的地址线,都称为低位的地址线,都称为低位地址线,其余的为高位地址线。地址线,其余的为高位地址线。 常用的存储器地址空间常用的存储器地址空间分配方法有分配方法有两种两种:线性选择法线性选择法(简称线选法)(简称线选法)和和地址译码法地址译码法(简称译码法),下面介绍。(简称译码法),下面介绍。1线选法线选法 是直接利用系统的是直接利用系统的某一高位地址
14、线某一高位地址线作为存储器芯片(或作为存储器芯片(或I/O接口芯片)接口芯片)的的“片选片选”控制信号。为此,只需要把用到的控制信号。为此,只需要把用到的高位地址线与存储器芯片高位地址线与存储器芯片的的“片选片选”端直接连接端直接连接即可。即可。15 线选法优点线选法优点是电路简单,不需要另外增加地址译码器硬件电路,体积是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。小,成本低。缺点缺点是可寻址的是可寻址的芯片数目受到限制芯片数目受到限制。另外,。另外,地址空间不连地址空间不连续续,每个存储单元的地址不唯一,这会给程序设计带来不便,只,每个存储单元的地址不唯一,这会给程序设计带来
15、不便,只适用于适用于外扩芯片数目不多的单片机系统的存储器扩展外扩芯片数目不多的单片机系统的存储器扩展。2译码法译码法 使用译码器对使用译码器对AT89S51单片机的单片机的高位地址进行译码高位地址进行译码,译码输出译码输出作为存作为存储器芯片的储器芯片的片选信号片选信号。这种方法能够。这种方法能够有效地利用存储器空间,有效地利用存储器空间,适用于适用于多多芯片的存储器扩展芯片的存储器扩展。常用的译码器芯片常用的译码器芯片有有74LS138(3线线-8线线译码器)、译码器)、74LS139(双(双2线线-4线线译码器)和译码器)和74LS154(4线线-16线线译码器)。译码器)。1516 若全
16、部高位地址线都参加译码,称为若全部高位地址线都参加译码,称为全译码全译码;若仅部分高位地址线参;若仅部分高位地址线参加译码,称为加译码,称为部分译码部分译码。部分译码存在着部分存储器地址空间相重叠的。部分译码存在着部分存储器地址空间相重叠的情况。情况。 下面介绍下面介绍常用的译码器芯片常用的译码器芯片。(1)74LS138 3线线-8线线译码器,有译码器,有3个数据输入端个数据输入端,经,经译码产生译码产生8种状态种状态。引脚如。引脚如图图8-3所示所示,真值表见,真值表见表表8-1。由。由表表8-1可可见,当译码器的输入为某一固定编见,当译码器的输入为某一固定编码时,其码时,其输出仅有一个固
17、定的引脚输出为低电平输出仅有一个固定的引脚输出为低电平,其余的为高电平其余的为高电平。输。输出为低电平的引脚就作为某一存储器芯片的片选信号。出为低电平的引脚就作为某一存储器芯片的片选信号。161717G2AG2BY7Y6Y5Y4Y3Y2Y1Y018(2)74LS139 双双2线线-4线线译码器译码器。这两个译码器完全独立,分别有各自的数据输入端、。这两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端,其引脚如译码状态输出端以及数据输入允许端,其引脚如图图8-4所示所示,真值表见,真值表见表表8-2(只给出其中一组)。(只给出其中一组)。 18 图图8-3 74LS13
18、8引脚图引脚图 图图8-4 74LS139引脚图引脚图1920 以以74LS13874LS138为例为例,如何进行地址分配。,如何进行地址分配。 例如,例如,要要扩扩8 8片片8KB8KB的的RAM 6264RAM 6264,如何通过,如何通过74LS13874LS138把把64KB64KB空间分配给各个空间分配给各个芯片?芯片? 由由74LS13874LS138真值表真值表可知,把可知,把G1G1接到接到+5V+5V,G2AG2A* *、G2BG2B* *接地,接地,P2.7P2.7、P2.6P2.6、P2.5P2.5(高(高3 3位地址线)分别接位地址线)分别接74LS13874LS138
19、的的C C、B B、A A端,由于对高端,由于对高3 3位地址译码,位地址译码,这样译码器有这样译码器有8 8个输出个输出Y7Y7* * Y0 Y0* *,分别接到,分别接到8 8片片62646264的的各各“片选片选”端端,实现,实现8 8选选1 1的片选。的片选。 低低1313位地址位地址(P2.4P2.4P2.0P2.0,P0.7P0.7P0.0P0.0)完成对选中的)完成对选中的62646264芯片中的各芯片中的各个存储单元的个存储单元的“单元选择单元选择”。这样就把。这样就把64KB64KB存储器空间分成存储器空间分成8 8个个8KB8KB空间了。空间了。2021 64KB地址空间分
20、配地址空间分配如如图图8-5所示所示。 这里采用这里采用全地址译码全地址译码方式。因此,方式。因此,AT89S51发出发出16位地址时,每次只能选位地址时,每次只能选中某一芯片及该芯片的一个存储单元中某一芯片及该芯片的一个存储单元21图图8-5 64KB地址空间划分成地址空间划分成8个个8KB空间空间22 如何用如何用74LS13874LS138把把64KB64KB空间全部划分为空间全部划分为4KB4KB的块的块呢?呢?4KB4KB空间需空间需1212条地址线,条地址线,而译码器输入只有而译码器输入只有3 3条地址线(条地址线(P2.6P2.6P2.4P2.4),),P2.7P2.7没有参加译
21、码,没有参加译码,P2.7P2.7发发出的出的0 0或或1 1决定选择决定选择64KB64KB存储器空间的存储器空间的前前32KB32KB还是还是后后32KB32KB,由于,由于P2.7P2.7没有参加没有参加译码译码,就,就不是全译码方式不是全译码方式,前后两个,前后两个32KB32KB空间就重叠了。那么,空间就重叠了。那么,这这32KB32KB空间空间利用利用74LS13874LS138译码器可划分为译码器可划分为8 8个个4KB4KB空间空间。 如果把如果把P2.7P2.7通过一个非门与通过一个非门与74LS13874LS138译码器译码器G1G1端连接起来,如端连接起来,如图图8-68
22、-6所示,所示,就不会发生两个就不会发生两个32KB32KB空间重叠的问题了。这时,空间重叠的问题了。这时,选中的是选中的是64KB64KB空间的前空间的前32KB32KB空间空间,地址范围为,地址范围为0000H0000H7FFFH7FFFH。2223 如果去掉如果去掉图图8-68-6中的非门,地址范围为中的非门,地址范围为8000H8000HFFFFHFFFFH。把译码器的输出连。把译码器的输出连到各个到各个4KB4KB存储器的片选端,这样就存储器的片选端,这样就把把32KB32KB空间划分为空间划分为8 8个个4KB4KB空间空间。P2.3P2.3P2.0P2.0,P0.7P0.7P0.
23、0P0.0实现实现“单元选择单元选择”,P2.6P2.6P2.4P2.4通过通过74LS13874LS138译码实现对译码实现对各存储器芯片的片选。各存储器芯片的片选。 采用译码器划分的采用译码器划分的地址空间块都是地址空间块都是相等相等的,如果将地址空间块划分为不等的,如果将地址空间块划分为不等的块,可采用的块,可采用可编程逻辑器件可编程逻辑器件FPGAFPGA对其编程来代替译码器进行非线性译码。对其编程来代替译码器进行非线性译码。2424图图8-6 存储器空间被划分成每块存储器空间被划分成每块4KB258.2.2 外部地址锁存器外部地址锁存器 受引脚数的限制,受引脚数的限制,P0口兼用数据
24、线和低口兼用数据线和低8位地址线,为了将它们分离出位地址线,为了将它们分离出来,需在单片机外部增加地址锁存器。目前,常用的地址锁存器芯片有来,需在单片机外部增加地址锁存器。目前,常用的地址锁存器芯片有74LS373、74LS573等。等。1锁存器锁存器74LS373 是一种是一种带三态门带三态门的的8D锁存器锁存器,其引脚如,其引脚如图图8-7所示所示,内部结构如,内部结构如图图8-8所所示示。AT89S51与与74LS373锁存器的锁存器的连接连接如如图图8-9所示。所示。252626图图8-7 锁存器锁存器74LS373的引脚的引脚2727图图8-8 74LS373的内部结构的内部结构28
25、28图图8-9 AT89S51单片机单片机P0口与口与74LS373的连接的连接29引脚说明:引脚说明:n D7D0:8位数据输入线,位数据输入线,n Q7Q0:8位数据输出线。位数据输出线。n G:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据:数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。选通到内部锁存器,负跳变时,数据锁存到锁存器中。n OE*:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时
26、,输出线为高阻开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。态。 74LS373锁存器功能如锁存器功能如表表8-3。29302锁存器锁存器74LS573 也是一种带有三态门的也是一种带有三态门的8D锁存器,功能及内部结构锁存器,功能及内部结构与与74LS373完全一样完全一样,只是其引脚排列与只是其引脚排列与74LS373不同,不同,图图8-10为为74LS573引脚图。引脚图。 由由图图8-10,与,与74LS373相比,相比,74LS573的的输入输入D端端和和输出输出Q端端依次排列在依次排列在芯片两侧芯片两侧,为绘制印制电路板提供方便。,为绘制印制电路板提供方便。
27、引脚说明:引脚说明:n D7D0:8位数据输入线。位数据输入线。n Q7Q0:8位数据输出线。位数据输出线。n G :数据输入锁存选通信号,该引脚与数据输入锁存选通信号,该引脚与74LS373的的G端功能相同。端功能相同。n OE*:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打:数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。态。3031图图8-10 锁存器锁存器74LS573的引脚的引脚328.3 8.3 静态数据存储器静态数据存储器
28、RAMRAM的并行扩展的并行扩展 AT89S52AT89S52单片机片内有单片机片内有256B RAM256B RAM,往往不能满足实际需要,必须片外扩展,往往不能满足实际需要,必须片外扩展数据存储器。数据存储器分为动态数据存储器与静态数据存储器。在单片机数据存储器。数据存储器分为动态数据存储器与静态数据存储器。在单片机应用系统中,如果外部扩展动态数据存储器,还需要有对应的刷新电路,所应用系统中,如果外部扩展动态数据存储器,还需要有对应的刷新电路,所以,在单片机的外部扩展的数据存储器都采用静态数据存储器(以,在单片机的外部扩展的数据存储器都采用静态数据存储器(SRAMSRAM)。)。 对外部扩
29、展的数据存储器空间访问,对外部扩展的数据存储器空间访问,P2P2口口提供高提供高8 8位地址,位地址,P0P0口口分时提供分时提供低低8 8位地址和位地址和8 8位双向数据总线。位双向数据总线。片外数据存储器片外数据存储器RAMRAM的读和写的读和写由单片机的由单片机的RDRD* *(P3.7P3.7)和)和WRWR* *(P3.6P3.6)信号控制。)信号控制。32338.3.1 8.3.1 常用的静态常用的静态RAMRAM(SRAMSRAM)芯片)芯片 单片机系统中常用的单片机系统中常用的RAMRAM芯片的典型型号有芯片的典型型号有61166116(2KB2KB ),),62646264(
30、8KB8KB),),6212862128(16KB16KB),),6225662256(32KB32KB)。 6116 6116为为2424脚脚封装,封装,62646264、6212862128、6225662256为为2828脚脚封装。这些封装。这些RAMRAM芯片的引脚芯片的引脚如如图图8-118-11所示。所示。333434图图8-11 常用的常用的RAM引脚图引脚图35各引脚功能:各引脚功能:lA0A14:地址输入线。地址输入线。lD0D7:双向三态数据线。双向三态数据线。lCE*:片选信号输入线。对片选信号输入线。对6264芯片,当芯片,当24脚(脚(CS)为高电平,且)为高电平,且
31、 CE*为低电平时才选中该片。为低电平时才选中该片。l OE* :读选通信号输入线,低电平有效。读选通信号输入线,低电平有效。l WE*:写允许信号输入线,低电平有效。写允许信号输入线,低电平有效。lVCC 工作电源工作电源+5V。lGND 地。地。 RAM存储器有存储器有读出、写入、维持读出、写入、维持3种种工作方式,工作方式的控制见工作方式,工作方式的控制见表表8-4。35368.3.2 8.3.2 外扩数据存储器的读写操作时序外扩数据存储器的读写操作时序对片外对片外RAMRAM读和写读和写两种操作时序的基本过程相同。两种操作时序的基本过程相同。1 1读片外读片外RAMRAM操作时序操作时
32、序若外扩一片若外扩一片RAMRAM,应将,应将WRWR* *脚与脚与RAMRAM的的WEWE* *脚连接,脚连接,RDRD* *脚与芯片脚与芯片OE*脚连接。脚连接。37单片机读片外单片机读片外RAM操作时序如操作时序如图图8-12所示所示。在在第一个机器周期的第一个机器周期的S1状态状态,ALE信号由低变高(信号由低变高(处),读处),读RAM周期周期开始。在开始。在S2状态状态,CPU把低把低8位地址送到位地址送到P0口总线上,把高口总线上,把高8位地址送上位地址送上P2口(在执行口(在执行“MOVX A,DPTR”指令阶段才送高指令阶段才送高8位;若执行位;若执行“MOVX A,Ri”则
33、不送高则不送高8位)。位)。ALE下降沿下降沿(处)用来把低处)用来把低8位地址信息锁存到外部锁存器位地址信息锁存到外部锁存器74LS373内。内。而高而高8位地址信息一直锁存在位地址信息一直锁存在P2口锁存器中(口锁存器中(处)。处)。在在S3状态状态,P0口总线变成高阻悬浮状态口总线变成高阻悬浮状态。在。在S4状态,执行指令状态,执行指令“MOVX A,DPTR” (见处)(见处)后使后使RDRD* * 信号信号变有效变有效373838图图8-12 8-12 单片机读片外单片机读片外RAMRAM操作时序图操作时序图39,RDRD* * 信号使被寻址的片外信号使被寻址的片外RAM过片刻后把数
34、据送上过片刻后把数据送上P0口总线(口总线(处),当处),当RDRD* * 回到高电平后(回到高电平后(处),处),P0总线变悬浮状态(处)。总线变悬浮状态(处)。2写片外写片外RAM操作时序操作时序 向片外向片外RAM写数据,单片机执行写数据,单片机执行“MOVX DPTR,A”指令。指令执行指令。指令执行后,单片机的后,单片机的WR*信号为低有效,此信号使信号为低有效,此信号使RAM的的WEWE* * 端被选通。端被选通。 写片外写片外RAM的时序如的时序如图图8-13所示所示。开始的过程与读过程类似,但写的过。开始的过程与读过程类似,但写的过程是程是CPU主动把数据送上主动把数据送上P0
35、口总线口总线,故在时序上,故在时序上,CPU先向先向P0口总线上送口总线上送完完8位地址后,在位地址后,在S3状态就将数据送到状态就将数据送到P0口总线(口总线(处)。此间,处)。此间,P0总线上总线上不会出现高阻悬浮现象。不会出现高阻悬浮现象。4040图图8-13 单片机写片外单片机写片外RAM操作时序图操作时序图41在在S4S4状态状态,写信号,写信号WRWR* *有效(处),选通片外有效(处),选通片外RAMRAM,稍过片刻,稍过片刻,P0P0口上的口上的数据就写到数据就写到RAMRAM内了,然后写信号内了,然后写信号WRWR* *变为无效(处)。变为无效(处)。8.3.3 AT89S5
36、28.3.3 AT89S52单片机与单片机与RAMRAM的接口设计与软件编程的接口设计与软件编程 AT89S52 AT89S52对片外对片外RAMRAM的读和写由单片机的的读和写由单片机的RDRD* *(P3.7P3.7)和和WRWR* *(P3.6P3.6)控控制,片选端由译码器译码输出控制。因此设计时,主要解决地址分配、数制,片选端由译码器译码输出控制。因此设计时,主要解决地址分配、数据线和控制信号线的连接问题。在与高速单片机连接时,还要根据时序解据线和控制信号线的连接问题。在与高速单片机连接时,还要根据时序解决读决读/ /写速度匹配问题。写速度匹配问题。 图图8-148-14为用为用线选
37、法线选法扩展扩展AT89S51AT89S51外部数据存储器电路。图中数据存储器外部数据存储器电路。图中数据存储器选用选用62646264,该芯片地址线为,该芯片地址线为A0A0A12A12,故单片机剩余地址线为,故单片机剩余地址线为3 3条。条。414242图图8-14 线选法扩展外部数据存储器电路图线选法扩展外部数据存储器电路图43用用线选线选可扩展可扩展3片片6264,对应的存储器空间见,对应的存储器空间见表表8-5。43 用用译码法译码法扩展外部数据存储器的接口电路如扩展外部数据存储器的接口电路如图图8-15所示。数据存储器所示。数据存储器62128,芯片地址线为,芯片地址线为A0A13
38、,剩余地址线为两条,若采用,剩余地址线为两条,若采用2线线-4线译码线译码器可扩展器可扩展4片片62128。各片。各片62128芯片芯片地址分配地址分配如如表表8-6所示。所示。4444图图8-15 译码法扩展外部数据存储器电路图译码法扩展外部数据存储器电路图4545Y0Y1Y2Y3 【例例8-1】编写程序将片外数据存储器中编写程序将片外数据存储器中5000H50FFH单全部清单全部清“0”。 方法方法1 用用DPTR作为数据区地址指针,同时使用字节计数器。参考程序如作为数据区地址指针,同时使用字节计数器。参考程序如下:下:4646 方法方法2 用用DPTR作为数据区地址指针,但不使用字节计数
39、器,而是比较特作为数据区地址指针,但不使用字节计数器,而是比较特征地址。参考程序如下:征地址。参考程序如下:4747482单片机片外数据区读单片机片外数据区读/写数据过程写数据过程 当程序运行中,执行当程序运行中,执行“MOV”类指令时,表示与片内类指令时,表示与片内RAM交换数据;交换数据;当遇到当遇到“MOVX”类指令时,表示对片外数据存储器区寻址。片外数据存类指令时,表示对片外数据存储器区寻址。片外数据存储器区只能间接寻址。储器区只能间接寻址。 例如,例如,把把片外片外6000H单元单元的数据送到的数据送到片内片内RAM 50H单元单元中,程序如下:中,程序如下:4849先把寻址地址先把
40、寻址地址6000H6000H送到数据指针寄存器送到数据指针寄存器DPTRDPTR中,当执行中,当执行“MOVX AMOVX A,DPTR”DPTR”时,时,DPTRDPTR的低的低8 8位(位(00H00H)经)经P0P0口输出并锁存,高口输出并锁存,高8 8位(位(60H60H)经)经P2P2口口直接输出,根据直接输出,根据P0P0口、口、P2P2口状态选中口状态选中IC4IC4(62646264)的)的6000H6000H单元。当读选通信单元。当读选通信号为低电平时,片外号为低电平时,片外6000H6000H单元的数据经单元的数据经P0P0口送往累加器口送往累加器A A。当执行指令。当执行
41、指令“MOV 50HMOV 50H,A”A”时,则把该数据存入片内时,则把该数据存入片内50H50H单元。单元。 向片外数据区写数据的过程与读数据的过程类似。向片外数据区写数据的过程与读数据的过程类似。 例如,例如,把把片内片内50H50H单元的数据送到片外单元的数据送到片外4000H4000H单元单元中,程序如下:中,程序如下:50执行第执行第1 1条指令,先把片内条指令,先把片内RAM 50HRAM 50H单元的数据送到单元的数据送到A A中,第中,第2 2条指令把寻条指令把寻址地址址地址4000H4000H送到数据指针寄存器送到数据指针寄存器DPTRDPTR中,当执行中,当执行“MOVX
42、 DPTRMOVX DPTR,A”A”时,时,DPTRDPTR的低的低8 8位(位(00H00H)由)由P0P0口输出并锁存,高口输出并锁存,高8 8位(位(40H40H)由)由P2P2口直接输出,根口直接输出,根据据P0P0口、口、P2P2口状态选中口状态选中IC3IC3(62646264)的)的4000H4000H单元。当写选通信号单元。当写选通信号WRWR* *有效时,有效时,A A中的内容送往片外中的内容送往片外4000H4000H单元。单元。 单片机读写片外数据存储器中内容,除了用单片机读写片外数据存储器中内容,除了用“MOVX A,DPTR”和和“MOVX DPTR,A”外,还可用
43、指令外,还可用指令“MOVX A,Ri”和和“MOVX Ri,A”。这时。这时P0口装入口装入Ri中内容(低中内容(低8位地址),而把位地址),而把P2口原有的内容口原有的内容作为高作为高8位地址输出。位地址输出。【例例8-2】是采用是采用“MOVX Ri,A”指令的例子。指令的例子。51 【例例8-48-4】编程,将编程,将程序存储器中以程序存储器中以TABTAB为首址的为首址的3232个个单元内容依次传送单元内容依次传送到到外部外部RAMRAM以以4000H4000H为首址的区域。为首址的区域。 DPTR DPTR指向标号指向标号TABTAB首地址。首地址。R0R0既指示外部既指示外部RA
44、MRAM的地址,又表示数据标号的地址,又表示数据标号TABTAB的位移量。程序为一循环程序,的位移量。程序为一循环程序,循环次数为循环次数为3232,R0R0的值达到的值达到3232就结束循环。就结束循环。 参考程序参考程序: 515252538.4 片内片内Flash存储器的编程存储器的编程目前许多公司生产的目前许多公司生产的8051内核单片机,在芯片内部大多集成了数量内核单片机,在芯片内部大多集成了数量不等的不等的Flash ROM,例如,美国例如,美国ATMEL公司生产的公司生产的AT89S5x系列单片机,系列单片机,片内分别有不同容量的片内分别有不同容量的Flash ROM,作为片内程
45、序存储器使用,见,作为片内程序存储器使用,见表表8-7。此时,在片内的。此时,在片内的Flash ROM满足要求的情况下,扩展外满足要求的情况下,扩展外部程序存储部程序存储器的工作就可省去,只需讨论如何向片内的器的工作就可省去,只需讨论如何向片内的Flash ROM写入程序问题。写入程序问题。程序存储器为只读存储器,因为这种存储器在电源关断后,仍能保存程序存储器为只读存储器,因为这种存储器在电源关断后,仍能保存程序(称此特性为非易失性的),在系统上电后,程序(称此特性为非易失性的),在系统上电后,CPU可取出这些指令可取出这些指令重新执行。重新执行。5455只读存储器简称只读存储器简称ROM(
46、Read Only Memory)。)。ROM中的信息一旦写入,中的信息一旦写入,就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称为只读就不能随意更改,特别是不能在程序运行过程中写入新的内容,故称为只读存储器。存储器。常见的只读存储器有以下几种。常见的只读存储器有以下几种。(1)EPROM。EPROM是用电信号编程,用紫外线擦除的只读存储器是用电信号编程,用紫外线擦除的只读存储器芯片。在芯片外壳的中间位置有一个圆形窗口,通过该窗口照射紫外线就可芯片。在芯片外壳的中间位置有一个圆形窗口,通过该窗口照射紫外线就可擦除原有的信息。使用编程器可将调试完毕的程序写入。擦除原有的信息。使用编程
47、器可将调试完毕的程序写入。(2)E2PROM(EEPROM)。)。E2PROM这是一种用电信号编程,也用这是一种用电信号编程,也用电信号擦除的电信号擦除的ROM芯片。对芯片。对E2PROM的读写操作与的读写操作与RAM存储器几乎没有什存储器几乎没有什么差别,只是写入的速度慢一些,但断电后仍能保存信息。么差别,只是写入的速度慢一些,但断电后仍能保存信息。 56(3)Flash ROM。 Flash ROM又称闪烁存储器(简称闪存),又称闪烁存储器(简称闪存),Flash ROM是在是在EPROM、E2PROM的基础上发展起来的一种电擦除型只读存储的基础上发展起来的一种电擦除型只读存储器。其特点是
48、可快速在线修改其存储单元中的数据,最大改写次数可达器。其特点是可快速在线修改其存储单元中的数据,最大改写次数可达1万万次,其读写速度很快,存取时间可达次,其读写速度很快,存取时间可达70ns,成本却比普通,成本却比普通E2PROM低得多。低得多。美国美国ATMEL公司的公司的AT89S5x系列单片机,在片内系列单片机,在片内Flash ROM满足要求的满足要求的情况下,外部程序存储器的扩展工作即可省去。本节只讨论如何把已调试完情况下,外部程序存储器的扩展工作即可省去。本节只讨论如何把已调试完毕的程序代码写入到毕的程序代码写入到AT89S52的片内的片内Flash存储器中,即存储器中,即Flas
49、h存储器的编存储器的编程问题。程问题。57AT89S52AT89S52单片机片内单片机片内8KB Flash8KB Flash存储器的基本特性如下:存储器的基本特性如下:(1 1)可循环写入)可循环写入/ /擦除擦除1 0001 000次;次;(2 2)存储器数据保存时间为)存储器数据保存时间为1010年;年;单片机芯片出厂时,单片机芯片出厂时,FlashFlash存储器处于全部空白状态(各单元均为存储器处于全部空白状态(各单元均为FFHFFH),),可直接进行编程写入。若可直接进行编程写入。若FlashFlash存储器不全为空白状态(即单元中有不是存储器不全为空白状态(即单元中有不是FFHF
50、FH的),应该首先将芯片擦除(即各个单元均为的),应该首先将芯片擦除(即各个单元均为FFHFFH)后,才可向其写入调试)后,才可向其写入调试通过的程序代码。通过的程序代码。58AT89S52片内的片内的Flash存储器有存储器有3个可编程的加密位,定义了个可编程的加密位,定义了3个加密级个加密级别,用户只要对别,用户只要对3个加密位:个加密位:LB1、LB2、LB3进行编程即可实现进行编程即可实现3个不同级个不同级别的加密。经过上述的加密处理,使解密的难度加大,但还是可以解密。现别的加密。经过上述的加密处理,使解密的难度加大,但还是可以解密。现在还有一种非恢复性加密(在还有一种非恢复性加密(O