第 2 章 MCS-51 单片机硬件结构
1. MCS-51 系列单片机的基本结构
1.MCS-51 系列单片机的总体基本结构
MCS-51 系列单片机主要部件组成:微处理器(MPU)、数据存储器(RAM)、 程序存储器(ROM/EPROM)、并行 I/O 口(P0 口、P1 口、P2 口、P3 口)、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
1.CPU(微处理器)
2.数据存储器(RAM)
片内为128个字节(52子系列的为256个字节)
3.程序存储器(ROM/EPROM)
8031:无此部件;
8051:4K字节ROM;
8751:4K字节EPROM ;
89C51/89C52/89C55:4K/8K/20K 字节闪存。
4. P1口、P2口、P3口、P0口:为4个并行8位I/O口。
5. 串行口 1个全双工的异步串行口。
6. 定时器/计数器
7. 中断系统
8. 特殊功能寄存器(SFR)
用于对片内各功能模块进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器。
共有21个,是一个具有特殊功能的RAM区。
- 所有兼容8051 的单片机一般简称为
51 系列单片机 。 - 51 系列单片机的基本结构总体上是一致的。
2.MCS-51 系列单片机主要功能部件
8051/8052 系列单片机主要包括以下功能部件:
- 8 位 CPU;
- 4K/8K 片内程序存储器(ROM/EPROM);
- 128/256 字节的片内RAM;
- 32 条双向 I/O 口线(4 个 8 位 I/O 口);
- 可寻址程序存储器和外部数据存储器各64KB;
- 2/3 个 16 位定时器/计数器;
- 1 个全双工异步串行口;
- 5/6 个中断源,2 个中断优先级;
- 位寻址空间;
- 片内振荡器和时钟电路。
3.8051 单片机内部结构及引脚
8051单片机为40条引脚双列直插式封装引脚可分为三个部分:
(1)电源及时钟引脚: Vcc、Vss;XTAL1、 XTAL2。
(2)控制引脚: PSEN*、EA* 、ALE、RESET
(3)I/O口引脚:P0、P1、P2、P3,4个8位I/O口
40只引脚双列直插封装(DIP)
-
电源及电源复位引脚 (1)VCC(40 脚):正常操作时,接+5V 直流电源。 (2)VSS(20 脚):接地端。 (3)RST/VPD(9 脚):复位信号输入引脚RST。在该引脚上输入一定时间(约两个机器周期) 的高电平将使单片机复位。 (4)EA /VPP(31 脚):访问程序存储器控制信号/编程电源输入。 -
时钟振荡电路引脚 XTAL1 和 XTAL2 (1)XTAL1(19 脚):外接石英晶体和微调电容引脚 1。 (2)XTAL2(18 脚):外接石英晶体和微调电容引脚 2。 -
ALE/PROG(30 脚) 低 8 位地址锁存允许信号/编程脉冲输入。
在访问外部程序存储器期间,ALE 信号两次有效;
而在访问外部数据存储器期间,将丢失一个 ALE 信号。
-
PSEN(29 脚) 外部程序存储器的读选通信号输出端,低电平有效。在从外部程序存储器取指令(或常数)期间,此引脚定时输出负脉冲作为访问外部程序存储器的读信号,每个机器周期PSEN 两次有效,此时地址总线上送出的地址为外部程序存储器地址;在此期间,如果访问外部数据存储器和内部程序存储器,不会产生PSEN 信号。 -
并行双向输入/输出(I/O)口引脚 (1)P0 口的 P0.0~P0.7 引脚(39~32 脚):8 位通用输入/输出端口和片外8 位数据/低 8 位地址分时复用总线端口。 (2)P1 口的 P1.0~P1.7 引脚(1~8 脚):8 位通用输入/输出端口。 (3)P2 口的 P2.0~P2.7 引脚(28~21 脚):8 位通用输入/输出端口和片外高8 位地址总线端口。 (4)P3 口的 P3.0~P3.7 引脚(10~17 脚):8 位通用输入/输出端口,具有第二功能。
4.外部总线构成
总线,就是连接单片机与各外部器件的一组公共信号线。
- 利用片外引脚可以构造 MCS-51 系列单片机的三总线结构。
- 单片机的引脚除了电源端 VCC.接地端 VSS、复位端 RST、晶振接入端 XTAL1 和 XTAL2、通用 I/O 口的 P1.0~P1.7 以外,其余的引脚都是为实现系统扩展而设置的。
MCS-51片外总线结构示意图
- 地址总线(Address Bus,
AB ):MCS-51系列单片机总共有16根地址线A15~A0,由P2口直接提供高8位地址A15~A8,P0口经地址锁存器提供低8位地址A7~A0,使得访问时片外存储器时寻址范围可达64KB(216=65536=64K)。 - 数据总线(Data Bus,
DB ):MCS-51系列单片机总共有8位数据线D7~D0,由P0口分时传输。 - 控制总线(Control Bus,
CB ):控制总线由P3口的第二功能 /WR(P3.6)、/RD (P3.7)和3根独立的控制线/EA 、ALE、/PSEN 组成。
2. MCS-51 单片机的中央处理器
1.CPU的组成
- CPU的组成:运算器和控制器,用以进行各种算术和逻辑运算,并实现数据的传送。
- 运算器的组成:算术逻辑单元部件 ALU(Arithmetic and Logic Unit)、位处理器、8 位累加器 A、寄存器 B、两个 8 位暂存寄存器 TMP1 和 TMP2 及程序状态字寄存器 PSW(8 位)等。
- 运算器的功能:不仅可以实现8位数据的加、减、乘、除、增量、减量、十进制调整、比较等算术运算和与、或、异或、求补等逻辑运算,同时还具有一般微机所不具备的位处理功能,可对位变量进行置位、清零、求补及与、或等操作。
- 控制器的组成:程序计数器 PC、PC 增量器、指令寄存器、指令译码器、定时及控制逻辑电路等。
- 控制器的功能:以主振频率为基准产生时钟信号,向单片机内部各组成单元发出各种微控制信号,控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。
指令执行的基本步骤
- 程序——完成某项工作的一 系列指令的有序组合;
- 指令——控制单片机执行某种操作的命令;
- 指令的组成——由操作码和操作数组成;
- 操作码——规定了单片机的操作类型;
- 操作数——直接或间接地给出了参与操作的数据或数据的存放位置。
单片机执行一条指令一般分为两个阶段:取指令阶段和执行指令阶段。
- 取指令阶段:CPU从程序存储器中取出指令的操作码,送到指令寄存器。
- 指令执行阶段:经指令译码器译码,产生一系列控制信号,以明确该指令执行什么样的操作,以及操作数的存放地址,根据这个地址获取操作数,然后 CPU 按操作码指明的操作类型对获取的操作数进行操作。
2.时钟电路及时钟时序单位
时钟电路用于产生单片机工作所必需的时钟控制信号。
- 时钟电路
- 时钟频率直接影响单片机的速度,电路的质量直接影响系统的稳定性。常用的时钟电路有两种方式:内部时钟方式和外部时钟方式。
一、内部时钟方式
- 内部有一个用于构成振荡器的高增益反相放大器,其输入端:XTAL1,输出端:XTAL2。
- C1和C2典型值通常选择为30pF左右。
- 晶体的振荡频率在1.2MHz~12MHz 之间。
- 某些高速单片机芯片的时钟频率已达40MHz。
振荡电路产生的振荡脉冲并不直接使用,而是经分频后再为系统所用:二分频后作为状态时钟信号,其频率为fosc/2 ;状态时钟三分频后作为ALE信号,其频率为fosc/6;状态时钟六分频后为机器周期,其频率为fosc/12。
二、外部时钟方式
- 由外部时钟电路向片内输入脉冲信号作为单片机的振荡脉冲。这时外部脉冲信号是经XTAL2引脚引入的,而XTAL1引脚悬空或接地。
- 这种方式常用于多块芯片同时工作,便于同步。
- 复位电路
- 复位电路可采用简单的由电阻、电容及开关构成的上电自动复位和手动复位电路。
-
只要RST引脚出现两个机器周期以上时间的高电平时,单片机将进入复位状态。 -
复位状态就是单片机复位时内部寄存器及引脚的初始数据或初始电平。 MCS-51系列单片机复位时内部各寄存器的状态如表2.1所示。
寄存器 | 内容 | 寄存器 | 内容 |
---|
PC | 0000H | TMOD | 00H | A | 00H | TCON | 00H | B | 00H | TH0 | 00H | PSW | 00H | TL0 | 00H | SP | 07H | TH1 | 00H | DPTR | 0000H | TL1 | 00H | P0~P3 | FFH | SCON | 00H | IP | xxx00000H | SBUF | 不定 | IE | 0xx00000H | PCON | 00H |
注意:
复位后,单片机将从0地址开始执行指令。
内部RAM中的数据不受复位的影响。
- 时钟时序单位
-
时序,是指在指令执行过程中,CPU的控制器所发出的一系列特定的控制信号在时间上的先后次序。 -
MCS-51 的时序单位共有四个,从小到大依次是拍节、状态、机器周期和指令周期。 -
CPU发出的控制信号有两类:
- 一类是用于单片机内部的,用户不能直接接触此类信号,不必对它做过多了解;
- 另一类是通过控制总线送到片外的,人们通常以时序图的形式来表示相关信号的波形及出现的先后次序。
-
时钟周期:单片机的基本时间单位 。
- 若时钟的晶体的振荡频率为fosc,则时钟周期 Tosc=1/fosc。如fosc=6MHz,Tosc=166.7ns。
-
机器周期:指 CPU 访问存储器一次所需要的时间。
-
1
T
m
=
6
T
s
=
12
T
p
=
12
T
c
y
=
12
T
o
s
c
1T_m=6T_s=12T_p=12T_{cy} =12 T_{osc}
1Tm?=6Ts?=12Tp?=12Tcy?=12Tosc?
Tm——机器周期 Ts——状态周期
Tp——拍节周期 Tcy——时钟周期
Tosc——振荡周期
例如,若振荡脉冲频率为6MHz,则
振荡脉冲周期Tosc=1/6000000s=1/6μs,
状态周期Ts =1/6×2=1/3μs,
机器周期Tm =1/6×12=2μs。
-
指令周期:单片机执行一条指令所需要的时间。
- 执行一条指令时,可分为取指令阶段和指令执行阶段 。
- 取指令阶段,PC中地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。
- 指令执行阶段,对指令操作码进行译码,以产生一系列控制信号完成指令的执行。
- ALE信号是为地址锁存而定义的,以时钟脉冲1/6的频率出现, 在一个机器周期中,ALE信号两次有效(注意,在执行访问外部数据存储器的指令MOVX时,将会丢失一个ALE脉冲)。
- 在 MCS-51 系统中,有单周期指令、双周期指令和 4 周期指令。4 周期指令只有乘、除两条指令,其余都是单周期或双周期指令。
上图中的(a )和(b)分别表示单字节单周期和双字节单周期指令的执行时序。
单周期指令的执行从S1P2开始, 在S1P2期间读入操作码并把它锁到指令寄存器中。单周期双字节指令则在同一机器周期的S4期间读出第2个字节。
单周期单字节指令在S4处仍有一次读操作, 但这时读出的字节(下一条指令的操作码)将被丢弃, 而且程序计数器PC也不加1。 对于单周期指令, 在上述任何情况下, 指令都在S6P2期间完成操作。
图2―3(c)表示单字节双周期指令的时序, 单字节双周期指令在两个机器周期内作4次读操作码的操作, 由于是单字节指令, 后3次读操作是无效的。
图2―3(d)表示执行访问外部数据存储器指令MOVX的时序, 这是一条单字节双周期指令,具有其特殊性。丢失了一个ALE信号 。
3. MCS-51 单片机的内部存储器
1.存储器结构及地址分配
- 存储器是组成单片机的主要部件之一,其功能是存储信息(数据和程序)。
- 存储器按其存储方式可以分成两大类:一类为随机存储器 RAM;另一类是只读存储器 ROM。
- 随机存储器RAM(数据存储):用于暂时存放系统运行过程中的输入/输出数据、运算中间结果。
- 只读存储器ROM(程序存储器):用于存放固定的程序和固定的数据,如系统程序、常数、表格等。
- 常用的 ROM 根据其编程方式不同可分为以下 5 种类型:掩膜型 ROM (MROM)、一次性可编程 ROM(PROM,又称为 OTPROM)、紫外线可擦可编程 ROM (EPROM)、电可擦可编程 ROM(EEPROM)、闪速 ROM(Flash ROM)。
- MCS-51单片机系统的存储器可分为5类:
- ① 片内程序存储器;
- ② 片外程序存储器;
- ③ 片内数据存储器;
- ④ 片外数据存储器;
- ⑤ 特殊功能寄存器。
- MCS-51 单片机存储器的地址空间可分为 3 个:
- ① 片内片外统一编址的 64KB 的程序存储器地址空间(16 位地址 0000H~FFFFH),程序中使用MOVC指令访问。
- ② 片内数据存储器与特殊功能寄存器统一编址的 256B 内部数据存储器地址空间(8 位 地址 00H~7FH,80H~FFH),使用MOV指令访问。
- ③ 64KB 片外数据存储器地址空间(16 位地址 0000H~FFFFH),使用MOVX指令访问。
MCS-51 单片机的存储结构有两个重要的特点:一是采用哈佛结构,把数据存储器和程 序存储器截然分开,不同于通用微机的普林斯顿结构;二是存储器有内外之分。
2.内部程序存储器
-
有些MCS-51单片机片内有程序存储器,如:
- 8051 4KB的掩膜型ROM 0000H~0FFFH;
- 8751 4KB的EEPROM 0000H~0FFFH
-
当/EA 接高电平时,地址在0000H~0FFFH时,CPU访问内部存储单元,如果地址大于0FFFH时,CPU自动转向对片外存储器的访问。 -
当 /EA接低电平(接地)时,CPU只能访问外部程序存储器,这时外部程序存储器的地址从0000H开始编址。 -
有些MCS-51单片机片内无程序存储器,如80C31、80C32单片机片内无程序存储器,所以只能外接ROM并将/EA接地。
MCS-51单片机程序存储器中的特殊地址:
- 0000H~0002H——系统复位后总是从0000H单元开始取指令执行程序,常在此放一条转移指令。
- 0003H~000AH——外部中断0服务程序地址区;
- 000BH~0012H——定时器/计数器0中断服务程序地址区;
- 0013H~001AH——外部中断1服务程序地址区;
- 001BH~0022H——定时器/计数器1中断服务程序地址区
- 0023H~002AH——串口中断服务程序地址区。
3.内部数据存储器
-
MCS-51单片机内部数据存储器包括:
-
用户RAM区: 128字节,地址范围:00-7FH -
特殊功能寄存器(SFR)区:地址范围:80H-FFH -
80C51单片机的用户RAM区有128字节,地址范围为00H~7FH,分成三部分:工作寄存器区、位寻址区、通用RAM区。
1.用户RAM区
工作寄存器区——00H~1FH
- 地址范围在00H~1FH的32个字节片内RAM为工作寄存器区,分成4个工作寄存器组,每组占8个字节,对应8个工作寄存器,分别称为R0、R1、R2、R3、R4、R5、R6、R7。
- 在程序运行时,只允许一个工作寄存器组工作,称为
当前工作寄存器组 ,由程序状态字寄存器PSW中的RS1、RS0 两位二进制数的组合来决定当前工作寄存器是哪一组。
当前工作寄存器组的选择
组号 | RS1 RS0 | R0 | R1 | R2 | R3 | R4 | R5 | R6 | R7 |
---|
0 | 0 0 | 00H | 01H | 02H | 03H | 04H | 05H | 06H | 07H | 1 | 0 1 | 08H | 09H | 0AH | 0BH | 0CH | 0DH | 0EH | 0FH | 2 | 1 0 | 10H | 11H | 12H | 13H | 14H | 15H | 16H | 17H | 3 | 1 1 | 18H | 19H | 1AH | 1BH | 1CH | 1DH | 1EH | 1FH |
注意以下几点:
① RS1、RS0的状态可由指令来进行设置;
② 复位后自动选中第0组工作寄存器;
③ 切换工作寄存器组后,原工作寄存器中的内容将被屏蔽保护;
④ 若程序中不需要4组工作寄存器,那么不用的工作寄存器可作为一般RAM使用。
位寻址区——20H~2FH
- 内部RAM的20H~2FH地址范围共16个字节单元为位寻址区,它们既可作为一般的RAM进行字节寻址,也可以对它们中的每一位进行位寻址。
- 每一个位单元都有一个位地址,所以位寻址区共有16*8=128个位地址(00H~7FH)。
- CPU能直接寻址这些位,执行置1、清零、求“反”、转移、传送等操作。
- 128个位地址与内部RAM中128个字节地址00H~7FH重叠,在应用中通过指令的类型来区分它们。
内部RAM位寻址区的位地址分配表
通用 RAM 区——30H~7FH
- 地址范围在30H~7FH中的 80个单元没有其他的规定和限制,可用来存放用户数据或作为堆栈区使用。因此被称为通用RAM区。
2.特殊功能寄存器
特殊功能寄存器(Special Function Registers,SFR),也称为专用寄存器,它们离散地分布在内部RAM地址为80H~FFH的128个字节的存储空间中。
-
SFR用于控制单片机的工作方式或反映MCS-51单片机的运行状态,大部分的功能已做了专门的规定,用户不能修改其结构。 -
MCS-51中共有21个8位特殊功能寄存器,其中字节地址能被8整除的11个单元具有位寻址能力,有效的位地址共有82个。 -
每个位单元不仅有位地址,有些还有位名称,可用位地址、位名称、字节地址.位序和寄存器名.位序4种方法来表示。
- 如D7H、C、0D0H.7、PSW.7都表示同一个位,即
程序状态字寄存器的最高位 。
特殊功能寄存器的地址及符号表
特殊功能寄存器分别用于以下各功能部件:
(1)CPU:累加器A、B寄存器、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR(由DPH和DPL两个8位寄存器组成)。
(2)并行口:P0、P1、P2、P3。
(3)串行口:串行口控制寄存器SCON、串行数据缓冲器SBUF、电源控制寄存器PCON。
(4)中断系统:中断允许控制寄存器IE、中断优先级控制寄存器IP。
(5)定时器/计数器:定时器/计数器方式控制寄存器TMOD.定时器/计数器控制寄存器TCON、定时器/计数器0(TH0、TL0)、定时器/计数器1(TH1、TL1)。
特殊功能寄存器介绍:
- 累加器A(或ACC,Accumulator): E0H, 8位
累加器A是最常用最繁忙的一个专用寄存器,用于向ALU提供操作数、存放运算的中间结果、数据传送的中间站等。大部分的数据操作都要求通过累加器A进行。 - 寄存器B : F0H, 8位
主要用于乘、除运算,也可以作为通用寄存器使用。 - 程序状态字寄存器PSW(Program Status Word) : D0H, 8位
用于存放程序运行时的状态信息,供程序查询和判别时使用。其中有些位状态是根据指令执行的结果、由硬件自动设置的,而有些位状态是使用软件方法设定的。 PSW 的各位定义如下:
位序 | PSW.7 | PSW.6 | PSW.5 | PSW.4 | PSW.3 | PSW.2 | PSW.1 | PSW.0 |
---|
位标志 | Cy | AC | F0 | RS1 | RS0 | OV | / | P |
① Cy:进位/借位标志位。有两个功能:
一是存放执行算术运算时的进位/借位标志,可被硬件或软件置位或清零,如进行加、减运算时,若运算结果在最高位有进位或借位时,Cy被硬件自动置1,反之则自动置0;
二是在位操作中做位累加器使用。
② AC:辅助进位标志位,又称为半进位标志位。
当进行加、减运算时如果由低4位向高4位进位或借位,则AC被硬件自动置1,反之则自动清零。AC常用于二~十进制(BCD码)调整。
③ F0 :用户标志位,可由用户自定义其含义。
F0通常是由用户根据执行程序的需要进行设置。用户可通过对F0置1或清零来设定程序的走向或代表某事件是否发生或表示设备的状态。
④ RS1、RS0:工作寄存器组(区)选择标志位。
⑤ OV:溢出标志位,带符号数加减运算中,若结果超出了累加器A所能表示的有效范围(-128~+127),即产生溢出,则OV=1;否则OV=0。
当执行加法指令时,若以Ci表示i位向位i+1有进位,则OV=C6⊕C7(异或运算)。
乘、除法指令也会影响OV标志。
⑥ P:奇偶校验位。用于指示存放在累加器A中“1”的个数的奇偶性,若累加器A中1的个数为奇数个则P=1,若累加器A中1的个数为偶数个则P=0。
-
数据指针寄存器DPTR(Data Pointer): 83H、82H ,16位 由高字节DPH( 83H )和低字节DPL( 82H )两个8位特殊功能寄存器组成,可用它存放一个16位地址,对片外RAM或ROM中的64KB范围内的任一单元进行访问。 既可以当作16位寄存器使用,也可以作为两个8位寄存器使用。 -
I/O口专用寄存器(P0、P1、P2、P3) : 80H、90H 、A0H、B0H,8位 四个专用寄存器P0、P1、P2和P3分别是四个I/O端口P0~P3的数据输出锁存器/输入缓冲器。 通过MOV指令访问四个专用寄存器P0、P1、P2和P3,便可通过四个I/O端口P0~P3进行输入/输出。 -
串行数据缓冲器(SBUF):99H,8位 SBUF用来存放串口需要发送和接收到的数据。它对应两个独立的寄存器,一个是发送缓冲器(只写),另一个是接收缓冲器(只读),串行发送和串行接收其实都是对串行数据缓冲器SBUF进行的。
4.堆栈
入栈时,SP 中的内容先加 1,后写入数据;出栈时,先读出数据,SP 中的内容后减 1。
- MCS-51单片机中的堆栈:在内部RAM中开辟出来的按照后进先出的顺序进行访问的一片连续存储区域。
- 设立堆栈的目的——用于数据的暂存、中断与子程序调用时断点和现场的保护与恢复。
- MCS-51单片机的堆栈的生长方向: 向上生长型。
- 从高地址方向写入数据生成的堆栈称为向上生长型堆栈;反之称为向下生长型堆栈。向上生长型堆栈的栈顶存储单元的地址必定随着数据的入栈而递增,随着数据的出栈而递减。
堆栈指针SP(Stack Pointer,8位)
- 堆栈指针SP是一个8位特殊功能寄存器,用于指示堆栈的栈顶地址,SP总是指向堆栈栈顶,它决定了栈顶在内部RAM中的物理位置。
- 数据入栈(PUSH)的操作过程:SP先在其原值的基础上自动加1 (SP←SP+1),然后将要入栈的数据存放在SP指定的存储单元中;
- 数据出栈(POP)的操作过程:先将SP指向的栈顶单元的内容传送到POP指令给定的寄存器或内部RAM单元中,然后SP自动减1(SP←SP-1)。
堆栈的开辟
- 单片机的堆栈只能开辟在片内数据存储器中。
- 系统复位后,SP中的值是07H。
- 在程序设计时,通常都要对SP中的复位值进行修改,以将堆栈开辟在通用RAM区(30H~7FH)内。
4. MCS-51 单片机的工作方式
程序执行方式:单片机上电复位后,从程序存储器的0000H单元开始执行程序。
- 程序执行方式分为:
- 连续执行方式——单片机按照程序逻辑,自动连续地执行程序中的指令。
- 单步执行方式——按一下单步执行键执行一条用户程序中的指令的方式。
掉电保护方式
- 空闲(等待)方式(Idle Mode)
- 掉电(停机)方式(Power Down Mode)
- 这两种方式都是由特殊功能寄存器中的电源控制寄存器PCON的有关控制位来控制的。
下一篇:第3章 MCS-51 单片机指令系统
|