第6章 MCS-51系列单片机硬件结构
6.1概述
将图1-1微机系统某些芯片具体化后,图1-1变为图6-1。
图6-1 单片机系统图
将虚线框部分做成独立产品,此即所谓单片机。单片机的特点:除CPU之外还集成有不少功能部件。依数据总线位数,分别有8位,16位,32位单片机。
在一般工业领域,8位单片机仍然是目前应用最广的单片机。在众多通用8位单片机中,以MCS-51系列产品最大,派生产品较多,成为单片机应用中的主流系列。Intel公司MCS-51系列分为51、52、151和251四个子系列。本书选择了它们的基础型号即8051单片机进行介绍。这是为了使本书所授内容适用于8051系列单片机的所有其它型号,当然也适用Intel公司的MCS-51系列。
6.2 MCS-51单片机内部结构
MCS-51是我国目前使用较多的一种单片机系列,它是由Intel公司在1980年推出的8位高档单片机系列,其内部结构如图6-2所示,现分述各部分的组成。
图6-2 8051单片机结构框图
1.中央处理器CPU
这是单片机的核心,它完成运算和控制功能。其工作原理如图1-4。 2.内部数据存储器RAM
MCS-51系列单片机中51子系列有128个字节单元,地址为00~7FH;52子系列有256个字节单元,地址为00~0FFH。
3.内部程序存储器ROM
MCS-51单片机内有4KB掩膜ROM,这些只读存储器用于存放程序、原始数据或表格,所
以称为程序存储器,8751单片机片内有4KB的EPROM型只读存储器,8752有8KB的EPROM。8031单片机内没有ROM。
4.特殊功能寄存器SFR(SFR,Special Function Register)
MCS-51内部的I/O口锁存器以及定时器,串行口、中断等各种控制寄存器和状态寄存器都称为特殊功能寄存器,他们的地址离散地分布在80H~0FFH特殊功能寄存器空间。
(1)串行口
MCS-51系列单片机有一个全双工的串行I/O口,以完成单片机和其他计算机或通信设备之间的串行数据通信,单片机使用P3口的RXD和TXD两个管脚进行串行通信。
(2)定时器/计数器
MCS-51系列单片机内部有两个16位的加1计数的定时/计数器T0、T1,以完成定时和计数的功能。52子系列还有定时器/计数器T2。
(3)中断系统
中断系统即第5章提到的中断控制器。MCS-51系列单片机内部有很强的中断功能,以满足控制应用的需要。它共有5个中断源,即外部中断源2个,定时/计数器中断源2个,串行中断源1个。52子系列中断源还有定时/计数器T2。
(4) 并行口
MCS-51单片机内部共有四个输入输出口,一般称为I/O口,即P0、P1、P2、P3口,每个口都是8位,见图6-2。原则上四个口都可以作为通用的输入输出口。对于图6-1的单片机系统,P3、P2和P0用来形成系统总线,不能作为接口用,只有P1口可作为通用的I/O口使用。
5.CPU内部总线和外部总线
CPU通过内部总线与单片机各个内部部件连接。见图6-2.
外部总线即图6-1的系统总线,系统总线由P3、P2、P0经总线形成电路生成(见第2章图2-1)。包括由P2口和P0口形成的16位地址总线AB(P0分时复用,此时输出低8位地址);由P0口组成的数据总线DB(P0分时复用,此时P0为DB);由PSEN、EA、ALE和P3口部分管脚(读信号RD及写信号WR)组成的控制总线CB。
6.时钟电路
外接晶振,产生单片机所需时钟信号。
6.3 MCS-51系列单片机引脚及其功能
MCS-51系列单片机有40个引脚的双列直插式(DIP)塑料封装的芯片,各个引脚均有其特定的用途,其引脚示意及功能分类如图6-3所示。各部分引脚定义如下:
图6-3 MCS-51单片机引脚及总线结构 ① 电源部分。主电源引脚Vcc和Vss Vcc(40脚):接+5 V电源正端; Vss(20脚):接+5 V电源地端。
② 晶振部分。外接晶体引脚XTAL1和XTAL2
XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHMOS单片机,该引脚作为外部振荡信号的输入端。
XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端;对于CHMOS芯片,该引脚悬空不接。
③ 控制信号。控制信号引脚有RST/VPD、ALE/PROG、PSEN和EA/VPP等4种形式。 RST/VPD(9脚):Vcc供电期间,此脚为RST,即RESET,是复位信号,高电平有效。该引脚保持两个机器周期高电平,就能使单片机可靠复位。当Vcc失电期间,此脚为VPD,备用电源输入脚,为单片机片内RAM提供电源,以保护其中内容。
ALE/PROG(30脚):地址锁存有效信号输出端。
第一功能称为“低8位地址锁存输出允许信号”,即ALE。ALE与P0口要联合理解:当ALE输出负跳变时,P0口输出恰是低8位地址(见图2-7到图2-9),因此,ALE用于锁存出现在P0口的低8位地址;ALE输出低电平时P0作为数据总线DB使用。这是设计单片机总线形成电路的依据,第2章图2-1即源于此说。ALE脚每机器周期输出两个脉冲信号。
第二功能用于在EPROM编程时,即PROG。作为编程脉冲输入端。当固化内部EPROM时,从该管脚输入编程脉冲信号。
EA/VPP(31脚):读外部程序存储器允许/EPROM编程电源引脚。
第一功能EA,用于输入从外部程序存储器取指或从内部程序存储器取指的选择信号。当EA接高电平时,将从内ROM开始访问,但地址范围超过内部ROM的最大容量(4K字节)时,将自动转向外ROM取指令;EA接低电平时,将直接从外ROM开始取指,即所有指令均在片外读取。
第二功能VPP,用于在EPROM编程时,即当固化内部EPROM时,从该管脚输入编程电源。 PSEN(29脚):程序存储允许输出端。用于输出外部程序存储器选通信号。PSEN输出有效(低电平),表示CPU要读外部程序存储器。在读取片内程序存储器时,PSEN输出无效(高电平)。
④ 并行输入/输出(I/O)口。MCS-51单片机共有4个8位I/O口,称为P0口、P1口、P2口及P3口,总共32个引脚。每个口的引脚为8个。
P0口(39脚~32脚):P0.0~P0.7统称为P0口。
P1口(1脚~8脚):P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。 P2口(21脚~28脚):P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。 P3口(10脚~17脚):P3.0~P3.7统称为P3口。 并行I/O口应用要点如下:
P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用I/O接口。当P0口作为地址/数据分时复用总线时,注意和ALE脚联合理解:当ALE输出高电平或负跳变时,P0口输出地址;而ALE输出低电平时,P0口为数据总线DB,可以输入或输出数据。P0口作为通用I/O使用时是一准双向口。P0口每一个引脚可驱动8个TTL门电路。
P1口为准双向口。从功能上来看P1只有一种功能,即通用I/O接口,具有输入、输出、端口操作3种工作方式,每1位口线能独立地用作输入或输出线。P1口每一个引脚可驱动4
个TTL门电路。
P2口也是一准双向口,可作为高8位地址输出口,也可作为通用I/O接口。作为通用I/O接口,其工作原理与P1相同,也具有输入、输出、端口操作三种工作方式,负载能力也与P1口相同。
P3口除了可作为通用准双向I/O接口外,每1根线还具有第2功能。当P3口作为通用I/O接口时,在这种情况下,P3口仍是1 表6-1 P3口的第二功能 个准双向口,它的工作方式、负载能力均与P1、P2口相同。当P3口作为第2功能时,各引脚功能见表6-1所示。
四个口的各个引脚都可作为通用I/O使用,但当某一引脚作为输入使用前,必须先使该引脚置“1”(这是由4个8位并行I/O口的结构所决定的,此种状态下的各口也被称为准双向口)。单片机复位后,四个口的32个引脚均为高电平(已自动置为1),但用户在自己的初始化程
序中,应考虑到所使用的引脚是否符合要求。
6.4 时钟电路与时序
6.4.1MCS-51单片机时钟和时钟电路
时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机内有一个反相放大器,XTAL1、XTAL2引脚分别为该反相放大器的输入端和输出端,该反相放大器与片外振荡晶体一起构成了一个自激振荡器,产生的时钟送至单片机内部的各个部件。单片机的时钟产生方法有内部时钟方式和外部时钟方式两种,大多数单片机应用系 统采用内部时钟方式。 1.内部时钟方式
最常用的内部时钟方式是采用外接晶振和电容组成的并联谐振回路,不论是HMOS还是CHMOS型单片机,其并联谐振回路及参数相同,如图6-4所示。 MCS-51单片机允许的振荡晶体可在1.2MHz~24MHz之间选择,一般取11.0592MHz。电容C1、C2的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定影响。C1、C2可在20pF~lOOpF之间选择,一般当外接晶振时典型取值为30pF。
在设计印刷电路板时,晶体和电容应尽量靠近单片机XTALl、XTAL2引脚安装,以减少寄生电容,更好地保证振荡器稳定和可
靠地工作。为了提高温度稳定性,应采用NPO电容。 图6-4 内部时钟方式
2.外部时钟方式 外部时钟方式是利用外部时钟源直接接入XTALl或XTAL2。由于HMOS和CHMOS单片机内部时钟进入的引脚不同,其外部振荡信号源接入的方式也不同。CHMOS型单片机由XTAL1进入,HMOS型单片机由XTAL2进入,因而有两种不同的外部时钟方式信号源接入方法。由于XTAL2端的逻辑电平不是TTL电平,故外接一个4.7k~lOk的上拉电阻。一般当整个单片机系统已有时钟源或者为了取得时钟上的同步时,
可以考虑使用此方式。 图6-5 外部时钟方式 6.4.2 MCS-51单片机CPU时序
1.单片机的工作周期
单片机有了硬件和软件就可以在控制器发出的控制信号作用下有条不紊地工作,控制信号必须定时发出,计算机内部必须有一个准确的定时脉冲。这种定时脉冲是由石英晶体振荡器产生的,并组成下面几种工作周期,如图6-6所示。
图6-6 振荡周期、状态周期、机器周期和指令周期
振荡周期:是指为单片机提供时钟脉冲信号的振荡源的周期。即由单片机的晶体振荡器产生的时钟脉冲的周期,即晶振周期。
状态周期:每个状态周期为振荡周期的2倍,是振荡周期经二分频后得到的。在一个状态周期中有两个时钟脉冲,通常称它为P1、P2。
机器周期:一个机器周期包含6个状态周期S1~S6,也就是12个振荡周期。在一个机器周期内,CPU可以完成一个独立的操作,即指令执行的基本时间单位。
指令周期:指CPU执行一条指令(含取指)所需的全部时间。它不是一个常数,不同的指令有不同的执行时间。MCS-51单片机的所有指令可分为单(机器)周期指令、双周期指令和四周期指令。
2.单片机时序
(1) 单片机原始时序
因为单片机系统的存储器结构采用哈佛结构(详见3.4.1节),外部存储器分外部程序存储器和外部数据存储器。两者地址分属不同的存储器空间。所以“存储器读操作”分为“读外部程序存储器”和“读外部数据存储器”两种。图2-3分解成读外部程序存储器时序和读外部数据存储器时序,分别见图6-7,图6-8。写外部数据存储器时序,见图6-9。
此三图来自单片机技术资料。
图6-7读外部程序存储器时序图