AT89S51单片机最小系统组成及存储器的扩展
- 格式:doc
- 大小:785.01 KB
- 文档页数:15
详细解读AT89S51存储器的结构AT89S51单片机存储器结构的特点之一是将程序存储器和数据存储器分开(称为哈佛结构),并有各自的对这两个不同的存储器空间的访问指令。
AT89S51的存储器空间可划分为如下4类。
1.程序存储器空间单片机能够按照一定的次序工作是由于程序存储器中存放了经调试正确的程序。
程序存储器可以分为片内和片外两部分。
AT89Ssl单片机的片内程序存储器为4 KB的Flash存储器,编程和擦除完全是电气实现,且速度快。
可使用通用的编程器对其编程,也可在线编程。
当AT89S51片内的4 KB的Flash存储器不够用时,用户可在片外扩展程序存储器,最多可扩展至64 KB。
2.数据存储器空间数据存储器空间分为片内与片外两部分。
AT89S51单片机内部有128 B的RAM(增强型的52子系列为256 B),用来存放可读/写的数据。
当AT89S51的片内RAM不够用时,又给用户提供了在片外可扩展至64 KB RAM的功能。
至于究竟扩展多少RAM,则根据用户实际需要来定。
3.特殊功能寄存器(SFR,Special Function Register)特殊功能寄存器实际上是AT89S51片内各功能部件的控制寄存器及状态寄存器。
SFR综合反映了整个单片机基本系统内部实际的工作状态及工作方式。
4.位地址空间AT89S51单片机内共有211个可寻址位,构成了位地址空间。
它们位于内部RAM(共128位)和特殊功能寄存器区(共83位)中。
程序存储器空间程序存储器是只读存储器(ROM),用于存放程序和表格之类的固定常数。
AT89S51单片机的片内程序存储器为4 KB的Flash存储器,地址范围为0000H~0FFFH。
AT89S51有16位地址线,可外扩的程序存储器空间最大为64KB,地址范围为0000H~FFFFH。
片内与片外扩展的程序存储器在使用时应注意以下问题:(1)整个程序存储器空间可以分为片内和片外两部分,CPU究竟是访问片内的还是片外的程序存储器,可由EA(的反)引脚上所接的电平来确定。
AT89S51单⽚机简介⼀、AT89S51单⽚机简介AT89S51 为ATMEL 所⽣产的可电⽓烧录清洗的8051 相容单芯⽚,其内部程序代码容量为4KB (⼀)、AT89S51主要功能列举如下:1、为⼀般控制应⽤的8 位单芯⽚2、晶⽚内部具时钟振荡器(传统最⾼⼯作频率可⾄12MHz)3、内部程式存储器(ROM)为4KB4、内部数据存储器(RAM)为128B5、外部程序存储器可扩充⾄64KB6、外部数据存储器可扩充⾄64KB7、32 条双向输⼊输出线,且每条均可以单独做I/O 的控制8、5 个中断向量源9、2 组独⽴的16 位定时器10、1 个全多⼯串⾏通信端⼝11、8751 及8752 单芯⽚具有数据保密的功能12、单芯⽚提供位逻辑运算指令(⼆)、AT89S51各引脚功能介绍:VCC:Array AT89S51 电源正端输⼊,接+5V。
VSS:电源地端。
XTAL1:单芯⽚系统时钟的反相放⼤器输⼊端。
XTAL2:系统时钟的反相放⼤器输出端,⼀般在设计上只要在XTAL1 和XTAL2上接上⼀只⽯英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加⼊⼀20PF 的⼩电容,可以使系统更稳定,避免噪声⼲扰⽽死机。
RESET:AT89S51的重置引脚,⾼电平动作,当要对晶⽚重置时,只要对此引脚电平提升⾄⾼电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且⾄地址0000H处开始读⼊程序代码⽽执⾏程序。
EA/Vpp:"EA"为英⽂"External Access"的缩写,表⽰存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取⽤外部的程序代码(存于外部EPROM中)来执⾏程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部⽆程序存储器空间。
如果是使⽤8751 内部程序空间时,此引脚要接成⾼电平。
第五章A T89S51单片机最小系统组成及存储器的扩展本章主要讲述了单片机系统的最小组成以及各种存储器电路的扩展方法,特别对GAL译码方法进行了讨论。
5.1 单片机最小系统组成能使单片机工作的最少器件构成的系统称为单片机的最小系统。
对于AT89S51单片机,由于其内部有4K可在线编程的Flash存储器,用它组成最小系统时,不需机外扩程序存储器,只要有复位电路和时钟电路即可,因此,由A T89S51单片机组成的最小系统如图5.1所示:图5.1是一个实际应用的最小系统,74HC14可以提高复位的可靠性;另外,当P0用作I/O口时,需要接10k~20k 的上拉电阻。
5.2 单片机的时序时序就是进行某种操作时,各种数据、控制信号先后出现的顺序。
单片机的工作时序是个很重要的概念,了解时序是进行硬件电路设计的第一步5.2.1 单片机取指和执行时序运行单片机程序时,总是按照取指、译码、执行,再取指、再译码、再执行的顺序进行。
为了说明CPU的时序,把12个振荡周期称为一个机器周期,2个振荡周期被称为一个状态(state),每个状态中,前一个振荡周期被称为相(Phase)1,第二个振荡周期被称为相(Phase)2,这样任何一个振荡周期都可以用SiPj(i=1~6;j=1~2)来表示。
ALE信号总是在一个机器周期的S1P2、S2P1和S4P2、S5P1被激活。
单周期指令总是从S1P2开始取指,当操作码被锁存到指令寄存器时,如果是双字节指令,在同一机器周期的S4读第二个字节代码;如果是个单字节指令,在S4仍会读一次,但这次读到的内容将被忽略或丢弃。
在任何情况下,指令都是在S6P2执行完毕。
单周期、单字节指令和单周期、双字节指令的取指、执行过程如图5.2的(A)、(B)所示。
A T89S51单片机的指令中,大多数指令都是单周期或双机器周期指令,只有乘法指令(MUL,multiply)和除法指令(DIV,divide)需要四个机器周期才能完成。
单字节双周期指令的取指、执行时序如图5.2(C)所示。
共有四次取指,但只有第一次是有效的,后三次都被丢弃。
在这类指令中,有一个例外,即MOVX 指令,它的取指和执行时序如图5.2 (D)所示,当读取和执行MOVX指令时,在第二个机器周期的没有了两次取指操作,并且,在第二个机器周期的S1P2、S2P1期间,ALE信号也不会出现。
5.2.2 单片机访问外部存储器的时序单片机外部的存储器可分成两种,即程序存储器和数据存储器,程序存储器一般都是只读,而数据存储器则可读、写。
由于单片机系统中外部数据存储器和I/O端口是统一编址的,读、写外部数据存储器的时序和读写I/O 端口的时序完全一样。
A T89S51单片机片内有4k可在线编程的程序存储器,当程序超过4K时,就必须扩展外部程序存储器,AT89S51单片机最大可扩展64K的外部程序存储器。
当单片机CPU从外部程序存储器取指令时,PCH(A15~A8)由P2口输出;PCL(A7~A0)由P0口输出,读取的指令代码也由P0口输入,此时,P0分时复用作地址/数据总线,为了将P0口的地址/数据信息分开,单片机同时输出一个地址锁存允许信号ALE(Address Latch Enable),用于锁存P0口的地址信息。
AT89S51单片机外部程序存储器的读时序可分成两种情况,即读MOVX类指令时的情况和读其它类指令的情况,具体的时序如图 5.3(a)、(b)所示。
当读取的不是MOVX类指令时,读外部程序存储器时序如图5.3(a)所示。
每一个机器周期中,地址锁存允许信号ALE两次有效,在ALE由高变低时,出现在P0口的信息总是有效地址PCL,可用外部地址锁存器将PCL 锁存起来,形成地址总线的A7~A0;/PSEN(program store enable)也是每个机器周期两次有效,用于选通外部程序存储器,使指令送到P0总线上,由CPU取入;P2口输出PCH,形成地址总线的高8位,即A15~A7;P0口交替出现地址信息PCL和指令代码,即在ALE的下降沿出现地址信息,在/PSEN有效时出现的是指令代码。
这种情况下,若专用功能寄存器AUXR中的DISALE位为0,ALE有效信号会以振荡器频率(的1/6)的恒定速率出现在引脚上。
ALE信号,主要有两个功能,一个是用于锁存出现在P0口的PCL,另一个是用来作为外部时钟或定时脉冲。
当读取的指令是MOVX类指令时,读外部程序存储器时序如图5.3(b)所示。
MOVX类指令是单字节双周期指令,即需要两个机器周期才能完成。
在第一个周期的S5状态,ALE由高变低,P0总线上出现的将不再是有效的PCL值,而是一个有效的地址信息,若执行的是MOVX @DPTR类指令,则此有效的地址信息为地址DPL 的值,同时,在P2口出现的信息是有效的DPH值;若执行的是MOVX @Ri类指令,此有效的地址信息为Ri 的内容,同时在P2口线上出现的将是特殊功能寄存器P2口内锁存器的内容。
在第一个机器周期的S6状态,/PSEN 信号将不再出现,且下一个机器周期的第一个ALE有效信号也不再出现。
从图5.3可以看出,执行MOVX类指令需要两个机器周期,ALE信号出现三次,比读非MOVX类指令时少了一次;/PSEN信号出现了两次,比非MOVX类指令少了两次。
读到MOVX指令操作码后,在执行阶段,/RD、/WR)会有效,这时,在P0总线上将出现有效的输入(或输出)数据。
5.3单片机系统中的半导体存储器存储器是单片机系统的一个重要组成部分,其功能主要是存放程序或数据。
存储器有很多种分类方法,如按照制造工艺不同可分为双极型晶体管电路和MOS电路两种,双极型存储器的存取速度快,但集成度低、功耗大;MOS型存储器正好相反,集成度高,功耗低,但速度较慢。
按功能不同,存储器又可分为随机存取存储器(简称RAM,Random Access Memory)、只读存储器(ROM,Read Only Memory)以及可读写ROM三大类,如图5.4所示。
5.3.1随机存取存储器(RAM)随机存取存储器(RAM)在单片机系统中主要用于存放数据,用户程序可随时对RAM进行读或写操作,断电后,RAM中的信息将丢失。
RAM可分为静态RAM(Static RAM,SRAM)和动态RAM(Dynamic RAM,DRAM)两种。
SRAM中的内容在加电期间存储的信息不会丢失;而DRAM在加电使用期间,当超过一定时间时(大约2ms),其存储的信息会自动丢失。
因此,为了保持存储信息不会丢失,必须设置刷新电路,每隔一定时间对DRAM进行一次刷新。
与SRAM相比,DRAM具有集成度高、功耗低、价格低等优点,但因为其需要刷新电路,与CPU进行联接时比SRAM复杂。
静态RAM虽然集成度低、功耗高、但由于和CPU的接口电路简单,在单片机系统中被广泛采用。
SRAM在单片机系统中主要用作数据存储器,常见的芯片有6116、6264、628128 等。
5.3.2只读存储器(ROM)只读存储器(ROM)在单片机系统中主要用作外部程序存储器,其中的内容只能读出,不能被修改,断电情况下,ROM中的信息不会丢失。
按照制造工艺的不同,ROM可分为如下几种:(1)掩膜ROM。
掩膜ROM是在工厂生产的时候,通过“掩膜”技术将需存储的程序等信息由厂家固化在芯片内,这种ROM制成后便无法改变其中内容,掩膜ROM的成本低,适用于做成固定的、成批生产的程序存储芯片。
(2)紫外线擦除的可编程ROM又称EPROM(Erasable PROM)。
这种芯片上开有一个小窗口,紫外线通过小窗口照射内部电路可以擦除内部的信息,芯片内的信息被擦除后可重新进行编程,常见的芯片有27C32、27C64、27C128、27C512等,EPROM在单片机系统中常用作外部扩展的程序存储器。
(3)OTP型PROM。
OTP(One Time Programmable)型PROM(Programmable ROM)在出厂时不写入信息,用户可根据自己的需要将信息写入其中,但只能写入一次,即一次写入后不能再写入,这种存储器常被集成到单片机内部,目前有许多OTP型的单片机,OTP型的存储器很少见。
5.3.3非易失性随机存储器(NVRAM)非易失性(Nonvolatile)随机存储器(NVRAM)是指可电擦除的存储器,它们具有RAM的可读、写特性,又具有ROM停电后信息不丢失的优点,在单片机系统中既可作程序存储器,也可作数据存储器用。
这类芯片主要有EEPROM或EEPROM(Electrically Erasable PROM)和Flash。
按接口方式不同,NVRAM 又可分成两种,即并行接口和串行接口。
并行接口的芯片因需要封装很多条的数据线和地址线,容量一般较小。
串行接口的芯片一般只用二条或三条线和CPU交换数据,因此,容量一般很大。
并行接口的芯片在单片机系统中即可用作程序存储器,也可用作数据存储器,而串行接口的芯片只能用作数据存储器。
5.3.4存储器的主要参数存储器的主要性能参数有三个,即存储容量、存取周期和功耗。
(1)存储容量。
存储器是由许多存储单元组成,每个存储单元又由若干存储元组成,每个存储元存放1位二进制代码。
存储容量是表示存储器存放信息量的指标。
存储容量越大,所能存储的信息就越多。
一个存储器芯片的容量常用有多少个存储单元以及每个存储单元可存放多少位二进制数来表示。
例如,某存储器芯片有1024个单元,每个存储单元可存放4位二进制数,则常以1024×4表示该存储器芯片的容量。
容量的单位用K表示,1K 即表示1024(210)个存储单元,这样,上述存储器芯片的容量便可记作1K×4。
在单片机系统中,存取数据时常以字节(Byte)为单位,一个字节规定由8个二进制位组成,因此,单片机中的数据存储器一般情况下每个单元都是由8个存储元组成,表示存储器容量时更常见的是KB。
(2)存取周期。
存储器从接收到寻找存储单元的地址码开始,到它取出或存入数据所需要的时间,称为存取周期,这是用以表示存储器工作速度的重要指标。
MOS型存储器的存取周期约为100~300ns。
(3)功耗。
每个存储器芯片的功率称为功耗,单位为mW/芯片。
功耗又分为工作功耗和维持功耗。
维持功耗是存储器未选通时,处于低功耗、高输出阻抗、后备状态下时的功耗,芯片被选通后,它能自动进入读/写工作状态,对DRAM而言,维持功耗要比工作功耗小1~2个数量级。
有时功耗的单位为μW/b (每存储位的功耗)。
5.3.5存储器容量的计算芯片存储容量的识别与计算。
对于并行接口的存储器芯片,由地址线的条数可以确定芯片包含的存储单元数,由数据线的条数可以确定每个单元包含的存储元的数量。