MCS-51 单片机的结构和工作原理
一、MCS-51单片机的基本组成
MCS-51单片机芯片有许多种,如8051、8031、8751、80c51、80c31等。它由中央处理器(CPU)、时钟电路、程序存储器(ROM/EPROM)、数据存储器(RAM)、并行I/O口(P0~P3)、串行口、定时器/计数器及中断系统组成。它们通过单一总线连接,并被集成在一块半导体芯片上,即单片微型计算机(Single-Chip Microcomputer)。
二、8051单片机内部结构和功能
中央处理器CPU
中央处理器CPU是单片机内部的核心部件,它决定了单片机的主要功能特性,由运算器和控制器两部分组成。
1、 运算器
运算器是计算机的运算部件,用于实现算术逻辑运算、位变量处理、移位和数据传送等操作。它是以算术逻辑单元ALU为核心,加上累加器ACC、寄存器B、暂存器TMP1和TMP2、程序状态字PSW以及十进制调整电路和专门用于位操作的布尔处理器组成。
(1)算术逻辑单元
算术逻辑单元ALU用来完成二进制数的四则运算和布尔代数的逻辑运算。此外,通过对运算结果的判断影响程序状态标志寄存器的有关标志位。
(2)累加器
累加器ACC为8位的寄存器,是CPU中使用最频繁的寄存器。它既可以用于存放操作数,也可以存放中间结果。MCS-51中大部分单操作数指令的操作数就取自累加器ACC,许多双操作数指令中的一个操作数也取自累加器ACC,单片机中大部分数据操作都通过累加器ACC进行的。
(3)寄存器B
寄存器B是个8位寄存器,是为ALU进行乘除运算设置的。在执行乘法运算指令时,寄存器B用于存放其中一个乘数和乘积的高8位。在执行除法时,用于存放除数和余数。还可以作为一般的寄存器来使用。
(4)程序状态字PSW
程序状态字PSW是个8位的特殊功能寄存器,它的各位包含了程序运行的状态信息,以供程序查询和判断。PSW格式和含义如下:
1) Cy 进位标志位。Cy是PSW中最常用的标志位。由硬件或软件置位和清零。它表示运算结果是否有进位(借位)。如果运行结果在最高位有进位输出(加法)或借位输入(减法)时,则Cy由硬件置“1”;否则Cy被请“0”。
2) AC 辅助(半)进位标志。当执行减法运算时,运算结果产生低四位向高四位进位或借位时,由硬件置“1”;否则清“0”。
3) F0 用户标志位。由用户定义使用。
4) RS1和RS0 工作寄存器组选择位。这两位的值决定选择哪一组寄存器作为当前寄存器组。
5) OV 溢出标志位。
6) 未定义。
7) P 奇偶标志位。P标志表明ACC中1个数的奇偶性。在每条指令执行完后,单片机根据ACC内容对P位自动置位或复位。若累加器ACC中有奇数个1,则P=1;若累加器ACC中有偶数个1,则P=0。
(5)布尔处理器
2、 控制器
控制器是计算机的指挥控制部件,它包括程序计数器PC、指令寄存器IR、指令译码器ID、数据指针DPTR、堆栈指针SP以及定时控制与条件转移逻辑电路等。它对来自存储器中的指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需的控制信号,使各种部件协调工作,完成指令所规定的操作。
(1)程序计数器PC(Program Counter)
PC是一个16位计数器。实际上PC是程序存储器的字节地址计数器,其内容是将要执行的下一条指令的地址,寻址范围达64k(216=65536=64k)。PC有自动加1的功能,从而实现程序的顺序执行。可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。
(2)指令译码器ID
当指令取出经指令寄存器IR送至指令译码器ID时,ID对该指令进行译码,即把指令转变成所需的电平信号。CPU根据ID输出的电平信号使定时控制电路定时地产生执行该指令所需的各种控制信号,以使计算机能正确执行程序所要求的各种操作。
(3)数据指针DPTR
数据指针DPTR为16位寄存器。它的功能是存放16位的地址,作为访问外部程序存储器和外部数据存储器的地址。编程时,DPTR即可按16位寄存器使用,也可以按两个8位寄存器使用,即DPH为DPTR高8位,DPL位DPTR的低8位。
存储系统
8051单片机在系统结构上采用哈佛结构,将程序和数据分别存放在两个存储器内。它与采用冯·诺依曼结构,程序和数据共用一个存储器的通用计算机不同。8051的存储器在物理结构上分为程序存储器(ROM)和数据存储器(RAM),有四个物理上相互独立的存储空间,即片内ROM和片外ROM,片内RAM和片外RAM。
从用户使用的角度看,8051存储空间分为三类:片内、片外统一编址0000H~FFFFH的64k程序存储器地址空间;256字节数据存储器地址空间,地址为:00H~FFH,64k片外数据存储器或I/O地址空间。
上述的三个地址空间是重叠的,即程序存储器中片内外低4k地址重叠;数据存储器与程序存储器64k地址全部重叠;数据存储器中片内外低256字节地址重叠。虽然地址重叠,但由于采用了不同的操作指令及控制信号EA、PSEN的选择,因此不会发生混乱。
1、程序存储器
程序存储器用来存放程序代码和常数,分为片内、片外两大部分,即片内ROM和片外ROM。其中8051内部有4K的ROM,地址范围为0000H~0FFFH,片外用16位地址线扩充64K的ROM,两者统一编址。
单片机从片内ROM取指令(EA=1)还是从片外ROM(EA=0)取指令,取决于CPU引脚EA的电平高低。
8051从片内ROM和片外ROM取指令时执行速度相同。
在程序存储器中有些特殊单元。
0000H~0002H 系统复位向量区
0003H~000AH INT0中断地址区
000BH~0012H T/C0中断地址区
0013H~001AH INT1中断地址区
001BH~0022H T/C1中断地址区
0023H~002AH 串行口中断地址区
2、片内数据存储器
数据存储器用来存放运算的中间结果、标志位,以及数据的暂存和缓冲等。分为片内、片外两部分。8051片内数据存储器按功能划分为低128(00H~7F)单元和高128(80~FFH)单元。
3、片外数据存储器
片外数据存储器,即片外RAM,一般由静态RAM芯片组成。用户可根据需要确定扩展存储器的容量,MCS-51单片机访问片外RAM可用特殊功能寄存器--数据指针DPTR,最大容量为64K。
片外RAM地址范围为0000H~FFFFH,其中0000H~00FFH区间与片内数据存储空间是重叠。CPU使用MOV指令和MOVX指令加以区分。
三、MCS-51单片机的引脚功能
MCS-51系列单片机芯片均为40个引脚。引脚功能描述如下:
1、电源引脚VSS和VCC
VSS为电压接地端,VCC为+5V电源端。
2、时钟电路引脚XTAL1和XTAL2
XTAL1和XTAL2是外接晶振引线端。
当使用芯片内部时钟时,此二引脚外接石英晶体振荡器和电容;当使用外部时钟时,用于接外部脉冲信号。
3、控制信号引脚ALE、PSEN、EA和RST
(1)ALE/PROG
此引脚是地址控制锁存控制信号。在访问外部存储器时,ALE用于锁存出现在P0口的低8位地址,以实现低位地址和数据的隔离。
(2)PSEN
此引脚是片外程序存储器的选通信号,低电平有效。在从片外ROM读取指令或常数时,每个机器PSEN两次有效,以实现对ROM单元的读操作。当访问片外RAM时,PSEN信号将不出现。
(3)EA/VPP
此引脚是访问外部程序存储器的控制信号,低电平有效。
(4)RST/VPD
此引脚为复位信号,高电平有效。当此输入端保持2个机器周期以上的高电平,就可以使单片机复位。
4、I/O(输入、输出)端口P0、P1、P2和P3
(1)P0口(P0.0~P0.7)P0口是一个漏极开路的8位双向I/O口,每位能驱动8个LS型TTL负载。在访问片外存储器时,P0分时提供低8位地址线和8位双向数据线。当不接片外存储器或不扩展I/O时,P0口可作为一个通用输入输出口。当P0口作为输入口使用时,应先P0口向锁存器写“1”,此时P0口全部引脚浮空,可作为高阻抗输入。当P0口作为输出时,由于输出电路为漏极开路,驱动NMOS电路时必须外接上拉电阻。
(2)P1口(P1.0~P1.7)P1口是一个带内部上拉电阻的8位准双向I/O口,每位能驱动4个LS型TTL负载。P1口只能作通用输入/输出口用。当P1口作为输入口使用时,应先向P1口锁存器写“1”,此时P1口引脚由内部上拉电阻拉成高电平。当P1口作为输出口时,已能向外提供推拉电流负载,无需在外接上拉电阻。
(3)P2口(P2.0~P2.7)P2口是一个带内部上拉电阻的8位准双向I/O,每位能驱动4位LS型TTL负载。在访问片外存储器时,它输出高8位地址。
(4)P3口(P3.0~P3.7)P3口为双功能口,除了作为一般的准双向通用的I/O口使用外,每个引脚都有第二功能。
引脚信号的第二功能引脚
P3口的第二功能引脚
引脚 |
第二功能 |
信号名称 |
P3.0 |
RxD |
串行数据接收 |
P3.1 |
TxD |
串行数据发送 |
P3.2 |
INT0 |
外部中断0 |
P3.3 |
INT1 |
外部中断1 |
P3.4 |
T0 |
定时器/计数器0计数输入 |
P3.5 |
T1 |
定时器/计数器1计数输入 |
P3.6 |
WR |
外部RAM写选项 |
P3.7 |
RD |
外部RAM读选项 |
四、MCS-51单片机的时序
在执行指令时,单片机通常将一条指令分解为若干基本的微操作。这些微操作对应的脉冲信号在时间上的先后次序称为单片机的时序。单片机的时序可以由片内振荡器(外接晶振和微调电容)或外部时钟信号提供。
CPU时序
1、时序定时单位
MCS-51的时序定时单位从小到大依次为节拍、状态、机器周期和指令周期。
(1)节拍和状态
把振荡脉冲周期定义为节拍。每两个节拍即为一个状态。
(2)机器周期
MCS-51采用定时控制方式,有固定的机器周期,为6个状态,即12个振荡周期。当振荡频率为12MHZ时,一个机器周期为1us。
(3)指令周期
指令周期是最大的定时单位,执行一条指令所需的时间称为指令周期。MCS-51的指令周期可分为一、二、四个机器周期。
2、MCS-51指令的取指及执行时序
按长度MCS-51单片机的指令可分为单字节指令、双字节指令和三字节指令。执行这些指令所需的机器周期数目不同。在单字节指令中只有乘法指令和除法指令是四个机器周期,其余均为单机器周期或双机器周期;双字节指令为单机器周期或双机器周期;三字节指令都是双机器指令。
3、访问片外ROM和RAM的时序
(1)片外ROM读时序
1P0口作为地址信号输出线,用于输出程序存储器的低8位地址PCL。P2口用于输出程序存储器的高8位地址PCH。P2口具有锁存功能,而P0口除了输出地址外,还要输入指令,故需要用ALE把P0口输出的低8位地址PCL锁存起来。在每个机器周期中允许地址锁存器两次有效,在ALE由高变低时,锁存出现在P0口上的低8位地址PCL。
2从片外ROM读取指令,除了ALE外,还需PSEN(片外ROM选通)信号有效,选通片外ROM芯片的使能端,读出的指令从P0口送入单片机。
(2)片外RAM读写时序
前述ROM操作是为了取指令,因此把相应的机器周期称为取指周期,而片外RAM的读或写操作则是为了读写数据,属于指令的执行周期。
说明:
1、第一个机器周期是读片外ROM的取指时序,第一个ALE锁存由P0送出指令的低8位地址PCL,P2口是指令的高8位地址PCH,不需要锁存。在S3与S4P1期间,PSEN选通片外ROM,读出指令。
2、第一个机器周期的S4之后,送出片外RAM地址,第二个ALE锁存P0送出的片外RAM的低8位地址。
3、在第二个机器周期中,第一个ALE信号不再出现,PSEN也保持高电平无效,但读选通信号(RD)从第二个机器周期S1P1开始有效,选通片外RAM,进行RAM的读操作。被寻址的RAM单元把有效数据送入P0口,CPU通过P0口是读入数据。
4、第二个机器周期的第二个ALE信号仍然出现,也进行一次片外ROM读操作,但属无效操作。
五、MCS-51的最小系统
1、什么是最小系统
个人理解为:使系统正常工作的必不可少的外围电路所构成的电路系统。如MCS-51系列单片机要正常工作需要电源、时钟电路(外接晶振和微调电容)和复位电路。这样由MCS-51系列芯片如8051、电源、时钟电路和复位电路构成的数字电路系统即为MCS-51的最小系统。