龙空技术网

探知MCS-51单片机内部结构,带你准确把握其工作原理

电子工业出版社 4750

前言:

如今同学们对“51单片机与52单片机有哪些相同与不同之处”大体比较珍视,你们都想要剖析一些“51单片机与52单片机有哪些相同与不同之处”的相关资讯。那么小编也在网络上搜集了一些有关“51单片机与52单片机有哪些相同与不同之处””的相关内容,希望各位老铁们能喜欢,大家快快来学习一下吧!

/**/ 第2章 MCS-51单片机的基本结构

本章教学基本要求

1.掌握MCS-51单片机的内部结构及功能,熟悉MCS-51单片机P0~P3端口的特性,掌握MCS-51单片机的存储器的结构。

2.了解MCS-51单片机的时钟电路、复位电路和总线时序。

重点与难点

1.MCS-51单片机P0~P3端口的特性及使用方法。

2.MCS-51单片机的存储器的结构及使用方法。

2.1 MCS-51单片机的组成

MCS-51单片机是美国Intel公司生产的一系列单片机的总称,这一系列单片机包括许多品种,如8031、8051、8751、8032、8052、8752等,其中8051是最早、最典型的产品,该系列其他单片机在8051的基础上进行了功能的增加或减少,所以人们习惯于用8051来称呼MCS-51单片机。

MCS-51单片机采用哈佛结构,采用超大规模集成电路技术把具有数据处理能力的中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、多种I/O端口和中断系统、定时器/计数器等功能集成到一块硅片上构成了一个小而完善的计算机系统,其内部结构如图2-1所示。

中央处理器(CPU):是整个单片机的核心,具有8位数据宽度,能处理8位二进制数据。CPU负责整个单片机的正常工作,完成算术运算、逻辑运算、输入/输出控制、中断处理等操作。

程序存储器:一般大小为4KB,主要用于存放程序代码和一些原始数据或表格。

定时器/计数器:两个16位定时器/计数器可实现定时或计数功能。有些单片机还有第三个定时器,用于特殊用途,如自动重装载、波特率设置等。

并行I/O端口:4组8位I/O端口(P0、P1、P2和P3),用于实现与外部设备的数据交换和控制。

全双工串行口:内置一个全双工串行口,用于与其他芯片或设备的串行数据传送,该串行口既可以用作异步通信收发器,也可以用作同步移位器。

中断系统:有5个中断源,分别为两个外部中断、两个定时器/计数器中断和一个串口通信中断,并具有2级的优先级别。

图2-1 MCS-51单片机的内部结构

时钟电路:用于产生整个单片机运行的脉冲时序,MCS-51单片机多数须外接振荡电容,但部分MCS-51单片机内置了时钟电路,片外不用配置振荡电容。

数据存储器(RAM):有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能存放控制指令,用户只能访问,不能存放用户数据。所以,用户能使用的RAM只有128个单元,可存放读/写的数据、运算的中间结果或用户定义的字型表。数据存储器结构见表2-1。

表2-1 数据存储器结构

MCS-51单片机包含51子系列和52子系列,如8051、8052等,其中52系列比51系列功能多一些,除基本结构相同外,不同之处主要体现在:数据存储器容量为256字节(51系列为128字节);程序存储器容量为8~32KB;有3个16位定时器/计数器;有6个中断源。在本书给出的MCS-51单片机的电路连接图或参考程序中,没有严格区分单片机AT89C51和AT89S51。

所有MCS-51单片机都包含了以上基本结构,编程基本兼容。但是,MCS-51单片机随着芯片技术的不断发展,内部结构越来越复杂,很多芯片除保持内部数据总线、地址总线和数据存储格式仍然为8位外,数据存储器和程序存储器容量、外部I/O端口控制、外部总线接口等发生了很大的变化。AD公司的ADU812集成了看门狗、温度采集模块等;C8051F系列的I/O端口进行了扩展,具备了串行总线接口、USB总线接口;P8xC591系列单片机内部集成了CAN总线接口。

2.1.1 引脚定义

MCS-51单片机中的80C51和80C52常采用40Pin的DIP封装或者44Pin的PLCC封装,如图2-2所示。

图2-2 80C51/80C52的引脚分布与封装图

1.电源及时钟信号引脚

Vcc:正常工作或对内部EPROM烧写程序时,接+5V电源。

GND:地。

XTAL1:时钟信号输入引脚,内部振荡电路的输入端。

XTAL2:时钟信号输出引脚,内部振荡电路的输出端。

2.输入/输出引脚

MCS-51单片机有4组8位I/O端口:P0、P1、P2和P3端口,P1、P2和P3为准双向端口,P0端口则为双向三态输入/输出端口。在DIP封装中,引脚39~32为P0.0~P0.7输入/输出引脚,引脚1~8为P1.0~P1.7输入/输出引脚,引脚21~28为P2.0~P2.7输入/输出引脚,引脚10~17为P3.0~P3.7输入/输出引脚。

MCS-51单片机的P0端口可以作为地址总线低8位和数据总线,P2端口可作为地址总线高8位,其逻辑结构如图2-3所示。电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,还有一个数据输出的驱动和控制电路。这两组线用作CPU与外部存储器(程序/数据)和I/O端口扩展时的数据总线和地址总线,其中P0、P2端口可以构成16位地址总线。此外,在读取外部存储器数据时,P0端口既作为低8位地址总线,也作为8位数据总线使用,即地址总线与数据总线采用分时复用,这一特点与8086微处理器的AD0~AD15相同。CPU输出地址时,由地址锁存信号ALE通知地址锁存芯片(如74LS573/74LS373)锁存P0.0~P0.7引脚上的地址信息。

图2-3 P0与P2端口的逻辑结构

P2端口作为外部数据存储器或程序存储器的地址总线的高8位输出(A8~A15),选通高位地址。P0端口作为低8位地址总线的输出,选通低位地址。当读取外部存储器数据时,P0端口送出低8位地址,同时P2端口送出高8位地址,合成16位地址信息。此时,ALE控制时序,先将低8位地址锁存,等外部存储器获取到地址信息后,P0端口随即送出或者读取8位数据。外部的程序存储器由PSEN信号选通,数据存储器则由和读/写信号选通。MCS-51单片机有16根地址线,故最大可外扩64KB的程序存储器和数据存储器。

图2-4所示为P1和P3端口逻辑结构。P1端口为8位准双向端口,每一位均可单独定义为输入或输出端口。当作为输入端口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至“1”,此时该端口输出1;当0写入锁存器,Q(非)=1,T2导通,输出0。

作为输入端口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,因此P1端口称为准双向端口。作为输入端口使用时,有两种情况,一种是读锁存器的内容,进行处理后再写到锁存器中,这种操作是读→修改→写操作,如JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。另一种是读P1端口状态时,打开三态门G2,将外部状态读入CPU。

P3端口为准双向端口。P3端口的输入/输出、锁存器、中断、定时器/计数器、串行口与特殊功能寄存器有关。P3端口的第一功能和P1端口一样,可作为输入/输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。P3端口第二功能表见表2-2。在MCS-51单片机实际应用场合中,P3端口的第二功能显得更为重要。

图2-4 P1和P3端口逻辑结构

表2-2 P3端口第二功能表

当P3端口工作为普通I/O端口时,第二功能信号线应保持高电平,与非门开通,以维持从锁存器到输出端口的数据输出通路畅通无阻;而使用P3端口的第二功能时,对应的锁存器置高电平,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。当P3端口的某个引脚为第二功能信号输入时,在输入通路增设一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得,而作为I/O端口的输入端时,取自三态缓冲器的输出端。

3.控制线

RST:复位信号复用引脚。当89C51芯片通电后,时钟电路开始工作,在RST引脚上出现24个时钟周期(或者两个机器周期)以上的高电平就可以实现复位操作,系统恢复到初始状态。通电时,考虑到有一定的起振时间,该引脚上的高电平必须维持10ms以上才能保证有效复位。初始化后,程序计数器指向0000H,P0~P3端口全部为高电平,堆栈指针写入07H,指明堆栈的入口地址,其他专用寄存器被清0。RST由高电平下降为低电平后,系统即从0000H地址开始执行程序。

Vcc掉电期间,该引脚如果接备用电源(+5V±0.5V),可用于保存片内RAM中的数据,当Vcc下降到某规定值以下,开始向片内RAM供电。

:地址锁存有效信号输出端。当访问外部程序存储器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。当外部程序存储是EPROM时,在编程期间,将用于输入编程脉冲。

:片外程序存储器读选通信号输出端,也称片外取指信号输出端,该信号在每个机器周期内两次有效。当访问外部程序存储器时,此脚输出低电平选通信号。8位或16位地址数据将出现在P0和P2端口上,外部程序存储器则把指令数据放到P0端口上,由CPU读入并执行。

EA/VPP:片外程序存储器的选用端,该引脚EA为低电平,则读取外部程序存储器指令。当EA为高电平并且程序地址小于4KB时,读取内部程序存储器指令,而超过4KB地址则读取外部指令。对内部无程序存储器的8031芯片,EA保持接地。另外,在对单片机内部EPROM进行编程时,EA/VPP引脚还要加上12V的编程电压。

2.1.2 CPU

MCS-51单片机的CPU由运算器和控制器构成,是单片机的核心部分。它的组成和工作原理与多数CPU有相似之处,具体介绍如下。

1.运算器

运算器以算术逻辑单元(ALU)为核心,包括累加器(A)、寄存器(B)、暂存寄存器、程序状态字寄存器(PSW)等部件。它的功能是完成算术和逻辑运算、位变量处理和数据传送等操作。

(1)算术逻辑单元由加法器和其他逻辑电路(如移位电路、控制门电路等)组成。它不仅能完成8位二进制数的加、减、乘、除、加1、减1及BCD加法的十进制调整等算术运算,还能对8位变量进行与、或、异或、循环移位、求补、清零等逻辑运算,并具有数据传送、程序转移以及位处理(布尔操作)等功能。

(2)累加器是一个8位寄存器,是CPU中使用最频繁的寄存器。通过暂存器与ALU相连,向ALU提供操作数并存放运算结果。

(3)寄存器是为ALU进行乘、除法运算而设置的,在乘、除法运算时用来存放一个操作数,也用来存放运算后的一部分结果,不进行乘、除法运算时,还可作为通用寄存器使用。

(4)暂存寄存器暂时存储数据总线或其他寄存器送来的操作数,作为ALU的数据源,向ALU提供操作数。

(5)程序状态字寄存器是一个8位的特殊寄存器,它保存ALU运算结果的特征和处理状态,以供程序查询和判别。其中各位状态信息通常是指令执行过程中自动形成的,也可以由用户根据需要加以改变。PSW各位见表2-3。

表2-3 PSW各位

① CY(PSW.7):进位标志。无符号数运算中,当加法或减法运算最高位有进位或借位时,CY=1;进行加法或减法运算时,最高位无进位或借位,CY=0。CY主要用在多字节的加减法运算中,CY可以写成C。

② AC(PSW.6):辅助进位标志。无符号数运算中,进行加法或减法运算时,低4位向高4位有进位或借位,AC=1;低4位向高4位无进位或借位,AC=0。AC常作为计算机进行BCD码修正的判断依据。

③ F0(PSW.5):用户标志位,无特别意义,供用户自定义。通过软件置位或清0,并根据F0=1或0来反映系统某一种工作状态,决定程序的执行方式。

④ RS1、RS0(PSW.4、PSW.3):工作寄存器组选择位,可用软件置位或清0,用于选定当前使用的4个工作寄存器组中的某一组,具体对应关系见表2-4。

表2-4 RS1、RS0取值与工作寄存器组(R0~R7)的对应关系

⑤ OV(PSW.2):溢出标志位,主要用于有符号数运算,运算结果超出范围时,OV=1;否则,OV=0。如为8位运算,结果超过了8位补码所能表示的范围时,OV=1。

⑥ P(PSW.0):奇偶标志位。在执行指令后,单片机根据累加器的8位二进制数中“1”的个数的奇偶,自动给该标志置位或清0。若累加器的8位二进制数中“1”的个数为奇数,则P=1;若累加器A中“1”的个数为偶数,则P=0。该标志对串行通信的数据传输非常有用,通过奇偶校验可检验传输的可靠性。

2.控制器

控制器由程序计数器、指令寄存器、指令译码器、数据地址指针(DPTR)、堆栈指针等组成。其功能是对来自程序存储器中的指令进行译码,通过定时控制电路,在规定的时刻发出各种操作所需的内部和外部的控制信号,使各部分协调工作,完成指令所规定的功能。

1)程序计数器(Program Counter, PC)

PC是一个16位的专用寄存器,并具有自动加1的功能。当CPU要取指令时,PC的内容送到地址总线上,从而指向程序存储器中存放当前指令的单元地址,以便从程序存储器中取出指令,加以分析、执行。同时PC自动加1,指向下一条指令,以保证程序按顺序执行。也可以通过控制转移指令改变PC的值,实现程序的转移。

2)指令寄存器(Instruction Register, IR)

指令寄存器是一个8位寄存器,用于暂存待执行的指令,等待译码。指令译码电路是对指令寄存器中的指令进行译码,将指令转变为执行此指令所需要的电信号,再经定时控制电路定时产生执行该指令所需要的各种控制信号。

3)指令译码器(Instruction Decoder, ID)

指令译码器将指令寄存器中的指令进行译码,产生一定序列的控制信号,完成指令所规定的操作。

4)数据地址指针(DPTR)

数据地址指针(DPTR)是一个16位的专用地址指针寄存器,它由DPH和DPL这两个特殊功能寄存器组成。DPH是DPTR的高8位,DPL是DPTR的低8位。

DPTR用于存放16位地址,可对外部数据存储器RAM 64KB(0000H~0FFFFH)地址空间寻址。

5)堆栈指针(Stack Pointer, SP)

在计算机或单片机中处理子程序调用和中断操作等问题时,通常需要保存返回地址和保护现场信息。在MCS-51单片机中,堆栈用来保存返回地址和保护现场信息,堆栈是在RAM中专门开辟的一个特殊的存储区。堆栈区域的位置就由堆栈指针指定。堆栈的访问原则是先进后出、后进先出,即先进入堆栈的数据后移出堆栈,后进入堆栈的数据先移出堆栈。堆栈一端的地址是固定的,称为栈底;另一端的地址是动态变化的,称为栈顶。堆栈有两种操作方式:数据进栈和数据出栈。进栈和出栈都在栈顶进行。

堆栈主要用来暂时存放数据,有两种情况:一种是CPU自动使用堆栈,当调用子程序或响应中断、处理中断服务程序时,CPU自动将返回地址存放到堆栈中,通过堆栈传递参数。另一种是程序员使用堆栈,用堆栈暂时存放数据。堆栈指针中为栈顶的地址,即指向栈顶。堆栈指针具有自动加1、自动减1功能,当数据进栈时,先自动加1,然后CPU将数据存入;当数据出栈时,CPU先将数据送出,然后自动减1。

2.1.3 存储器

Intel公司的MCS-51单片机的存储器体系采用哈佛结构。在MCS-51单片机中,不仅在片内预留了一定容量的程序存储器、数据存储器以及众多的特殊功能寄存器(SFR),而且还具备外部存储器扩展功能,程序存储器和数据存储器的最大寻址空间均可达64KB,寻址和操作简单方便,其存储器结构如图2-5所示。

图2-5 MCS-51单片机存储器结构

由图2-5可见,MCS-51单片机的存储器在物理上设有四个空间,即内部程序存储器、外部程序存储器、内部数据存储器和外部数据存储器。但由于内、外部程序存储器统一寻址,事实上只有3个逻辑空间,即内、外部统一寻址的64KB程序存储器地址空间、内部256B数据存储器地址空间和外部64KB的数据存储器地址空间,通过指令区分访问内部数据存储器还是外部数据存储器。在访问这3个逻辑空间时,应分别采用不同形式的指令,如MOVC(访问程序存储器)、MOV(访问内部数据存储器)和MOVX(访问外部数据存储器)等。内部数据存储器空间在物理上又包含两部分:对于51子系列单片机(如8031),从00H~7FH共128字节是真正的内部RAM空间,而80H~FFH仅其中20余字节用作特殊功能寄存器(SFR)空间,访问其他字节是无意义的;对于52子系列的单片机(如8032或8052),00H~7FH的含义与51子系列相同,而80H~FFH是内部数据存储器高端地址和特殊功能寄存器(SFR)端口地址的重叠区域。

1.程序存储器

程序存储器(Program Memory)主要用于存放应用程序、表格和常数。由于MCS-51单片机采用16位的程序计数器和16位的地址总线,因而程序存储器可扩展的地址空间为64KB,并且这64KB地址在空间分布范围上是连续和统一的。

单片机应用系统中的程序存储器一般采用半导体只读存储器,即ROM。这种存储器在计算机运行时只能对其执行读操作,即使整机掉电后存于其中的信息也不会丢失,显然适合于存放用户程序、常数和表格等。

MCS-51单片机的程序存储器为固定的只读存储器(ROM)。如8051中含有4KB容量的掩膜ROM,8751中含有4KB容量的EPROM,89C51中含有4KB容量的FlashROM。而8031/8032中不设程序存储器,使用过程中必须外扩ROM。

MCS-51单片机的整个程序存储器可以分为内部和外部两部分,CPU访问外部ROM时,PSEN引脚上产生选通信号。CPU读取内/外部的指令由EA引脚所接的电平决定。

(1)当EA引脚接高电平时,CPU可访问内部和外部ROM,并且程序自内部ROM开始执行,PC值超出内部ROM容量时,会自动转向外部ROM中的程序。

(2)当EA引脚接低电平时,总是寻址外部ROM,且从0000H开始编址,系统全部执行外部ROM中的程序。

所以,内部集成了ROM的8051/8751/89C51等单片机正常运行时,EA引脚应接高电平;而内部无ROM的8031/8032等单片机,外部必须扩展足够容量的专用ROM器件,且EA引脚必须接低电平,以迫使单片机运行时只能从外部ROM读取指令。

2.内部数据存储器

MCS-51单片机的内部数据存储器是最灵活的地址空间,由于集成在芯片内部,因此存取速度快、效率高,但数量少,常用于存放运算的中间结果、数据缓冲以及设置特征标志等。内部数据存储器在物理上分为两个不同的功能区,如图2-6所示。

(1)内部数据区:对51子系列(如8031/8051/AT89C51等)为该地址空间的低128B(00H~7FH),对52子系列(如8032/8052/AT89C52等)为全部256B的存储空间(00H~FFH)。内部数据访问与存储使用指令MOV。以AT89C51为例,内部RAM地址00H~1FH分配给R0~R7寄存器组,具体地址分配见表2-5;内部RAM地址20H~2FH的位地址对应关系见表2-6。

(2)特殊功能寄存器(Special Function Register, SFR)区:地址空间的高128字节(80H~FFH)。对于52子系列,高128字节RAM区与SFR区是重叠的,访问时要通过不同的寻址方式加以区别,即访问高128字节RAM区时使用间接寻址方式,而访问SFR区时,则应使用直接寻址方式。对于51子系列,高128字节RAM区仅为SFR区。8051和8052系列单片机的主要特殊功能寄存器符号与含义见表2-7。

图2-6 MCS-51单片机内部RAM结构

表2-5 工作寄存器组(R0~R7)与内部RAM地址对应关系

表2-6 内部RAM地址20H~2FH的位地址对应关系

表2-7 8051和8052系列单片机主要特殊功能寄存器符号与含义

续表

如果将DPTR寄存器拆分为两个独立的8位寄存器DPH和DPL,则MCS-51单片机主要有27个特殊功能寄存器,其中8051系列有11个寄存器具有位寻址功能,8052系列单片机由于扩展了一个定时器/计数器,则有12个寄存器具有位寻址功能,这些寄存器中的每一位都具有位地址,具有定义的位可以直接按位访问,可进行位寻址的SFR的分布见表2-8所列。需要注意的是,PC不占据RAM单元,在物理上是独立的,因此是不可寻址的寄存器。对专用寄存器只能使用直接寻址方式,编写程序的时候既可使用寄存器符号,也可使用寄存器单元地址。内部RAM及特殊功能寄存器各存储单元之间的数据传送用MOV指令。

表2-8 8051和8052系列单片机中可进行位寻址的SFR的分布

续表

注:表2-8中“—”表示该位没有使用,不能用指令进行读写操作;“*”表示该二进制位没有特殊含义,仅仅代表该寄存器的某一个二进制位,可以通过指令读写该位数据。

表2-5中,R0~R7寄存器组在汇编程序中可以通过设置RS1、RS0两个位,将寄存器分配到不同工作寄存器区,不同工作寄存器区的通用寄存器Rn(n=0~7)尽管编号n相同,但具有不同的RAM地址,因此通用寄存器共有8×4=32个。

表2-7中,寄存器T2CON、T2MOD、RCAP2L、RCAP2H、TL2、TH2是8052系列单片机扩展的定时器/计数器2的寄存器,在8051系列单片机中不存在。

由表2-8可知,能够按位访问的SFR其字节地址均为8的倍数,且每个SFR的字节地址为该寄存器最低位的位地址。比如:P2寄存器的字节地址为0A0H,最低位P2.0的位地址也是0A0H。由表2-6和表2-8可知,MCS-51单片机可以按位访问的位地址范围为00H~0F7H,其中位地址0AEH、0BEH、0BFH和0D1H共计4个位单元没有定义,读写操作没有意义;而ET2(0ADH)、PT2(0BDH)和T2CON的8个位适合具备定时器/计数器2的8052系列单片机,8051没有定时器/计数器2,读写操作没有意义。

3.外部数据存储器

由于MCS-51单片机内部数据存储器只有128B,往往不够用,这就需要扩展外部数据存储器。外部数据存储器最多可以扩到64KB,16位数据指针寄存器作为间接寻址的寄存器的地址指针,其寻址范围为64KB。当外部数据存储器小于256B时,可用R1、R0作为间接寻址寄存器的地址指针。访问外部数据存储器或扩展I/O口可用MOVX指令。

2.2 MCS-51单片机时钟电路与总线时序

无论是通用微型计算机还是单片机,CPU所有的工作都是在时钟信号控制下进行的,每执行一条指令,CPU的控制器就要发出一系列特定的控制信号,这些控制信号在时间上的先后次序就是CPU的工作时序。

2.2.1 时钟电路

MCS-51单片机的时钟连接有两种方式,一种是内部时钟方式,但须在XTAL1和XTAL2引脚外接石英晶体(2~24MHz)和振荡电容,电容C1和C2对频率有微调作用,电容量的选择范围为5~30pF,如图2-7(a)所示。另一种是采用外部时钟方式,即将XTAL2引脚悬空,外部时钟信号(外部振荡器提供的信号)从XTAL1引脚输入,如图2-7(b)所示。

图2-7 MCS-51单片机的时钟连接方式

在单片机应用电路设计中,时钟电路器件应该尽可能靠近CPU对应引脚。如果CPU无法正常工作,可通过示波器检测CPU时钟引脚是否有一定幅值的时钟信号,如果有,则时钟电路正常。

2.2.2 总线时序

MCS-51单片机的振荡频率经过内部二分频以后得到的信号周期,称为状态周期,即一个状态周期包括两拍的时钟周期。机器周期就是计算机完成一种基本操作所需的时间。MCS-51单片机的机器周期由6个状态周期组成,即S1~S6,而每个状态又分为两拍,称为P1和P2,因此一个机器周期中的12个振荡周期常可表示为S1P1、S1P2、…、S6P1、S6P2。若采用12MHz的晶体振荡器,则每个机器周期为12×106/(12×106)=1μs,若采用6MHz晶体振荡器,则每个机器周期为2μs。

在MCS-51单片机指令系统中,有单字节指令、双字节指令和三字节指令。每条指令的执行时间分别占用1个或几个机器周期。单字节指令和双字节指令都可能是单机器周期和双机器周期的,而三字节指令都是双机器周期的,只有乘、除法指令占用4个机器周期。

每一条指令的执行都包括取指令和执行指令两个阶段。在取指令阶段,CPU从程序存储器中取出指令操作码及操作数,然后执行这条指令的逻辑功能。对于绝大部分指令,在整个指令执行过程中,ALE是周期性的信号,如图2-8所示。在每个机器周期中,ALE信号出现两次:第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间。ALE信号的有效宽度为1个S状态。每出现一次ALE信号,CPU就进行一次取指令操作。

图2-8 MCS-51单片机的机器周期

对于单机器周期指令,从S1P2开始把指令码读到指令寄存器。如果是双字节指令,则在同一个机器周期的S4读入第二字节。对单字节指令,在S4仍有一次读指令码的操作,但读入的内容被忽略(不处理),并且程序计数器不加1,这种无效的读取称为假读。在下一个机器周期的S1才真正读取此指令码。

2.3 复位电路

复位是单片机的初始化操作,如对AT89C51单片机的复位引脚RST加上大于24个时钟振荡周期的高电平就可使其正常复位。

当AT89C51单片机进行复位时,PC初始化为0000H,使AT89C51单片机从程序存储器的0000H单元开始执行程序。除了进入系统的正常初始化,当程序运行出错或操作错误使系统处于死锁状态时,也须按复位键让RST引脚置为高电平,使AT89C51单片机摆脱“跑飞”或“死锁”状态而重新启动。

除PC外,复位操作还对其他一些寄存器有影响,主要寄存器复位时的状态见表2-9。

表2-9 主要寄存器复位时的状态

AT89C51单片机的复位是由外部的复位电路实现的。复位电路通常采用上电自动复位和按钮复位两种方式,如图2-9所示。

图2-9 AT89C51单片机的外部复位电路

上电自动复位是通过外部复位电路的电容充电实现的。当电源接通时,电容C1充电,RST处于高电平,且时间远超过1ms,从而确保单片机正常复位;当电容充电完毕时,RST被电阻R1下拉到低电平,单片机开始正常运行。

需要注意的是,几乎所有单片机都需要外接复位电路,但不同厂家的产品,其复位逻辑电平可能不同,如新华龙C8051F020单片机,尽管该单片机仍然是51内核,但CPU采用低电平复位,即RST引脚接低电平时单片机复位,该引脚接高电平时为正常运行状态。

2.4 MCS-51单片机的最小系统

MCS-51单片机硬件资源较为丰富,单个芯片配合一定的外围电路就能构成一个最小系统,实现简单的应用,图2-10是MCS-51单片机的最小系统电路图。一般来说,单片机的最小系统包括电源部分(电源正、电源地)、晶振部分(11.0592MHz、12MHz、6MHz)、复位电路。将以上三个电路正确连接,单片机就能正常工作。EA有两种接法,一是接高电平,此时单片机采用内部程序存储器,不使用外部程序存储器,最小系统在启动后执行单片机内部程序存储器中的程序;另一种是接低电平,单片机采用外部程序存储器,此时就不是一个最小系统,而是单片机扩展系统了。

最小系统中主要电路构成介绍如下。

(1)电源电路。引脚Vcc(引脚40)接+5V电源,引脚GND(引脚20)接地线。为提高电路的抗干扰能力,1个瓷片电容和1个电解电容通常被接在引脚Vcc和接地线之间。

(2)程序存储器选择电路。如前所述,Atmel公司生产的8051兼容芯片具有多种容量的内部程序存储器,因此在使用中不需要再扩展外部程序存储器,这样在单片机应用电路中,引脚EA(引脚31)接高电平,单片机在复位后从内部ROM的0000H开始执行程序。

(3)时钟电路和时序。系统时钟是一切微处理器、微控制器内部电路工作的基础。AT89C51芯片的时钟频率为2~24MHz。单片机内部有1个可以构成振荡器的电路。在这个放大电路的引脚XTAL2和XTAL1接上晶体电容就可以构成单片机的时钟电路。常用时钟电路有内部时钟方式和外部振时钟方式。图2-10中的时钟电路由晶体Y1和电容C2与C3组成。单片机的时钟频率取决于晶体Y1的频率。电容C2与C3的取值范围为20~30pF。

(4)复位电路。对于AT89C51单片机,只要复位引脚RST保持24个时钟周期的高电平,就可以完成复位。为了保证应用系统可靠地复位,通常将复位电路中引脚RST保持10ms以上的高电平。

图2-10 MCS-51单片机的最小系统电路图

最小系统是单片机能够正常运行程序的最低条件,在实际应用中,通常需要进行功能扩展,扩展电路在最小系统基础上使用P0~P3端口的普通I/O功能或P3端口的特殊功能,只要电路设计和程序编写正确,系统就能正常工作。

本章小结

本章首先介绍了MCS-51单片机的组成结构及主要功能部件,详细介绍了引脚功能与特性,着重讨论了存储器的结构,特别是数据存储器的结构和功能,最后介绍了MCS-51单片机的时钟电路、复位电路、总线工作时序及最小系统的电路组成。

思考题与习题

2.1 简述MCS-51单片机各引脚的名称和作用。

2.2 阐述MCS-51 单片机程序存储器的配置,并说明EA引脚的连接电平与访问程序存储器的关系。

2.3 阐述MCS-51单片机数据存储器的配置,如何区别内部和外部数据存储器?

2.4 阐述P0、P1、P2、P3端口的功能。

2.5 在AT89C51单片机中,如果采用6MHz晶振,一个机器周期为______。

2.6 AT89C51单片机的一个机器周期等于_____个时钟振荡周期。

2.7 内部RAM中,位地址为40H、88H的位,它们所在字节的字节地址分别为_____和_____。

2.8 片内字节地址为2AH单元的最低位的位地址是_____,片内字节地址为88H单元的最低位的位地址是_____。

2.9 阐述MCS-51单片机的寄存器PC和DPTR为何采用16位。

2.10 为何MCS-51单片机外部程序存储器和数据存储器允许地址重复?

标签: #51单片机与52单片机有哪些相同与不同之处