第 2章 MCS-51单片机的硬件结构
第 2章 MCS-51单片机的硬件结构
2.1 MCS-51单片机的基本结构
2.2 MCS-51单片机的引脚及片外总线结构
2.3 微处理器, CPU的时序及辅助电路
2.4MCS-51单片机的存储器配置
2.1.1 MCS-51单片机的基本组成
图 2-1 MCS-51单片机基本结构示意图
时钟电路 SFR和 RAM ROM
CPU
定时 /计数器
并行端口 中断系统串行端口
系 统 总 线
时钟源 T
0 T1
P0 P1 P2 P3 TXD RXD INT0 INT1
MCS-51单片机的基本组成
( 1) 一个 8位微处理器 CPU。
( 2) 数据存储器 RAM和特殊功能寄存器 SFR。
( 3) 内部程序存储器 ROM。
( 4) 两个定时 /计数器, 用以对外部事件进行
计数, 也可用作定时器 。
( 5) 四个 8位可编程的 I/O( 输入 /输出 ) 并行
端口, 每个端口既可做输入, 也可做输出 。
( 6) 一个串行端口, 用于数据的串行通信 。
( 7) 中断控制系统 。
( 8) 内部时钟电路 。
返回本节
2.1.2 MCS-51单片机的外部引脚说明
8031
8051
8751
?1,I/O口线功能
4个 8位并行 I/O 接口引脚
P0.0~ P0.7, P1.0~ P1.7,P2.0~
P2.7和 P3.0~ P3.7
为多功能引脚,可自动切换
用作数据总线、地址总线、
控制总线和或 I/O 接口外部
引脚。
40个引脚分为四类:电源、地 2条;
时钟 2条;控制 4条; I/O线 32条。
P0.0--P0.7(39-32):双向 I/O口 P0.
第二功能是在访问外部存储器时,可分时用作低 8位
地址和 8位数据线;在对 8751编程和校验时,用于数
据的输人/输出。
PO口能以吸收电流的方式驱动 8个 LS型 TTL负载
Pl,0--Pl,7(1-8):双向 I/O口 Pl。 P1口能驱动(吸收
或输出电流 )4个 LS型 TTL负载。
在对 EPROM编程和程序验证时,它接收低 8位地址。
在 8052单片机中 P1,0还用作定时器 2的计数触发输人
端 T2,P1,1还用作定时器 2的外部控制端 T2EX。
P2,0--P2,7(21-28),双向 I/O口 P2。 P2口可以驱动
( 吸收或输出电流 ) 4个 LS型 TTL负载 。
第二功能是在访问外部存储器时, 输出高 8位地址 。
在对 EPROM编程和校验时, 它接收高位地址 。
P3,0--P3.7(10-17):双向 I/O口 P3。 P3口能驱动(吸
收或输出电流) 4个 LS型 TTL负载。
P3口的每条引脚都有各自的第二功能,详见 2,6节。
2.控制线
ALE,地址锁存允许信号端
PSEN,外部程序存储器读
选通信号端
EA/VPP,程序存储器选择信
号端和编程电源输入端
8031
8051
8751
RST/VPD( 9),
RST是复位信号输人端
ALE/ ( 30):
ALE是地址锁存允许信号
PROG
PROG
在访问外部存储器时,用来锁存由 PO口送出的低 8
位地址信号 。在不访问外部存储器时,ALE以振荡频
率 1/ 6的固定速率输出脉冲信号 。因此它可用作对外
输出的时钟。但要注意,只要外接有存储器,ALE端输
出的就不再是连续的周期脉冲信号。
第二功能 用于对 8751片内 EPROM编程的脉冲输
人端 。
它是外部程序存储器 ROM的读选通信号 。 在执行访
问外部 ROM指令时, 会自动产生 PSEN信号;而在访
问外部数据存储器 RAM或访问内部 ROM时, 不产生
PSEN信号 。
PSEN (29):
访问外部存储器的控制信号。
当 EA高电平时,访问内部程序存储器;但当程序计
数器 PC的值超过 OFFFH(对 8051/80051/8751)或 1
FFFH(对 8052)时,将自动转向执行外部程序存储器
内的程序。
当 EA保持低电平时,只访问外部程序存储器,不管
是否有内部程序存储器。
第二功能 VPP为对 8751片内 EPROM的 21 V编程电源
输入。
/ PPEA V
( 31):
RST/VPD( 9),
RST是复位信号输人端 。 当此
输人端保持两个机器周期 ( 24
个振荡周期 ) 的高电平时, 就
可以完成复位操作 。
第二功能是 VPD, 即备用电源
输人端 。 当主电源发生故障,
降低到规定的低电平以下时,
vl,1。 将为片内 RAM提供备
用电源, 以保证存储在 RAM
中的信息不丢失 。
单片机的复位操作使单片机进
入初始化状态,其中包括使程
序计数器 PC= 0000H,这表明
程序从 0000H地址单元开始执
行。 21个特殊功能寄存器复
位后的状态为确定值。 。
XTALl( 19):
接外部晶体的一个引脚。 当单片机采用外部时钟信号时,此脚应
接地。
XTAL2( 18), 接外部晶体的一个引脚。当单片机采用外部时
钟信号时,外部时钟信号由此引脚接入 。
使用单片机内部振荡电路时,用来接外部晶体的两端和微调电
容。当单片机采用外部时钟信号时,则用来输入时钟脉冲。
Vss( 20),接地端。
Vcc( 40),电源端,接十 5V。
2.2 微处理器
1,运算器
运算器由 8位算术逻辑运算单元 ALU( Arithmetic
Logic Unit),8位累加器 ACC( Accumulator),8位
寄存器 B、程序状态字寄存器 PSW( Program Status
Word),8位暂存寄存器 TMP1和 TMP2等组成。 主要
进行数据的处理和加工。
1),ALU功能,用来完成二进制数的算术四则运算
和值的逻辑运算。并通过对运算结果的判定,影响
程序状态字寄存器 PSW相关位的状态。
2) ACC, 8位专用 寄存器,作 ALU的一个输入端,
同时 ALU的输出运算结果也送到 ACC,最忙。
运算器
通道 0驱动器 通道 2驱动器
RAM地址
锁存器 RAM 通道 0 锁
存器
通道 2 锁
存器
ROM/
EPROM
B寄存器
程序地址寄存器
缓冲器
PC递增器
程序计数器 PC0
驱动器
DPTR指针
VCC
GND
P1.0~ P1.7
堆栈指针 SPACC
TMP2
PSW
通道 3锁存器通道 1锁存器
通道 1驱动器 通道 3驱动器
TMP1
SCON TMODPCON TCON
TL0 TH1TH0 TL1
IESBUF(TX/RX) IP
中断, 串行口和定时器逻辑
振荡器
P3.0~ P3.7
RST
EA
ALE
PSEN
XTAL2XTAL1
ALU
(+5V)





定时

控制
逻辑





图 2-2 MCS-51片内总体结构框图
内部总线
思考题
1,ALU的功能是什么?解释 ADD A,#24H。
2,ALU的两个输入端的操作数来自何处?
3、暂存寄存器 TMP起作用?
4、什么总线?有何特点?什么是内部总线?
什么是外部总线?( P7)
5、什么是缓冲器?工作原理?
3)程序状态字寄存器 PSW
定义格式,C:进借位标志; AC:辅助进借位标志;
F0:用户标志; RS1,RS0:工作寄存器组选择。
D7 D6 D5 D4 D3 D2 D1 D0
C AC F0 RS
1
RS
0
OV X P
RS1 RS0 选择工作寄存器组
0 0 0组( 00H~ 07H)
0 1 1组( 08H~ 0FH)
1 0 2组( 10H~ 17H)
1 1 3组( 18H~ 1FH)
OV:溢出标志
P:奇偶标志
2.控制器
是 CPU的大脑中枢, 主要由 控制部件, 时钟发
生器, 指令寄存器 IR,指令译码器 ID,数据指
针 DPTR,程序计数器 PC,堆栈指针 SP等组成 。
功能,对逐条指令进行译码,并通过定时和控制电路
在规定的时刻发出各种操作所需的内部和外部控制信
号,协调各部分的工作,从而使指令得以执行。
存入指
令寄存
器寄存
指令译码器译码
由定时与控制电路产生一系列控制信号
思考题:一条指令如何执行?
通道 0驱动器 通道 2驱动器
RAM地址
锁存器 RAM 通道 0 锁
存器
通道 2 锁
存器
ROM/
EPROM
B寄存器
程序地址寄存器
缓冲器
PC递增器
程序计数器 PC0
驱动器
DPTR指针
VCC
GND
P1.0~ P1.7
堆栈指针 SPACC
TMP2
PSW
通道 3锁存器通道 1锁存器
通道 1驱动器 通道 3驱动器
TMP1
SCON TMODPCON TCON
TL0 TH1TH0 TL1
IESBUF(TX/RX) IP
中断, 串行口和定时器逻辑
振荡器
P3.0~ P3.7
RST
EA
ALE
PSEN
XTAL2XTAL1
ALU
(+5V)





定时

控制
逻辑





图 2-2 MCS-51片内总体结构框图
通道 0驱动器 通道 2驱动器
RAM地址
锁存器 RAM 通道 0 锁
存器
通道 2 锁
存器
ROM/
EPROM
B寄存器
程序地址寄存器
缓冲器
PC递增器
程序计数器 PC0
驱动器
DPTR指针
VCC
GND
P1.0~ P1.7
堆栈指针 SPACC
TMP2
PSW
通道 3锁存器通道 1锁存器
通道 1驱动器 通道 3驱动器
TMP1
SCON TMODPCON TCON
TL0 TH1TH0 TL1
IESBUF(TX/RX) IP
中断, 串行口和定时器逻辑
振荡器
P3.0~ P3.7
RST
EA
ALE
PSEN
XTAL2XTAL1
ALU
(+5V)





定时

控制
逻辑





图 2-2 MCS-51片内总体结构框图
P0.0~ P0.7 P2.0~ P2.7
返回本节
单片机时钟电路通常有两种形式:
1,内部振荡方式,MCS-51单片机片内有一个
用于构成振荡器的高增益反相放大器, 引脚
XTAL1和 XTAL2分别是此放大器的输入端和输
出端 。 把放大器与作为反馈元件的晶体振荡器
或陶瓷谐振器连接, 就构成了内部自激振荡器
并产生振荡时钟脉冲 ( 如图 2-10所示 ) 。
2,外部振荡方式,外部振荡方式就是把外部
已有的时钟信号引入单片机内 ( 如图 2-11所
示 ) 。
3、单片机时钟电路及 CPU基本时序
3、单片机时钟电路及 CPU基本时序
向 CPU提供两相时钟信号
振荡器输出信号
一、机器周期、状态、振荡周期
一个机器周期 =6个状态 =12个振荡周期
1、振荡周期, 振荡器输出的 振荡时钟脉冲 信号的 周
期。 单片机以晶体振荡器的振荡周期 (或外部引入的
时钟周期 )为最小的时序单位,片内的各种微操作都
以此周期为时序基准。
2、时钟周期, 又称状态周期、状态时间 S,是振
荡周期的两倍。分为 P1,P2节拍。 P1节拍通常完
成逻辑操作,P2节拍通常完成内部寄存器间数据
传送。
3,机器周期
若把一条指令执行过程分为几个基本操作,则执行
每个基本操作所需要的时间,称为机器周期。 单片机
的一个机器周期包括 12个振荡周期,分为 6个 S状态:
S1 -S6。每个状态又分为 2拍,即前面介绍的 P1和 P2信
号;个机器周期中的 12个振荡周期可表示为
S1P1,S1P2,S2P1…… S6P1,S6P2o
4、指令周期
CPU执行一条指令所需要的时间。是以机器周期
为单位的, CPU执行一条指令通常需要 1~ 4个机器周
期 。
P1 P2
S1
P2
振荡周期
时钟周期
机器周期 机器周期
指令周期
XTAL2
(OSC)
S2 S3 S4 S5 S6 S1 S2 S4 S5S3 S6
P1 P1 P1 P1 P1 P1 P1 P1 P1 P1 P1P2 P2 P2 P2 P2 P2 P2 P2 P2 P2 P2
MCS-51单片机各种周期的相互关系
思考题:若采用 12MHZ晶振,各周期是多少?
振荡周期= 1/fosc=1/12MHZ=0.0833us
再读下一条
指令
再读下一条
指令
XTAL2
(OSC)
P 2
S1
ALE
读操作码 读下一个操作码( 丢弃 )
读第二字节
( a) 单字节, 单周期指令 例,MOV A R1
( d) 单字节, 双周期指令, 如 MOVX
P 1 P 2
S1
P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 2
S5
P 2
S6
P 2
S1
P 1 P 1 P 1 P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 1 P 2
S5
P 2
S6
P 2
S1 S2
P 1 P 1 P 1
P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 1 P 2
S5
P 1 P 2
S6
P 1 P 2
S1
P 1
P 2
S1
读操作码
P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 1 P 2
S5
P 1 P 2
S6
P 1 P 2
S1
P 1
读下一个操作码 ( 丢弃 )
( b) 双字节, 单周期指令 例,ADD A dir
( c) 单字节, 双周期指令 例,INC DPTR
读 操 作 码 (
MOVX)
读下一个操作码
( 丢弃 )
无取指无 ALE 无取指
地址 数据 ( DATA)
访问外部存储器
P 2
S1
读操作码
P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 1 P 2
S5
P 1 P 2
S6
P 1 P 2
S1
P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 1 P 2
S5
P 1 P 2
S6
P 1 P 2
S1
P 1 P 2
S2
P 1
P 2
S1
P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 1 P 2
S5
P 1 P 2
S6
P 1 P 2
S1
P 1 P 2
S2
P 1 P 2
S3
P 1 P 2
S4
P 1 P 2
S5
P 1 P 2
S6
P 1 P 2
S1
P 1 P 2
S2
P 1
二,CPU执行指令时序
2.3 MCS-51单片机的存储器配置
2.3.1 片内数据存储器
2.3.2 片外数据存储器
2.3.3 程序存储器
返回本章首页
2.3.1 片内数据存储器
见下张幻灯片







SFR
通用
RAM区
00H
1FH
20H
2FH
30H
7FH
80H
FFH
80H
88H
90H
98H
A0H
A8H
B0H
B8H
D0H
E0H
F0H 特殊









外 部
RAM
(I/O口
地址 )
0000H
FFFFH
内部数据存储器
( a)
外部数据存储器
( b)
FFFFH
外部
ROM
内部
ROM
(EA=1)
外部
ROM
(EA=0)
0000H 0000H
0FFFH 0FFFH
1000H
程序存储器
( c)
工作寄
存器区
图 2-9 MCS-51单片机存储器结构
位寻址区
128B
RAM
当某一组被设定成工作寄存器组后,该组中
的 8个寄存器,从低地址到高地址就分别称为
Ro-R7,从而可以把它们用作通用寄存器, 并
可按寄存器寻址方式被访问。 一旦工作寄存
器组被指定后,另外三组寄存器则同其它数
据 RAM一样,只能按字节地址被予以读写。
工作寄存器区
00H— 1FH,供用户编程使用,临时存放 8位
信息。共四组,每组 8个单元,即 8个 寄存器
位寻址区
20H— 2FH,16个字节。或布尔处理区。
该区每一位都被赋予一个地址,供 128位。
每个地址单元可进行字节操作之外,还可
进行为操作。
表 2-3 内部数据存储器中的位地址
数据缓冲区
30H— 7FH,即
用户区,供 80个
单元。用于存放
运算数据和结果。
实际上不使用的
位寻址的字节和
不使用的工作寄
存器区都可以用
作 数据缓冲区使
用。
堆栈区
用户可以指定内部 RAM的最高若干字节做为堆栈区。
在初始化程序中,可以对堆栈指针 SP写入栈底的地址,
于是从 SP指定的栈底直到 7FH单元都是堆栈区。 例如
MOV SP # 5FH.那么.从 60H— 7FH单元都是堆栈区。
堆栈是片内 RAM中临时开辟的暂存区, 堆栈主要是
为子程序调用和中断操作而设立的 。 其具体功能有
两种:保护现场和保护断点 。 计算机无论是执行子
程序还是执行中断操作, 最后都要返回主程序, 因
此计算机在转去执行这些程序之前, 必须考虑其返
回问题 。 这就要预先把主程序的断点保护起来, 为
程序的正确返回作准备 。 那么, 把断点和现场内容
保护在哪里? 这就必须保护在堆栈内,
思考题(教材 P31-P33页)
1、何谓堆栈?
2、为什么要设置堆栈?
3、栈区是如何确定?
5、数据进栈、出栈按何规律?用何指令?
6、进栈、出栈时指针如何变化?
7、栈区存放什么内容?
特殊功能寄存器区( SFR)
特殊功能寄存器 也叫专用寄存器,专用于控制、
管理片内算术逻辑部件、并行 I/O口、定时器 /
计数器、中断系统等功能模块的工作,用户在
编程时可以设定,却不能自由移作它用。
表 2-4 特殊功能寄存器地址及功能表
2.3.2 片外数据存储器
外部数据存储器又称外部 RAM,当片内 RAM
不能满足数量上的要求时,可通过总线端口和
其他 I/O口扩展外部数据 RAM,其最大容量可
达 64K字节,其结构如图所示。
在片外数据存储器中,数据区和扩展的 I/O口
是统一编址的,使用的指令也完全相同,因此,
用户在应用系统设计时,必须合理地进行外部
RAM和 I/O端口的地址分配,并保证译码的唯
一性。
返回本节
2.3.3 程序存储器
程序存储器的结构如
图 2-9( c) 所示, 包
括片内和片外程序存
储器两个部分 。 其主
要用来存放编好的用
户程序和表格常数,
它以 16位的程序计数
器 PC作为地址指针,
故寻址空间为 64KB。
返回本节
FFFFH
外部
ROM
内部
ROM
(EA=1)
外部
ROM
(EA=0)
0000H 0000H
0FFFH 0FFFH
1000H
程序存储器
( c)
2.3.4 单片机复位电路及复位状态
1,复位电路
单片机复位电路包括片内、片外两部分。外部
复位电路就是为内部复位电路提供两个机器周
期以上的高电平而设计的。 MCS-51单片机通
常采用上电自动复位和按键手动复位两种方式。
如图 2-14所示。
2.单片机复位后的状态
单片机运行出错或进入死循环时,可按复位键
重新运行。 21个特殊功能寄存器复位后的状态
为确定值,如表 2-6所示。
22μF
C1
RST
R1
1KΩ
+5V
22μF
C1
RST
+5V
R2
200Ω
RST
R1
+5V
C2
22μF
8031
8051
8751
8031
8051
8751
8031
8051
8751
( a) 上电复位电路 ( c) 按键脉冲复位电路( b) 按键电平复位电路
R1
1KΩ
22μF
C1
1K
Ω
R2
1K
Ω
图 2-14 几种复位电路
特殊功能寄
存器
初始状态 特殊功能寄存

初始状态
A 00H TMOD 00H
B 00H TCON 00H
PSW 00H TH0 00H
SP 07H TL0 00H
DPL 00H TH1 00H
DPH 00H TL1 00H
P0~ P3 FFH SBUF ××××××
×× B
IP ××× 00000
B
SCON 00H
IE 0×× 00000B PCON 0××××××
× B
表2-
6
















返回本节
存储器类型
单片机系列
掩膜 ROM EPROM RAM
MCS-
51
51子系

803
1 / / 128B
805
1 4KB / 128B
875
1 / 4KB 128B
52子系

803
2 / / 256B
805
2 8KB / 256B
875
2 / 8KB 256B
表2-
1 M
CS
-51








返回本节
2.5 输入 /输出( I/O)端口结构
MCS-51单片机有 4个双向并行的 8位 I/O口 P0~
P3,可并行输入或输出 8位数据, 也可按位使
用 。
I/O端口 实现单片机与外围设备之间
数据传送的电路
1,P1口的结构
图 2-15 P1口的一位结构图
VCC
P1.X
锁存器
读锁存器
D
读引脚
写锁存器
内部总线 Q
Q V1
内部上拉电

CL
P1.X
输出驱动器
缓冲器
只有一种功能,通用输入输出( I/ 0)端
口,准双向静态口。
P1口的功能
通用 I/ 0口三种工作方式,
输出方式、输入方式、端口操作
#date 内部总线 锁存器 场效应管 输出? ? ? ?
输出方式:计算机执行写 P1口指令, MOV P1,#date
输入方式:计算机执行读 P1口指令, MOV A,P1
发读信号 三态门打开 引脚数据送总线 送 ACC? ? ?
端口操作
在输入状态下,从 锁存器 和从 引脚上 读来的信
号一般是一致的,但也有例外 。例如,当从内
部总线输出低电平后,锁存器 Q= 0,= 1,场
效应管 V1开通,端口线呈低电平状态。此时无
论端口线上外接的信号是低电乎还是高电平,
从 引脚读 入单片机的信号都是低电平,因而不
能正确地读入端口引脚上的信号。
又如,当从内部总线输出高电平后,锁存器 Q
= 1,= 0,场效应管 V1截止。 如外接引脚信
号为低电平,从引脚上读入的信号就与从锁存
器读入的信号不同。
Q
Q
8051单片机在对端口 P0一 P3的 输入操作上,有
如下约定,
凡属于 读 -修改 -写 方式的指令,从锁存器读
入信号,其它指令则从端口引脚线上读入信号 。
读 -修改 -写指令的特点是,从端口(锁存器)
输入 (读 )信号,在单片机内加以运算 (修改 )后,
再输出 (写 )到该端口上。
要正确地从引脚上读入外部信息,必须先使
场效应管关断,以便由外部输入的信息确定
引脚的状态。 具有这种输入前要进行准备操
作特点的输入/输出端口,称为 准双向 I/ O
口 。 8031单片机的 P1,P2,P3都是准双向口。
P0端口 由于输出有三态功能,输入前,端口
线已处于高阻态,无需先写入 l后再作读操作 。
注意:
在端口引脚线上读入信号前,必须先对该
端口写入 l。
1、单片机复位后,各个端口已自动地被写
入了 1,此时,可直接作输入操作。
2、如果在应用端口的过程中,已向 P1一 P3
端口线输出过 0,则再要输入时,必须先写
1后再读引脚,才能得到正确的信息。
Pl端口特点
1,Pl端口是单片机中唯一仅有的单功能 I/ O端口,并
且没有特定的专用功能。
2、输出信号锁存在引脚上,故又称为通用静态口;但
对输入信号没有锁存。
3,P1口作为 输人口使用时,随输入指令的不同,有
两种工作方式,即所谓 读锁存器与读引脚之分。
读端口即 读锁存器 时实际上不从外部读入数据,只把
端口锁存器中的内容读人到内部总线,经过某种运算
和变换后,再写回到端口锁存器。读引脚时才真正地
把外部的输人信号读入到内部总线。
2,P0口的结构
P0端口由锁存器、输入缓冲器、切换开关与相应场效应管驱动电路
构成。





控制电路
0 0
1
P0口有两种功能:通用 I/ O接口和地址 /数
据分时复用。
P0口的功能
1,通用 I/ O接口, 不要要外部扩展时, 内部控制信号
将使 MUX开关接通到锁存器 。 此时, 由于 PO口没有内部上
拉电阻, 通常要在外部加一个上拉电阻来提高驱动能力 。
2,地址 /数据分时复用:
需要进行外部扩展时,内部控制信号将使 MUX开关接通到
内部地址/数据线。此时,PO口在 ALE信号的控制下,分
时输出低 8位地址和 8位数据信号。
在输出状态下, 当切换开关 MUX向下时,从内部总线来的数
据经锁存器反相和场效应管 T2反相,输出到端口引脚线上。
此时,场效应管 T1关断。 当切换开关 MUX向上时,一位地址
/数据信号分时地输出到端口线上。 此外,由 T1,T2的通断
组合,形成高电平、低电平与高阻浮动三态的输出。
P0口的工作原理
是单片机的总线口,分时出现数据 D7
一 D0、低 8位地址 A7一 A0,以及三态,
用来接口存储器、外部电路与外部设备。
P0端口是使用最广泛的 I/ O端口。
P0端口特点
P1端口与 P0端口的主要差别在于,P1
端口用内部上拉电阻 R代替了 P0端口
的场效应管 T1,并且输出的信息仅来
自内部总线。
3,P2口的结构
图 2-5 P2口的一位结构图
VCC
P2.X
锁存

读锁存器 地址 控制
D
读引脚
写锁存器
内部总线 Q
Q
MU
X T
P2.X
内部上拉电

CL
P2口也是一个准双向口, 有两种使用功能:作为普
通 I/O端口或作为系统扩展时的高 8位地址总线 。
P2口内部结构与 PO口类似 。
P2口作 I/o端口使用时,内部控制信号使 MUX
开关接通到锁存器, 此时 P2口的用法与 P1口相
同 。
P2口作外部地址总线使用时, 内部控制信号使
MUX开关接通到内部地址线, 此时 P2口的引
脚状态由所输出的地址决定 。
需要特别指出的是,由于对片外地址的操作
是连续不断的,只要进行了外部系统扩展,
此时 P0口和 P2口就不能再用作 I/ O端口了。
4,P3口的结构
图 2-6 P3口的一位结构图
VCC
P3.X
锁存器
读锁存器 第二输出功能
D
读引脚
写锁存器
内部总线 Q
Q T
P3.X
内部上拉电

第二输入功

CL
表2-
2 P
3







P3.2
P3.3
位线 引脚 第二功能
P3.0 10 RXD(串行输入口)
P3.1 11 TXD(串行输出口)
12 INT0(外部中断 0)
13 INT1(外部中断 1)
P3.4 14 T0(定时器 0的计数输入)
P3.5 15 T1(定时器 1的计数输入)
16 WR(外部数据存储器写
脉冲)
17 RD(外部数据存储器读脉
冲)
P3.7
P3.6
返回本节
使 P3端品各线处于第二功能的条件是,
1\串行 I/O处于运行状态 (RXD,TXD);
2\打开了处部中断 (INT0,INT1);
3\定时器 /计数器处于外部计数状态 (T0,T1)
4\执行读写外部 RAM的指令 (RD,WR)
在应用中,如不设定 P3端口各位的第二功能 (WR,RD信
号的产生不用设置 ),则 P3端口线自动处于第一功能状
态,也就是静态 I/ O端口的工作状态。在更多的场合
是根据应用的需要,把几条端口线设置为第二功能,
而另外几条端口线处于第一功能运行状态。 在这种情
况下,不宜对 P3端口作字节操作,需采用位操作的形
式。
MCS-51单片机的片外总线结构





CB
I/O
A15
A14
A13
A12
A11
A10
A9
A8A
7A
6A
5A
4A
3A
2A
1A
0D
7D
6D
5D
4D
3D
2D
1D
0
DB
AB
P1.0
P1.1P
1.2P
1.3P
1.4P
1.5P
1.6P
1.7
RESET
P3.0P
3.1
P3.3
P3.4
P3.5
P3.6
P3.7
VSS
VCC
P0.0
P0.1
P0.2
P0.3
P0.5P0.6
P0.7
EA
ALE
PSEN
P2.7
P2.6P
2.5P
2.4P
2.3P
2.2P
2.1P
2.0
P3.2
图 2-8 MCS-51片外总线结构示意图
微型计算机中的总线通常分为:
( 1) 地址总线 ( AB),地址总线宽度为 16位,
由 P0口经地址锁存器提供低 8位地址 ( A0-A7) ;
P2口直接提供高 8位地址 ( A8~ A15) 。 地址信
号是由 CPU发出的, 故地址总线是单方向的 。
( 2) 数据总线 ( DB),数据总线宽度为 8位,
用于传送数据和指令, 由 P0口提供 。
( 3)控制总线( CB):控制总线随时掌握各
种部件的状态,并根据需要向有关部件发出命
令。
返回本节
第 2.4节 定时 /计数器
2.4.1 定时 /计数器结构
2.4.2 定时 /计数器工作方式
2.4.3 定时 /计数器控制寄存器
2.4.4 定时 /计数器常数的计算
返回本章首页
2.4.1 定时 /计数器结构
是 MCS一 51单片机的重要功能模块之一 。 可实现
定时控制, 延时, 对外部事件计数, 还可用定时器
产生毫秒宽的脉冲驱动步进电动机一类的电气机械 。
计数器主要用于外部事件的计数 。
8031/8051/8751单片机有 2个 16位的定时 /计数器:
定时器 0( T0) 和定时器 1( T1) 。 它们都有定时器
或事件计数的功能 。 可由程序选择作为定时器用或
作为计数器用, 定时时间或计数值也可由程序设 置 。
T0由 2个特殊功能寄存器 TH0和 TL0构成, T1则
由 TH1和 TL1构成 。
返回本节
16位加法计数器
功能
作计数器用时,通过芯片引脚 T0( P3.4) 或 T1
( P3.5) 加法计数器 对外部脉冲信号计数, 当
输入脉冲信号从 1到 0的 负跳变时, 计数器就自
动加 1。 计数的最高频率一般为振荡频率的 1/24。
作定时器用时,加法计数器 对内部机器周期
脉冲计数 。 由于机器周期是定值, 所以对内
部机器周期脉冲计数也就是定时, 内部机器
周期= 1um,计数值 100,相当于定时 100um。
2.4.2 定时 /计数器工作方式
每个定时 /计数器还有 4种工作模式, 也就
是每个定时器可构成 4种电路结构模式 。
在模式 0,1和 2,T0和 T1的工作模式相同,
在模式 3,两个定时器的模式不同 。 下面
以 T1为例, 分述各种工作模式的特点和
用法 。
1.模式 0
图 2-8 定时 /计数器 T1( T0)工作模式 0
13位定时器 /计数器
5位 8位
213=8192
定时时间
T=( 8192-X) Tcy
计数值 N=8192-X
从初值开始计数
测引脚脉冲宽度
2.模式 1
图 5-2 定时 /计数器 T1( T0)工作模式 1
16位定时器 /计数器
定时时间
T=( 65536-X) Tcy
计数值 N=65536-X
从初值开始计数
3.模式 2
图 5-3 定时 /计数器 T1( T0)工作模式 2
自动重新装入初值 8位 定时 /计数器
8位加法计数器
8位初值寄存器
4.模式 3
定时 /计数器 T0工作模式 3
返回本节
2个 8位方式。工作方式 3只适用于定
时器 T0,当定时器 T1处于方式 3时,相
当于 TR1=0,停止计数。
当 T0为工作方
式 3时,THo和
TL0分成 2个独
立的 8位计数器。
其中,TL0既可
用作定时器,又
可用作计数
器 ;TH0只能用
作定时器,
通常情况下,T0不运
行于工作方式 3,只有
在 T1处于工作方式 2,
并不要求中断的条件
下才可能使用。
2.4.3 定时 /计数器控制寄存器
定时器共有 2个控制寄存器 TMOD和 TCON,
由软件写入 TMOD和 TCON 两个 8位寄存器,
设置各个定时器的操作模式和控制功能 。
1.工作模式控制寄存器 —TMOD
( 89H)
GATE C/T M 1 0M GATE C/T 1M 0M
控 制 T 1 控 制 T 0
89H
和T 类 同 0
1M 0M
00
01
10
11
方 式
方式0
方式1
方式2
方式3
0
1
定时器模式
计数器模式
0
1
与I NT 无关 0
0与I NT 有关
图 5-5 定时器工作模式寄存器 TMOD
2.定时器控制寄存器 —TCON( 88H)
T C O N
位地址
0DD 1D 2D 3D 4D 5D 6D 7
IT 0IE 0IT 11IETR 0TF 0TR 1TF 1
88898A8B8C8D8E8F
见下一节
{
00,停T 计数
01,启T 计数
00,无T 中断(硬件复位)
{
1,有T 溢出中断 0
0,无T 中断(硬件复位)
10,停T 计数
{
1,有T 溢出中断
1,启T 计数
{
1
1
1
图 5-6 定时器工作模式寄存器 TCON
返回本节
2.4.4 定时 /计数器常数的计算
1,计数器初值的计算
把计数器计满为零所需要的计数值设定为 C,
计数初值设定为 TC,由此可得到公式:
TC=M-C
式中, M为计数器模值, 该值和计数器工作方
式有关 。 在方式 0时 M为 213;在方式 1时 M为 216;
在方式 2和方式 3时 M为 28。
2,定时器初值的计算
在定时器模式下, 计数器由单片机主脉冲经
12分频后计数 。 因此, 定时器定时时间 T的
公式:
T=( M-TC) T计数
上式也可写成,TC=M-T/ T计数
式中,M为模值,和定时器的工作方式有关;
T计数 是单片机振荡周期 TCLK的 12倍; TC为
定时器的定时初值。
返回本节
设 T0(或 T1)运行于计数器方式,要
求计数 X个外部脉冲后 T0(或 T1)回零,
则计数初值 C的求取方法如下:
因为回零的含义是指加满到计数器
的模值,即
x十 C=模
所以 C=模一 x=模十 (一 x)= (x)求补
由此可见,计数初值的大小等于需
要计数的个数 x求补运算后的结果
3,求补算法
例 1,T0运行于计数器状态,工作于方
式 1( 16位方式),要求外部引脚出现
3个脉冲后,TH0,TL0全回零(以便
申请中断)。求计数初值 C。
解,C=( 0003H)求补 =FFFDH
例 2,T0运行于定时器状态,时钟振荡周期为
12MHZ,要求定时 100us。求不同工作方式时的定
时初值 。
解:因为机器周期 MC=12/12MHZ=1us
所以要计数的机器周期个数为 64H。
应注意定时器在工作方式 0时的初值装入方法。由
于方式 0是 13位定时 /计数方式,对于 T0而言,高 8
位初值装入 TH0,低 5位初值装入 TL0的低 5位
( TL0的高 3位无效)。所以对于上例,要装入
1F9CH初值时,可安排成:
在具体装入初值时,必须把 11111100B装入 TH0,
而把 ***11100B装入 TL0。用指令表示即:
MOV TH0,#0FCH ; #FCH=TH0
MOV TL0,#1CH ; #1CH=TL0
2.5 中断系统结构及管理
2.5.1 中断概念及请求
2.5.2 中断系统的结构
2.5.3 中断控制
2.5.4 中断响应过程
返回本章首页
2.5.1 有关中断的概念
返回本节
?什么是中断?
?什么可能引起中断? 中断源
?中断的嵌套与优先级处理
?中断的响应过程
五个中断源, 每个中断产生后都到一个固定的地方去
找处理这个中断的程序, 当然在去之前首先要保存下
面将执行的指令的地址, 以便处理完中断后回到原来
的地方继续往下执行程序 。
具体地说,中断响应可以分为以下几个步骤, 1、保护
断点,即保存下一将要执行的指令的地址,就是把这
个地址送入堆栈。 2、寻找中断入口,根据 5个不同的
中断源所产生的中断,查找 5个不同的入口地址。在这
5个入口地址处存放有中断处理程序(这是程序编写时
放在那儿的,如果没把中断程序放在那儿,就错了,
中断程序就不能被执行到)。 3、执行中断处理程序 。
4、中断返回,执行完中断指令后,就从中断处返回到
主程序,继续执行。
2.5.2 中断系统的结构
1,外部中断源
由 P3.2端口线引入, 低电平或下降沿引起 。
由 P3.3端口线引入, 低电平或下降沿引起 。
2,内部中断源
T0:定时 /计数器 0中断, 由 T0回零溢出引起 。
T1:定时 /计数器 1中断, 由 T1回零溢出引起 。
TI/RI:串行 I/O中断, 完成一帧字符发送 /接收引起 。
51单片机的中断系统基本特点是,有 5个固定的可屏
蔽中断源,3个在片内,2个在片外,它们在程序存储
器中各有固定的中断入口地址,由此进入中断服务程
序; 5个中断源有两级中断优先级,可形成中断嵌套;
2个特殊功能寄存器用于中断控制和条件设置的 编程。









返回本节
外部中断有下跳沿引起和低电平引起的选择;串行中断
有发送 (TI)与接收 (R1)的区别;各个中断源打开与否,
受中断自身的允许位和全局允许位的控制,并具有高优
先级和低优先级的选择。
2.5.3 中断控制
1,中断允许寄存器 IE( A8H)
字节地址 A8H,位地址分别是 A8H~ AFH。
IE控制 CPU对中断源总的开放或禁止以及
每个中断源是否允许中断 。
2,中断优先寄存器 IP( B8H)
字节地址为 B8H,位地址分别是 B8H~ BFH,
IP用来锁存各中断源优先级的控制位。
0,关I NT 中断 0
1,开I NT 中断 0
0,关T 中 断
1,开T 中 断 0
0
1,开T 中 断
0,关T 中 断
0,关I NT 中断
1,开I NT 中断
1
1
1
1
0,关T 中 断
1,开T 中 断 2
2
1,开所有中断
0,关所有中断
1,开串行口中断
0,关串行口中断
位地址
IE EA
AF AD
ET
AC
ES
AB
ET
AA
EX
A9
ET
A8
EX 00112
中断允许寄存器 IE
中断优先寄存器 IP
返回本节
优先级:单片机采用了 自然优先级和人工设置高、低优先级的策略,
即可以由程序员设定哪些中断是高优先级、哪些中断是低优先级,
由于只有两级,必有一些中断处于同一级别,处于同一级别的,就
由自然优先级确定。
五个中断源的自然优先级与中断服务入口地址
外中断 0,0003H
定时器 0,000BH
外中断 1,0013H
定时器 1,001BH
串口, 0023H
高级
低级
先高后低 ;停低转高 ;高不睬低 ;事先规定,
3、定时器控制寄存器
4、串行口 SCON寄存器
寄存器的地址为 98H,其中各位都可以位寻
址, 位地址为 98H-9FH。 串行口的中断申请标
志只占用 SCON中的两位, 分布如下:
TI发送中断标志,当发送完一帧串行数据后置 1,
必须由软件清 0。 RI接收中断标志,当接收完一帧串
行数据后置 1,必须由软件清 0。
串行口的中断申请标志是由 TI和 RI相或以后产生
的, 并且串行口中断申请在得到 CPU响应之后不会
自动撤除 。
2.5.4 中断响应过程
1.响应条件
单片机响应中断的条件是,中断源有请求,CPU
允许所有中断源请求 (EA= 1)、中断允许寄存器 IE
相应位置 1。
2、中断响应过程
单片机在每个机器周期的 S5P2期间,顺序 采样每
个中断源, CPU在下一个机器周期 S6期间按优先级
顺序 查询中断标志,如查询到某个中断标志为 1,将
在再下一个机器周期 S1期间按 优先级进行排队处理。
中断得到响应后自动 清除中断标志,由硬件将程
序计数器 PC内容压入堆栈 保护,然后将对应的 中断
入口地址装入程序计数器 PC,使程序转向中断入口
地址单元中去 执行相应的中断服务程序
下列任何一种情况存在中断申请将被封锁:
( 1) CPU正在执行一个同级或高一级的中断服务程序。
( 2)当前正在执行的那条指令还未执行完。
( 3)当前正在执行的指令是 RETI或对 IE,IP寄存器进
行读 /写指令,执行这些指令后至少再执行一条指令才会
响应中断。
2.5.4 中断请求的撤除
中断过程有以下几点应注意,
1.没有对现场进行保护 (如 PSW,RAM寄存器的内容 )
2.不能清除 T1,R1标志,
CPU响应中断请求后, 在中断返回 ( 执行 RETI) 前, 必须
撤除请求, 否则会错误地再次引起中断过程 。
CPU响应中断后 没有用硬件清除串口中断标志, 必须由用户
编制的中断服务程序来清除相应 TI,RI。
对于 电平触发的外部中断,由
于 CPU对 INT0,INT1脚没有
控制作用,也没有相应的中断
请求志位,因此需要外接电路
来撤除中断请求信号 。
ANL P1,#0FEH
ORL P1,#01H
2.5.5 定时 /计数器及中断系统综合应用
【 例 】 设 MCS-51单片机系统时钟频率 ФCLK为
6MHZ,请编出利用定时 /计数器 T0在 P1.0引
脚上产生周期为 2秒, 占空比为 50%的方波
信号的程序,
返回本章首页
( 1)主程序
任务:
1) T0工作方式的设定,
选择方式 1( 16位方式 )
( 最大定时 131ms)
2) 定时常数的设定:
TC=216-100ms/2μs
=15536=3CB0H
即,TH0应装 3CH,
TL0应装 B0H
3)中断管理:
允许 T0中断,开放总中断
即,IE应装 10000010B。
4)启动定时器 T0:
SETB TR0
5)设置软件计数器初值,
(如使用 R7)
即 R7应装 0AH
6)动态停机, SJMP $
主程序如下:
MAIN,MOV TMOD,#01H;设定 T0为方式 1
MOV TH0,#3CH ;装入定时常数高 8位
MOV TL0,#0B0H ;装入定时常数低 8位
MOV IE,#82H ;开放 T0中断
SETB TR0 ;启动 T0
MOV R7,#0AH ;设置软件计数器
SJMP $
( 2)中断服务程序
任务,
1) 恢复 T0常数;
2) 软件计数器减 1;
3) 判断软件计数器是否为 0。 为 0
时, 改变 P1.0状态, 并恢复软件计数
器初值;不为 0时中断返回 。
程序如下,
TOINT,MOV TL0,#0B0H ;恢复定时常数
MOV TH0,#3CH ;
DJNZ R7,NEXT ;
CPL P1.0 ;定时 1到, P1.0取反
MOV R7,#0AH ; 恢复软件计数器初值
NEXT,RETI
完整程序如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TOINT
ORG 0030H
MAIN,MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IE,#82H
SETB TR0
MOV R7,#0AH
SJMP $
TOINT,MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R7,NEXT
CPL P1.0
MOV R7,#0AH
NEXT,RETI
END
返回本节
2.8 8051单片机的节电工作方式
两种节电工作方式,
掉电方式和空闲(等待)方式
属于低功耗的工作方式,适用于采用干电池或
停电时依靠备用电源供电的智能仪表。
PD/= 0为掉电方式, 此时振荡器停止工作,
备用电源投入, 仅对片内 RAM供电, 只有片
内 RAM的内容被保存 。
IDL/=0等待方式。此时振荡器依然工作,中断
系统、串行接口、定时器/计数器电路驱动工
作。但时钟不送往 CPU,即 CPU处在等待状态
控制寄存器 PCON:
(1)串行接口波特率系数控制位 SMOD 串行接口用 。
(2掉电方式控制位 PD。 PD=1时进人掉电方式 。
(3)等待方式控制位 IDL IDL=1时进人等待方式 。
(4)通用标志位 GFl,GF0用户设置软件标志用
退出 等待方式 有两种方法,
(1)中断退出,由于在等待方式下中断系统仍工作, 而
且任何中断请求 ( 只要 IE设置牵断允许 ) 均能通过硬
件对 IDL清零, 因此中断请求后单片机将退出等待方式,
并执行中服务程序 。 在执行 RETI指令返回后, CPU执
行的指令是原先置等待方式指令的下一条指, 使 CPU
恢复等待方式以前的工作 。
(2) 按钮复位退出,采用按钮复位退出等待方式时,
只有内部 RAM的内容保持不变,
PCON中的通用标志位 GFI,GFO可用来指示中断发生
在正常运行期间还是在等待方式,
退出 掉电方式,只能用复位按钮 。
THANK YOU VERY MUCH !
本章到此结束,
谢谢您的光临!
结束放映 返回本章首页