第二章
MCS— 51系列单片机
芯片结构
2.1 MCS— 51系列单片机的结构原理
2.1.1 MCS-51单片机逻辑结构
MCS-51单片机的系统结构框图如图 2.1所示。
振 荡 器 及
定 时 电 路
4 K B
程 序 存 储 器
1 2 8 K B
数 据 存 储 器
2 个 1 6 位 定 时 器
/ 事 件 计 数 器
C P U
6 4 K B 总 线
扩 展 控 制
可 编 程
串 行 口
可 编 程 I / O
中 断
中 断
频 率 基 准 源 计 数 器
串 行
输 入
串 行
输 出
并 行 I / O 口控 制
图 2.1 MCS-51单片机的系统结构框图
由图 2.1可以看出, 单片机内部主要包含下列几个部件:
u 一个 8位 CPU;
u 一个时钟电路;
u 4Kbyte程序存储器;
u 128byte数据存储器;
u 两个 16位定时 /计数器;
u 64Kbyte扩展总线控制电路;
u 四个 8-bit并行 I/O端口;
u 一个可编程串行接口;
五个中断源,其中包括两个优先级嵌套中断
2.1.2 MCS- 51单片机内部结构
MCS- 51单片机芯片内部结构框图如图 2.2所示。
端 口 0 驱 动 器 端 口 2 驱 动 器
R A M
( 1 2 8 × 8 )
端 口 0 锁 存 器 端 口 2 锁 存 器
R O M
( 4 K × 8 ) 程 序 地 址 寄 存 器
缓 冲 器
P C 加 1 寄 存 器
程 序 计 数 器 P C
数 据 指 针 D P T R
堆 栈 指 示 器 S P
P C O N S C O N T M O D T C O N
T H 0 T L 0 T H 1 T L 1
S B U F
( T X )
S B U F
( R X )
I E
中 断, 串 行 口 和 定 时 器
R A M 地 址
寄 存 器
A C C
B 寄 存 器
A L U
状 态 寄 存 器
暂 存 器 2 暂 存 器 1
定 时
与
控 制
指 令
寄 存
器
端 口 1 锁 存 器 端 口 3 锁 存 器
端 口 1 驱 动 器 端 口 3 驱 动 器
X T A L 1 X T A L 2
P
0, 0
~ P
0, 7
P
2, 0
~ P
2, 7
P
1, 0
~ P
1, 7
P
3, 0
~ P
3, 7
A L E
R S T
P S E N
EA
V c c
V s s
( + 5 V )
图 2.2 MCS- 51单片机芯片内部结构框图
1,CPU
CPU即中央处理器的简称, 是单片机的核心部件, 它完
成各种运算和控制操作, CPU由运算器和控制器两部分电路
组成 。
( 1) 运算器电路
运算器电路包括 ALU(算术逻辑单元),ACC(累加
器),B寄存器、状态寄存器、暂存器 1和暂存器 2等部件,运
算器的功能是进行算术运算和逻辑运算。
( 2) 控制器电路
控制器电路包括程序计数器 PC,PC加 1寄存器、指令寄
存器、指令译码器、数据指针 DPTR、堆栈指针 SP、缓冲器以
及定时与控制电路等。控制电路完成指挥控制工作,协调单
片机各部分正常工作。
2,定时器 /计数器
MCS- 51单片机片内有两个 16位的定时 /计数器, 即定
时器 0和定时器 1。 它们可以用于定时控制, 延时以及对外
部事件的计数和检测等 。
3,存储器
MCS- 51系列单片机的存储器包括数据存储器和程序
存储器, 其主要特点是程序存储器和数据存储器的寻址空
间是相互独立的, 物理结构也不相同 。
4,并行 I/O口
MCS- 51单片机共有 4个 8位的 I/O口( P0,P1,P2和
P3),每一条 I/O线都能独立地用作输入或输出。 P0口为三
态双向口,能带 8个 TTL门电路,P1,P2和 P3口为准双向口,
负载能力为 4个 TTL门电路。
5,串行 I/O口
MCS- 51单片机具有一个采用通用异步工作方式的全双
工串行通信接口, 可以同时发送和接收数据 。
6,中断控制系统
8051共有 5个中断源, 即外中断 2个, 定时 /计数中断 2个,
串行中断 1个 。
7,时钟电路
MCS- 51芯片内部有时钟电路, 但晶体振荡器和微调电
容必须外接 。 时钟电路为单片机产生时钟脉冲序列, 振荡器
的频率范围为 1.2MHz~ 12MHz,典型取值为 6MHz。
8,总线
以上所有组成部分都是通过总线连接起来,从而构成一
个完整的单片机。系统的地址信号、数据信号和控制信号都
是通过总线传送的,总线结构减少了单片机的连线和引脚,
提高了集成度和可靠性。
2.1.3 引脚信号
图 2.3为 MCS- 51系列单片机引脚图及逻辑符号,它们
为标准的 40脚 DIP封装。 2.3/0 PINT
6.3/ PWR
3.3/1 PIN T
0.1P
1.1P
2.1P
3.1P
4.1P
5.1P
6.1P
7.1P
PD
VR ST /
0.3/ PRXD
1.3/ PT X D
4.3/0 PT
5.3/1 PT
7.3/ PRD
2X T A L
1X TAL
V s s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Vcc
0.0P
1.0P
2.0P
3.0P
4.0P
5.0P
6.0P
7.0P
V ppEA /
P R O GA L E /
PSE N
7.2P
6.2P
5.2P
4.2P
3.2P
2.2P
1.2P
0.2P21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
80 31
80 51
87 51
Vcc
V s s
PD
VR ST /
1XT A L
2X TA L
V ppEA /
PSE N
P R O GA L E /
P 3
口
第
二
功
能
P 0
口
P 1
口
P 2
口
地
址
数
据
总
线
地
址
总
线
8 0 3 1
8 0 5 1
8 7 5 1
图 2.3 MCS- 51系列单片机引脚图及逻辑符号
电源引脚 Vcc和 Vss
Vcc:电源端, 接+ 5V。
Vss:接地端 。
时钟电路引脚 XTAL1和 XTAL2
XTAL1:接外部晶振和微调电容的一端, 在片内它是振荡
器倒相放大器的输入, 若使用外部 TTL时钟时, 该引脚必须接
地 。
XTAL2:接外部晶振和微调电容的另一端, 在片内它是振
荡器倒相放大器的输出, 若使用外部 TTL时钟时, 该引脚为外
部时钟的输入端 。
地址锁存允许 ALE
系统扩展时, ALE用于控制地址锁存器锁存 P0口输出的低
8位地址, 从而实现数据与低位地址的复用 。
外部程序存储器读选通信号
是读外部程序存储器的选通信号, 低电平有效 。
程序存储器地址允许输入端 /VPP
当为高电平时, CPU执行片内程序存储器指令, 但当 PC
中的值超过 0FFFH时, 将自动转向执行片外程序存储器指令 。
当为低电平时, CPU只执行片外程序存储器指令 。
复位信号 RST
该信号高电平有效, 在输入端保持两个机器周期的高电
平后, 就可以完成复位操作 。
1,输入 /输出口引脚 P0,P1,P2和 P3
P0口 ( P0.0~ P0.7),该端口为漏极开路的 8位准双向
口, 负载能力位 8高 LSTTL负载, 它为 8位地址线和 8位数
据线的复用端口 。
P1口 ( P1.0~ P1.7),它是一个内部带上拉电阻的 8位
准双向 I/O口, P1口的驱动能力为 4个 LSTTL负载 。
P2口 ( P2.0~ P2.7),它为一个内部带上拉电阻的 8位
准双向 I/O口, P2口的驱动能力也为 4个 LSTTL负载 。 在
访问外部程序存储器时, 它作存储器的高 8位地址线 。
P3口 ( P3.0~ P3.7), P3口同样是内部带上拉电阻的 8
位准双向 I/O口, P3口除了作为一般的 I/O口使用之外, 其
还具有特殊功能 。
2.2 MCS— 51单片机的存储器
MCS- 51的存储器结构如图 2.4所示。在本节中我们将
对单片机的内部数据存储器、内部程序存储器和外部存储
器分别作一介绍。
外部
FFFF
1000
内部
( =1)
外部
( =0)
0FFF
0000
0FFF
0000
专用寄存器
内部RAM
FF
80
7F
00
FFFF
0000
程序存储器
内部数据存储器 外部数据存储器
图 2.4 MCS- 51的存储器结构如
2.2.1 内部数据存储器
用户区
位寻址区(位地址0 0 ~7 F )
工作寄存器区3 (R 0 ~R 7 )
工作寄存器区2 (R 0 ~R 7 )
工作寄存器区1 (R 0 ~R 7 )
工作寄存器区0 (R 0 ~R 7 )
7FH
30H
2FH
20H
1FH
00H
.
.
.
.
.
.
.
.
.
图2, 5 M C S-5 1 片内 R A M 的空间分配
1,内部数据存储器低 128单元
在低 128字节存储单元中,前 32个单元( 00H~ 1FH)
作为工作寄存器使用,这 32个寄存器分作 4组,每组由 8个
通用寄存器( R0~ R7)组成,组号依次为 0,1,2和 3。通
过对程序状态字中 RS1和 RS0的设置,可以决定选用哪一组
工作寄存器,通常没有选中的单元也可作为一般的数据缓
存使用。系统上电复位时,默认选中第 0组寄存器。
在工作寄存器后的 16个数据单元( 20H~ 2FH),它们既
可以作为一般的数据单元使用,由可以按位对每个单元进行
操作,因此这 16个数据单元又称作位寻址区。位寻址区共计
128位,其位地址为 00H~ 0FH。
在内部 RAM的低 128个单元中, 剩余的 80个数据单元即
30H~ 7FH为真正的用户 RAM区, 对于这些区域, 用户只能
以存储单元的形式来使用, 通常在应用中也把堆栈开辟在这
段区域 。
2,内部数据存储器高 128单元
内部数据存储器的高 128个单元是为专用寄存器提供的,
因此该区也称作特殊功能寄存器区( SFR),它们主要用于存
放控制命令、状态或数据。除去程序计数器 PC外,还有 21个
特殊功能寄存器,其地址空间为 80H~ FFH。这 21个寄存器中
有 11个特殊功能寄存器具有位寻址能力,它们的字节地址刚好
能被 8整除。下面将对部分专用寄存器作简要介绍。
? 累加器 ACC
累加器为 8位寄存器, 是程序中最常用的专用寄存器,
在指令系统中累加器的助记符为 A。 大部分单操作数指令的
操作取自累加器, 很多双操作数指令的一个操作数也取自累
加器 。 加, 减乘和除等算术运算指令的运算结果都存放在累
加器 A或 AB寄存器中, 在变址寻址方式中累加器被作为变址
寄存器使用 。 在 MCS- 51中由于只有一个累加器, 而单片机
中的大部分数据操作都是通过累加器进行的,故累加器的使用
是十分频繁的。
? B寄存器
B寄存器为 8位寄存器, 主要用于乘除指令中 。 乘法指令的
两个操作数分别取自累加器 A和寄存器 B,其中 B为乘数, 乘法
结果的高 8位存放于寄存器 B中 。 除法指令中, 被除数取自 A,
除数取自 B,除法的结果商数存放于 A,余数存放于 B中 。 在其
它指令中, B寄存器也可作为一般的数据单元来使用 。
? 程序状态字 PSW
程序状态字是一个 8位寄存器,它包含程序的状态信息。在
状态字中,有些位状态是根据指令执行结果,由硬件自动完成
设置的,而有些状态位则必须通过软件方法设定。 PSW中的每
个状态位都可由软件读出,PSW的各位定义如表 2.1。
表 2.1 PSW的各状态位定义
(1)CY:进位标志位
在执行某些算术和逻辑指令时,可以被硬件或软件置位或清
零。在算术运算中它可作为进位标志,在位运算中,它作累加器
使用,在位传送、位与和位或等位操作中,都要使用进位标志位。
(2) AC:辅助进位标志
进行加法或减法操作时,当发生低四位向高四位进位或借位
时,AC由硬件置位,否则 AC位被置, 0”。在进行十进制调整指
令时,将借助 AC状态进行判断。
位 序 PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
位标志 CY AC F0 RS1 RS0 OV / P
(3)用户标志位
该位为用户定义的状态标记, 用户根据需要用软件对其置
位或清零, 也可以用软件测试 F0来控制程序的跳转 。
(4)RS1和 RS0:寄存器区选择控制位
该两位通过软件置, 0”或, 1”来选择当前工作寄存器区 。
(5)OV:溢出标志位
当执行算术指令时, 由硬件置位或清零来指示溢出状态 。
在带符号的加减运算中, OV= 1表示加减运算结果超出了累加
器 A所能表示的符号数有效范围 ( - 128~+ 127), 即运算结
果是错误的, 反之, OV= 0表示运算正确, 即无溢出产生 。
无符号数乘法指令 MUL的执行结果也会影响溢出标志,
若置于累加器 A和寄存器 B的两个数的乘积超过了 255,则 OV
= 1,反之 OV= 0。 由于乘积的高 8位存放于 B中, 低 8位存放于
A中, OV= 0则意味着只要从 A中取得乘积即可, 否则要从 BA
寄存器对中取得乘积结果 。
在除法运算中, DIV指令也会影响溢出标志, 当除数为
0时, OV= 1,否则 OV= 0。
(6) P:奇偶标志位
每个指令周期由硬件来置位或清零用以表示累加器 A
中 1的个数的奇偶性, 若累加器中 1的个数为奇数则 P= 1,
否则 P= 0。
l 数据指针 DPTR
数据指针 DPTR为一个 16位的专用寄存器, 其高位用
DPH表示, 其低位用 DPL表示, 它即既可以作为一个 16位
的寄存器来使用, 也可作为两个 8位的的寄存器 DPH和 DPL
使用 。 DPTR在访问外部数据存储器时既可用来存放 16位
地址, 也可作地址指针使用 。 如 MOVX @DPTR,A。
l I/O端口 P0~ P3
P0~ P3为四个 8位的特殊功能寄存器, 分别是四个并行 I/O
端口的锁存器, 当 I/O端口的某一位用作输入时, 对应的锁存器
必须先置, 1”。
l 定时器 /计数器
在 MCS- 51中,除 8032/8052外都只有两个 16位定时器 /计
数器 T0和 T1,它们由两个相互独立的 8位寄存器组成 TH和 TL,
共有四个独立的寄存器 TH0,TL0,TH1和 TL1,只可对这四个
寄存器独立寻址,而不能作为一个 16位寄存器来寻址。
l 串行数据缓冲寄存器
串行数据缓冲器 SBUF用于存放将要发送或已接收的数据,
它由发送缓冲器和接收缓冲器组成, 将要发送的数据被送入
SBUF时进入发送缓冲器, 反之进入接收缓冲器 。
2.2.2 外部数据存储器
在 MCS- 51中,其片外数据存储器和 I/O口与片内数据存储
器空间 0000FH~ FFFFH是重叠的。在 8051单片机中采用
MOV和 MOVX两种指令来区分片内外 RAM空间,其中片内
RAM使用 MOV指令,片外 RAM和 I/O口使用 MOVX指令。
2.2.3 程序存储器
在 MCS- 51系列中,程序存储器被用来存放程序、常数
或表格等。在 8051中,其片内有 4K字节的 ROM存储单元,
地址为 0000H~ 0FFFH。 8751有 4K字节的 EPROM,而 8052和
8752则有 8K字节的片内存储器。 8031和 8032无片内程序存储
器,所以片内程序存储器的有无是区分芯片的主要标志。
在程序存储器中, 以下 6个单元具有特殊含义:
0000H:单片机复位后, PC= 0000H,程序从 0000H
开始执行指令 。
0003H:外部中断 0入口地址。
000BH:定时器 0中断入口地址。 0013H:外部中
断 1入口地址。
001BH:定时器 1中断入口地址 。
0023H:串行口中断入口地址 。
在系统中断相应之后,将自动转各中断入口地址处
执行程序,而中断服务程序一般无法存放于几个单元之
内,因此在中断入口地址处往往存放一条无条件转移指
令进行跳转,以便执行中断服务程序。
2.3MCS- 51单片机输入 /输出( I/O)口
2.3.1 P0口
图 2.6给出了 P0口的逻辑结构,它由一个锁存器、两个三态输
入缓冲器、一个多路复用开关以及控制电路和驱动电路等组成。
D
CL
QP0.X
锁存器
MUX
P0.X
引脚
读锁存器
内部总线
写锁存器
读引脚
地址/数据
控
制
Vcc
T1
T2
图 2.6 P0口的逻辑结构
P0口可以作为输入输出口,在实际应用中它通常作为地址 /
数据复用总线。在访问外部存储器时,P0口为真正的双向口。
2.3.2 P1口
P1口是一个准双向口, 通常作为 I/O口使用, 其位结构图
如图 2.7。 由于在其输出端接有上拉电阻, 故可以直接输出而
无需外接上拉电阻 。
读锁存器
内部总线
读引脚
D
CL
QP1.X
锁存器
P1.X
引脚写锁存器
Vcc
T
图 2.7 位结构图
2.3.3 P2口
P2口位结构图如图 2.8。 P2通用为一个准双向口,其位
结构与 P0口相似。对于 8031单片机来说,P2口通常用作地址
信号输出。 D
C L
QP 0, X
锁 存 器
M U X
P 2, X
引 脚
写 锁 存 器
地 址
控
制
V c c
T
内 部 上 拉
电 阻
图 2.8 P2口位结构图
2.3.4 P3口
P3口的位结构图如图 2.9。 P3口为双功能口,当 P3口作为
通用 I/O口使用时,它为准双向口,且每位都可定义为输入或
输出口,其工作原理同 P1口类似。
读 锁 存 器
内 部 总 线
读 引 脚
D
C L
QP 1, X
锁 存 器
写 锁 存 器
P 3, X
引 脚
V c c
T
第 二 输 出 功 能
内 部 上 拉
电 阻
第 二 输 入 功 能
图 2.9 P3口的位结构图
P3口还具有第二功能, 其引脚描述如表 2-5。
表 2-5 P3口特殊功能
口线 特殊功能 信号名称
P3.0 RXD 串行输入口
P3.1 TXD 串行输出口
P3.2 外部中断 0输入口
P3.3 外部中断 1输入口
P3.4 T0 定时器 0外部输入口
P3.5 T1 定时器 1外部输入口
P3.6 WR 写选通输出口
P3.7 RD 读选通输出口
1INT
0INT
2.4 单片机的工作方式
2.4.1 复位及复位电路
在 MCS- 51中,最常见的复位电路为图 2.10所示的上电复
位电路,它能有效的实现上电复位和手动复位。 RST引脚是复
位信号输入端,复位信号为高电平有效,其有效时间应持续 24
个振荡周期以上才能完成复位操作,若使用 6MHz晶振,则需
持续 4μ S以上才能完成复位操作。图 2.10中,在通电瞬间,由
于 RC的充电过程,在 RST端出现一定宽度的正脉冲,只要该
正脉冲保持 10ms以上,就能使单片机自动复位,在 6MHz时钟
时,通常 CR取 22μF,R1取 200Ω,R2取 1KΩ,这时能可靠的上
电复位和手动复位。
8 0 5 1
8 7 5 1
8 0 3 1
R S T
C
R
R 1
R 2
+ 5 V
CPU在第二个机器周期内执行内部复位操作,以后每个机
器周期重复一次,直至 RST端电平变低。在单片机复位期间,
AlE和 信号都不产生。复位操作将对部分专用寄存器产生
影响 。
PSEN
图 2.10 上电复位电路
2.4.2 时钟电路和时序
1,时钟电路
根据硬件电路的不同,单片机的时钟连接方式可分为内
部时钟方式和外部时钟方式,如图 2.11所示。
8051
XTAL1
XTAL2
C1
C2
8051
XTAL2
XTAL1
Vcc
外部
时钟
输入
TTL
( a)内部方式时钟电路 ( b)外接时钟电路
图 2.11 时钟电路
2,指令时序
( 1) 振荡周期
振荡周期指为单片机提供定时信号的振荡源的周期或外
部输入时钟的周期 。
( 2) 时钟周期
时钟周期又称作状态周期或状态时间 S,它是振荡周期
的两倍, 它分为 P1节拍和 P2节拍, 通常在 P1节拍完成算术
逻辑操作, 在 P2节拍完成内部寄存器之间的传送操作 。
( 3) 机器周期
一个机器周期由 6个状态组成, 如果把一条指令的执行
过程分作几个基本操作, 则将完成一个基本操作所需的时间
称作机器周期 。 单片机的单周期指令执行时间就为一个机器
周期 。
( 4) 指令周期
指令周期即执行一条指令所占用的全部时间, 通常为 1~
4个机器周期 。
在图 2.12中给出了 MCS- 51单片机的典型取指、执行时序。
S1 S2 S6S3 S5S4 S1 S2 S6S3 S5S4
S1 S2 S6S3 S5S4 S1 S2 S6S3 S5S4
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1
P1 P2 P1 P2P1 P2P1 P2P1 P2P1 P2P1 P2P1 P2 P1 P2P1 P2P1 P2P1 P2
振荡器
ALE
再读下一个操作码
S1 S2 S6S3 S5S4
S1 S2 S6S3 S5S4
(a)单字节单周期指令,如INC
读操作码
读操作码
读第二字节
读下一个操作码
(b)双字节单周期指令,如ADD A,#DAT
读操作码 读下一个操作码(丢弃)
(c)单字节双周期指令,如INC DPTR
读操作码 读下一个操作码(丢弃)
无取指,无ALE
无取指
读下一个操作码
读下一个操作码
访问外部存储器
地址
数据
(d)单字节双周期指令,如MOVX
图 2.12 MCS- 51单片机取指、执行时序
2.4.3 单片机的低功耗方式
对于 MCS- 51系列机型来说, 它们有待机方式和掉电保护
方式两种低功耗方式 。 通过设置电源控制寄存器 PCON的相关
位可以确定当前的低功耗方式 。 PCON寄存器格式如下:
其中 SMOD:波特率倍增位
GF0,GF1:通用标志位
PD:掉电方式位, PD= 1为掉电方式
IDL:待机方式位, IDL= 1为待机方式
位序 B7 B6 B5 B4 B3 B2 B1 B0
位符号 SMOD / / / GF1 GF0 PD IDL
1,待机方式
将 PCON寄存器的 IDL位置, 1”,单片机则进入待机
方式 。 通常在待机方式下, 单片机的中断仍然可以使用,
这样可以通过中断触发方式退出待机模式 。
2,掉电保护方式
将 PCON寄存器的 PD位置, 1”,单片机则进入掉电保
护方式 。 如果单片机检测到电源电压过低, 此时除进行
信息保护外, 还需将 PD位被置, 1”,使单片机进入掉电
保护方式 。
MCS— 51系列单片机
芯片结构
2.1 MCS— 51系列单片机的结构原理
2.1.1 MCS-51单片机逻辑结构
MCS-51单片机的系统结构框图如图 2.1所示。
振 荡 器 及
定 时 电 路
4 K B
程 序 存 储 器
1 2 8 K B
数 据 存 储 器
2 个 1 6 位 定 时 器
/ 事 件 计 数 器
C P U
6 4 K B 总 线
扩 展 控 制
可 编 程
串 行 口
可 编 程 I / O
中 断
中 断
频 率 基 准 源 计 数 器
串 行
输 入
串 行
输 出
并 行 I / O 口控 制
图 2.1 MCS-51单片机的系统结构框图
由图 2.1可以看出, 单片机内部主要包含下列几个部件:
u 一个 8位 CPU;
u 一个时钟电路;
u 4Kbyte程序存储器;
u 128byte数据存储器;
u 两个 16位定时 /计数器;
u 64Kbyte扩展总线控制电路;
u 四个 8-bit并行 I/O端口;
u 一个可编程串行接口;
五个中断源,其中包括两个优先级嵌套中断
2.1.2 MCS- 51单片机内部结构
MCS- 51单片机芯片内部结构框图如图 2.2所示。
端 口 0 驱 动 器 端 口 2 驱 动 器
R A M
( 1 2 8 × 8 )
端 口 0 锁 存 器 端 口 2 锁 存 器
R O M
( 4 K × 8 ) 程 序 地 址 寄 存 器
缓 冲 器
P C 加 1 寄 存 器
程 序 计 数 器 P C
数 据 指 针 D P T R
堆 栈 指 示 器 S P
P C O N S C O N T M O D T C O N
T H 0 T L 0 T H 1 T L 1
S B U F
( T X )
S B U F
( R X )
I E
中 断, 串 行 口 和 定 时 器
R A M 地 址
寄 存 器
A C C
B 寄 存 器
A L U
状 态 寄 存 器
暂 存 器 2 暂 存 器 1
定 时
与
控 制
指 令
寄 存
器
端 口 1 锁 存 器 端 口 3 锁 存 器
端 口 1 驱 动 器 端 口 3 驱 动 器
X T A L 1 X T A L 2
P
0, 0
~ P
0, 7
P
2, 0
~ P
2, 7
P
1, 0
~ P
1, 7
P
3, 0
~ P
3, 7
A L E
R S T
P S E N
EA
V c c
V s s
( + 5 V )
图 2.2 MCS- 51单片机芯片内部结构框图
1,CPU
CPU即中央处理器的简称, 是单片机的核心部件, 它完
成各种运算和控制操作, CPU由运算器和控制器两部分电路
组成 。
( 1) 运算器电路
运算器电路包括 ALU(算术逻辑单元),ACC(累加
器),B寄存器、状态寄存器、暂存器 1和暂存器 2等部件,运
算器的功能是进行算术运算和逻辑运算。
( 2) 控制器电路
控制器电路包括程序计数器 PC,PC加 1寄存器、指令寄
存器、指令译码器、数据指针 DPTR、堆栈指针 SP、缓冲器以
及定时与控制电路等。控制电路完成指挥控制工作,协调单
片机各部分正常工作。
2,定时器 /计数器
MCS- 51单片机片内有两个 16位的定时 /计数器, 即定
时器 0和定时器 1。 它们可以用于定时控制, 延时以及对外
部事件的计数和检测等 。
3,存储器
MCS- 51系列单片机的存储器包括数据存储器和程序
存储器, 其主要特点是程序存储器和数据存储器的寻址空
间是相互独立的, 物理结构也不相同 。
4,并行 I/O口
MCS- 51单片机共有 4个 8位的 I/O口( P0,P1,P2和
P3),每一条 I/O线都能独立地用作输入或输出。 P0口为三
态双向口,能带 8个 TTL门电路,P1,P2和 P3口为准双向口,
负载能力为 4个 TTL门电路。
5,串行 I/O口
MCS- 51单片机具有一个采用通用异步工作方式的全双
工串行通信接口, 可以同时发送和接收数据 。
6,中断控制系统
8051共有 5个中断源, 即外中断 2个, 定时 /计数中断 2个,
串行中断 1个 。
7,时钟电路
MCS- 51芯片内部有时钟电路, 但晶体振荡器和微调电
容必须外接 。 时钟电路为单片机产生时钟脉冲序列, 振荡器
的频率范围为 1.2MHz~ 12MHz,典型取值为 6MHz。
8,总线
以上所有组成部分都是通过总线连接起来,从而构成一
个完整的单片机。系统的地址信号、数据信号和控制信号都
是通过总线传送的,总线结构减少了单片机的连线和引脚,
提高了集成度和可靠性。
2.1.3 引脚信号
图 2.3为 MCS- 51系列单片机引脚图及逻辑符号,它们
为标准的 40脚 DIP封装。 2.3/0 PINT
6.3/ PWR
3.3/1 PIN T
0.1P
1.1P
2.1P
3.1P
4.1P
5.1P
6.1P
7.1P
PD
VR ST /
0.3/ PRXD
1.3/ PT X D
4.3/0 PT
5.3/1 PT
7.3/ PRD
2X T A L
1X TAL
V s s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Vcc
0.0P
1.0P
2.0P
3.0P
4.0P
5.0P
6.0P
7.0P
V ppEA /
P R O GA L E /
PSE N
7.2P
6.2P
5.2P
4.2P
3.2P
2.2P
1.2P
0.2P21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
80 31
80 51
87 51
Vcc
V s s
PD
VR ST /
1XT A L
2X TA L
V ppEA /
PSE N
P R O GA L E /
P 3
口
第
二
功
能
P 0
口
P 1
口
P 2
口
地
址
数
据
总
线
地
址
总
线
8 0 3 1
8 0 5 1
8 7 5 1
图 2.3 MCS- 51系列单片机引脚图及逻辑符号
电源引脚 Vcc和 Vss
Vcc:电源端, 接+ 5V。
Vss:接地端 。
时钟电路引脚 XTAL1和 XTAL2
XTAL1:接外部晶振和微调电容的一端, 在片内它是振荡
器倒相放大器的输入, 若使用外部 TTL时钟时, 该引脚必须接
地 。
XTAL2:接外部晶振和微调电容的另一端, 在片内它是振
荡器倒相放大器的输出, 若使用外部 TTL时钟时, 该引脚为外
部时钟的输入端 。
地址锁存允许 ALE
系统扩展时, ALE用于控制地址锁存器锁存 P0口输出的低
8位地址, 从而实现数据与低位地址的复用 。
外部程序存储器读选通信号
是读外部程序存储器的选通信号, 低电平有效 。
程序存储器地址允许输入端 /VPP
当为高电平时, CPU执行片内程序存储器指令, 但当 PC
中的值超过 0FFFH时, 将自动转向执行片外程序存储器指令 。
当为低电平时, CPU只执行片外程序存储器指令 。
复位信号 RST
该信号高电平有效, 在输入端保持两个机器周期的高电
平后, 就可以完成复位操作 。
1,输入 /输出口引脚 P0,P1,P2和 P3
P0口 ( P0.0~ P0.7),该端口为漏极开路的 8位准双向
口, 负载能力位 8高 LSTTL负载, 它为 8位地址线和 8位数
据线的复用端口 。
P1口 ( P1.0~ P1.7),它是一个内部带上拉电阻的 8位
准双向 I/O口, P1口的驱动能力为 4个 LSTTL负载 。
P2口 ( P2.0~ P2.7),它为一个内部带上拉电阻的 8位
准双向 I/O口, P2口的驱动能力也为 4个 LSTTL负载 。 在
访问外部程序存储器时, 它作存储器的高 8位地址线 。
P3口 ( P3.0~ P3.7), P3口同样是内部带上拉电阻的 8
位准双向 I/O口, P3口除了作为一般的 I/O口使用之外, 其
还具有特殊功能 。
2.2 MCS— 51单片机的存储器
MCS- 51的存储器结构如图 2.4所示。在本节中我们将
对单片机的内部数据存储器、内部程序存储器和外部存储
器分别作一介绍。
外部
FFFF
1000
内部
( =1)
外部
( =0)
0FFF
0000
0FFF
0000
专用寄存器
内部RAM
FF
80
7F
00
FFFF
0000
程序存储器
内部数据存储器 外部数据存储器
图 2.4 MCS- 51的存储器结构如
2.2.1 内部数据存储器
用户区
位寻址区(位地址0 0 ~7 F )
工作寄存器区3 (R 0 ~R 7 )
工作寄存器区2 (R 0 ~R 7 )
工作寄存器区1 (R 0 ~R 7 )
工作寄存器区0 (R 0 ~R 7 )
7FH
30H
2FH
20H
1FH
00H
.
.
.
.
.
.
.
.
.
图2, 5 M C S-5 1 片内 R A M 的空间分配
1,内部数据存储器低 128单元
在低 128字节存储单元中,前 32个单元( 00H~ 1FH)
作为工作寄存器使用,这 32个寄存器分作 4组,每组由 8个
通用寄存器( R0~ R7)组成,组号依次为 0,1,2和 3。通
过对程序状态字中 RS1和 RS0的设置,可以决定选用哪一组
工作寄存器,通常没有选中的单元也可作为一般的数据缓
存使用。系统上电复位时,默认选中第 0组寄存器。
在工作寄存器后的 16个数据单元( 20H~ 2FH),它们既
可以作为一般的数据单元使用,由可以按位对每个单元进行
操作,因此这 16个数据单元又称作位寻址区。位寻址区共计
128位,其位地址为 00H~ 0FH。
在内部 RAM的低 128个单元中, 剩余的 80个数据单元即
30H~ 7FH为真正的用户 RAM区, 对于这些区域, 用户只能
以存储单元的形式来使用, 通常在应用中也把堆栈开辟在这
段区域 。
2,内部数据存储器高 128单元
内部数据存储器的高 128个单元是为专用寄存器提供的,
因此该区也称作特殊功能寄存器区( SFR),它们主要用于存
放控制命令、状态或数据。除去程序计数器 PC外,还有 21个
特殊功能寄存器,其地址空间为 80H~ FFH。这 21个寄存器中
有 11个特殊功能寄存器具有位寻址能力,它们的字节地址刚好
能被 8整除。下面将对部分专用寄存器作简要介绍。
? 累加器 ACC
累加器为 8位寄存器, 是程序中最常用的专用寄存器,
在指令系统中累加器的助记符为 A。 大部分单操作数指令的
操作取自累加器, 很多双操作数指令的一个操作数也取自累
加器 。 加, 减乘和除等算术运算指令的运算结果都存放在累
加器 A或 AB寄存器中, 在变址寻址方式中累加器被作为变址
寄存器使用 。 在 MCS- 51中由于只有一个累加器, 而单片机
中的大部分数据操作都是通过累加器进行的,故累加器的使用
是十分频繁的。
? B寄存器
B寄存器为 8位寄存器, 主要用于乘除指令中 。 乘法指令的
两个操作数分别取自累加器 A和寄存器 B,其中 B为乘数, 乘法
结果的高 8位存放于寄存器 B中 。 除法指令中, 被除数取自 A,
除数取自 B,除法的结果商数存放于 A,余数存放于 B中 。 在其
它指令中, B寄存器也可作为一般的数据单元来使用 。
? 程序状态字 PSW
程序状态字是一个 8位寄存器,它包含程序的状态信息。在
状态字中,有些位状态是根据指令执行结果,由硬件自动完成
设置的,而有些状态位则必须通过软件方法设定。 PSW中的每
个状态位都可由软件读出,PSW的各位定义如表 2.1。
表 2.1 PSW的各状态位定义
(1)CY:进位标志位
在执行某些算术和逻辑指令时,可以被硬件或软件置位或清
零。在算术运算中它可作为进位标志,在位运算中,它作累加器
使用,在位传送、位与和位或等位操作中,都要使用进位标志位。
(2) AC:辅助进位标志
进行加法或减法操作时,当发生低四位向高四位进位或借位
时,AC由硬件置位,否则 AC位被置, 0”。在进行十进制调整指
令时,将借助 AC状态进行判断。
位 序 PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0
位标志 CY AC F0 RS1 RS0 OV / P
(3)用户标志位
该位为用户定义的状态标记, 用户根据需要用软件对其置
位或清零, 也可以用软件测试 F0来控制程序的跳转 。
(4)RS1和 RS0:寄存器区选择控制位
该两位通过软件置, 0”或, 1”来选择当前工作寄存器区 。
(5)OV:溢出标志位
当执行算术指令时, 由硬件置位或清零来指示溢出状态 。
在带符号的加减运算中, OV= 1表示加减运算结果超出了累加
器 A所能表示的符号数有效范围 ( - 128~+ 127), 即运算结
果是错误的, 反之, OV= 0表示运算正确, 即无溢出产生 。
无符号数乘法指令 MUL的执行结果也会影响溢出标志,
若置于累加器 A和寄存器 B的两个数的乘积超过了 255,则 OV
= 1,反之 OV= 0。 由于乘积的高 8位存放于 B中, 低 8位存放于
A中, OV= 0则意味着只要从 A中取得乘积即可, 否则要从 BA
寄存器对中取得乘积结果 。
在除法运算中, DIV指令也会影响溢出标志, 当除数为
0时, OV= 1,否则 OV= 0。
(6) P:奇偶标志位
每个指令周期由硬件来置位或清零用以表示累加器 A
中 1的个数的奇偶性, 若累加器中 1的个数为奇数则 P= 1,
否则 P= 0。
l 数据指针 DPTR
数据指针 DPTR为一个 16位的专用寄存器, 其高位用
DPH表示, 其低位用 DPL表示, 它即既可以作为一个 16位
的寄存器来使用, 也可作为两个 8位的的寄存器 DPH和 DPL
使用 。 DPTR在访问外部数据存储器时既可用来存放 16位
地址, 也可作地址指针使用 。 如 MOVX @DPTR,A。
l I/O端口 P0~ P3
P0~ P3为四个 8位的特殊功能寄存器, 分别是四个并行 I/O
端口的锁存器, 当 I/O端口的某一位用作输入时, 对应的锁存器
必须先置, 1”。
l 定时器 /计数器
在 MCS- 51中,除 8032/8052外都只有两个 16位定时器 /计
数器 T0和 T1,它们由两个相互独立的 8位寄存器组成 TH和 TL,
共有四个独立的寄存器 TH0,TL0,TH1和 TL1,只可对这四个
寄存器独立寻址,而不能作为一个 16位寄存器来寻址。
l 串行数据缓冲寄存器
串行数据缓冲器 SBUF用于存放将要发送或已接收的数据,
它由发送缓冲器和接收缓冲器组成, 将要发送的数据被送入
SBUF时进入发送缓冲器, 反之进入接收缓冲器 。
2.2.2 外部数据存储器
在 MCS- 51中,其片外数据存储器和 I/O口与片内数据存储
器空间 0000FH~ FFFFH是重叠的。在 8051单片机中采用
MOV和 MOVX两种指令来区分片内外 RAM空间,其中片内
RAM使用 MOV指令,片外 RAM和 I/O口使用 MOVX指令。
2.2.3 程序存储器
在 MCS- 51系列中,程序存储器被用来存放程序、常数
或表格等。在 8051中,其片内有 4K字节的 ROM存储单元,
地址为 0000H~ 0FFFH。 8751有 4K字节的 EPROM,而 8052和
8752则有 8K字节的片内存储器。 8031和 8032无片内程序存储
器,所以片内程序存储器的有无是区分芯片的主要标志。
在程序存储器中, 以下 6个单元具有特殊含义:
0000H:单片机复位后, PC= 0000H,程序从 0000H
开始执行指令 。
0003H:外部中断 0入口地址。
000BH:定时器 0中断入口地址。 0013H:外部中
断 1入口地址。
001BH:定时器 1中断入口地址 。
0023H:串行口中断入口地址 。
在系统中断相应之后,将自动转各中断入口地址处
执行程序,而中断服务程序一般无法存放于几个单元之
内,因此在中断入口地址处往往存放一条无条件转移指
令进行跳转,以便执行中断服务程序。
2.3MCS- 51单片机输入 /输出( I/O)口
2.3.1 P0口
图 2.6给出了 P0口的逻辑结构,它由一个锁存器、两个三态输
入缓冲器、一个多路复用开关以及控制电路和驱动电路等组成。
D
CL
QP0.X
锁存器
MUX
P0.X
引脚
读锁存器
内部总线
写锁存器
读引脚
地址/数据
控
制
Vcc
T1
T2
图 2.6 P0口的逻辑结构
P0口可以作为输入输出口,在实际应用中它通常作为地址 /
数据复用总线。在访问外部存储器时,P0口为真正的双向口。
2.3.2 P1口
P1口是一个准双向口, 通常作为 I/O口使用, 其位结构图
如图 2.7。 由于在其输出端接有上拉电阻, 故可以直接输出而
无需外接上拉电阻 。
读锁存器
内部总线
读引脚
D
CL
QP1.X
锁存器
P1.X
引脚写锁存器
Vcc
T
图 2.7 位结构图
2.3.3 P2口
P2口位结构图如图 2.8。 P2通用为一个准双向口,其位
结构与 P0口相似。对于 8031单片机来说,P2口通常用作地址
信号输出。 D
C L
QP 0, X
锁 存 器
M U X
P 2, X
引 脚
写 锁 存 器
地 址
控
制
V c c
T
内 部 上 拉
电 阻
图 2.8 P2口位结构图
2.3.4 P3口
P3口的位结构图如图 2.9。 P3口为双功能口,当 P3口作为
通用 I/O口使用时,它为准双向口,且每位都可定义为输入或
输出口,其工作原理同 P1口类似。
读 锁 存 器
内 部 总 线
读 引 脚
D
C L
QP 1, X
锁 存 器
写 锁 存 器
P 3, X
引 脚
V c c
T
第 二 输 出 功 能
内 部 上 拉
电 阻
第 二 输 入 功 能
图 2.9 P3口的位结构图
P3口还具有第二功能, 其引脚描述如表 2-5。
表 2-5 P3口特殊功能
口线 特殊功能 信号名称
P3.0 RXD 串行输入口
P3.1 TXD 串行输出口
P3.2 外部中断 0输入口
P3.3 外部中断 1输入口
P3.4 T0 定时器 0外部输入口
P3.5 T1 定时器 1外部输入口
P3.6 WR 写选通输出口
P3.7 RD 读选通输出口
1INT
0INT
2.4 单片机的工作方式
2.4.1 复位及复位电路
在 MCS- 51中,最常见的复位电路为图 2.10所示的上电复
位电路,它能有效的实现上电复位和手动复位。 RST引脚是复
位信号输入端,复位信号为高电平有效,其有效时间应持续 24
个振荡周期以上才能完成复位操作,若使用 6MHz晶振,则需
持续 4μ S以上才能完成复位操作。图 2.10中,在通电瞬间,由
于 RC的充电过程,在 RST端出现一定宽度的正脉冲,只要该
正脉冲保持 10ms以上,就能使单片机自动复位,在 6MHz时钟
时,通常 CR取 22μF,R1取 200Ω,R2取 1KΩ,这时能可靠的上
电复位和手动复位。
8 0 5 1
8 7 5 1
8 0 3 1
R S T
C
R
R 1
R 2
+ 5 V
CPU在第二个机器周期内执行内部复位操作,以后每个机
器周期重复一次,直至 RST端电平变低。在单片机复位期间,
AlE和 信号都不产生。复位操作将对部分专用寄存器产生
影响 。
PSEN
图 2.10 上电复位电路
2.4.2 时钟电路和时序
1,时钟电路
根据硬件电路的不同,单片机的时钟连接方式可分为内
部时钟方式和外部时钟方式,如图 2.11所示。
8051
XTAL1
XTAL2
C1
C2
8051
XTAL2
XTAL1
Vcc
外部
时钟
输入
TTL
( a)内部方式时钟电路 ( b)外接时钟电路
图 2.11 时钟电路
2,指令时序
( 1) 振荡周期
振荡周期指为单片机提供定时信号的振荡源的周期或外
部输入时钟的周期 。
( 2) 时钟周期
时钟周期又称作状态周期或状态时间 S,它是振荡周期
的两倍, 它分为 P1节拍和 P2节拍, 通常在 P1节拍完成算术
逻辑操作, 在 P2节拍完成内部寄存器之间的传送操作 。
( 3) 机器周期
一个机器周期由 6个状态组成, 如果把一条指令的执行
过程分作几个基本操作, 则将完成一个基本操作所需的时间
称作机器周期 。 单片机的单周期指令执行时间就为一个机器
周期 。
( 4) 指令周期
指令周期即执行一条指令所占用的全部时间, 通常为 1~
4个机器周期 。
在图 2.12中给出了 MCS- 51单片机的典型取指、执行时序。
S1 S2 S6S3 S5S4 S1 S2 S6S3 S5S4
S1 S2 S6S3 S5S4 S1 S2 S6S3 S5S4
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1
P1 P2 P1 P2P1 P2P1 P2P1 P2P1 P2P1 P2P1 P2 P1 P2P1 P2P1 P2P1 P2
振荡器
ALE
再读下一个操作码
S1 S2 S6S3 S5S4
S1 S2 S6S3 S5S4
(a)单字节单周期指令,如INC
读操作码
读操作码
读第二字节
读下一个操作码
(b)双字节单周期指令,如ADD A,#DAT
读操作码 读下一个操作码(丢弃)
(c)单字节双周期指令,如INC DPTR
读操作码 读下一个操作码(丢弃)
无取指,无ALE
无取指
读下一个操作码
读下一个操作码
访问外部存储器
地址
数据
(d)单字节双周期指令,如MOVX
图 2.12 MCS- 51单片机取指、执行时序
2.4.3 单片机的低功耗方式
对于 MCS- 51系列机型来说, 它们有待机方式和掉电保护
方式两种低功耗方式 。 通过设置电源控制寄存器 PCON的相关
位可以确定当前的低功耗方式 。 PCON寄存器格式如下:
其中 SMOD:波特率倍增位
GF0,GF1:通用标志位
PD:掉电方式位, PD= 1为掉电方式
IDL:待机方式位, IDL= 1为待机方式
位序 B7 B6 B5 B4 B3 B2 B1 B0
位符号 SMOD / / / GF1 GF0 PD IDL
1,待机方式
将 PCON寄存器的 IDL位置, 1”,单片机则进入待机
方式 。 通常在待机方式下, 单片机的中断仍然可以使用,
这样可以通过中断触发方式退出待机模式 。
2,掉电保护方式
将 PCON寄存器的 PD位置, 1”,单片机则进入掉电保
护方式 。 如果单片机检测到电源电压过低, 此时除进行
信息保护外, 还需将 PD位被置, 1”,使单片机进入掉电
保护方式 。