第2章MCS51单片机组成及结构分析.docx
《第2章MCS51单片机组成及结构分析.docx》由会员分享,可在线阅读,更多相关《第2章MCS51单片机组成及结构分析.docx(36页珍藏版)》请在冰豆网上搜索。
第2章MCS51单片机组成及结构分析
第2章MCS-51单片机组成及结构分析
MCS-51系列单片机有一定容量的片内RAM,有较强的I/O口功能、系统扩展能力以及CPU处理功能。
尤其是MCS-51所特有的布尔处理机,对于逻辑处理与控制具有突出的优点。
由于MCS-51单片机具有体积小、功能全、价格低廉、开发应用方便、适合于实时控制等优点,已被广泛应用于工业控制器、智能仪表、智能接口、智能仪器装置以及通用测控单元等领域。
2.1MCS-51单片机主要功能特点
MCS-51系列单片机分为51子系列和52子系列,在51子系列中,典型代表为8751、8051、8031等,在52子系列中,典型代表为8752、8052、8032等,这两个子系列单片机的指令系统与引脚功能完全兼容,仅在内部功能部件稍有差异,主要功能特点如下:
(1)8位CPU;
(2)布尔处理器;
(3)片内128字节RAM(52子系列有256字节RAM);
(4)片内4KBROM/EPROM(8051/8751);
(5)特殊功能寄存器区;
(6)64KB外部数据存贮器地址空间;
(7)64KB外部程序存贮器地址空间;
(8)2个优先级的5个中断源(52子系列有6个中断源)结构;
(9)4个8位并行I/O口(P0、P1、P2、P3);
(10)2个16位定时/计数器(52子系列为3个);
(11)1个全双工串行口;
(12)片内振荡器及时钟电路。
表2-1列出MCS-51系列单片机片内功能配置。
表2-1MCS-51系列单片机片内功能配置
功能配置
芯片种类
ROM
EPROM
RAM
定时器
计数器
I/O口
中断源
并行
串行
51
8031
/
/
128B
2×16位
4×8位
1
5
8051
4K
/
128B
2×16位
4×8位
1
5
8751
/
4K
128B
2×16位
4×8位
1
5
52
8032
/
/
256B
3×16位
4×8位
1
6
8052
8K
/
256B
3×16位
4×8位
1
6
8752
/
8K
256B
3×16位
4×8位
1
6
由于MCS-51单片机性能优异,不少公司购买了生产专利,并在此基础上开发出一系列新产品,其中以美国ATMEL公司生产的89系列最有代表性,产品功能配置如表2-2所示。
表2-2MCS-51系列单片机新产品功能配置
功能配置
芯片
EEPROM
RAM
定时器
计数器
I/O口
中断源
并行
串行
89C51
4K
128
2×16位
4×8位
1
5
89C52
8K
128
2×16位
4×8位
1
5
89C53
12K
128
2×16位
4×8位
1
5
89C55
16K
128
2×16位
4×8位
1
5
89C58
32K
128
2×16位
4×8位
1
5
89C2051
2K
128
2×16位
4×8位
1
5
89C1051
1K
128
2×16位
4×8位
1
5
以上产品的程序存贮器由于采用了EEPROM技术,用户可以方便的将源程序注入其中,同时该产品系列采用了多种封装形式,外接晶振可以达到33MHz,为用户使用提供了极大方便。
因此,该系列产品一经推出,便成为市场的主流产品,成为众多用户的首选芯片。
2.2MCS-51单片机的引脚功能
图2.18051引脚配置图
以8051的40条引脚双列直插式封装为例,对MCS-51单片机引脚功能进行介绍。
其引脚配置如图2.1所示。
2.2.1I/O口
MCS-51单片机有4个双向8位I/O口P0~P3,P0口为三态双向口,负载能力为8个LSTTL门电路,P1~P3为准双向口(用作输入时,口锁存器必须先写“1”),负载能力为4个LSTTL门电路。
通常在外部并行扩展时,P2作为地址总线的高8位,而P0口作为地址总线的低8位和数据总线的复用口。
P3口作为控制总线使用。
P3口作为控制总线时,工作在第二功能,P3口的第二功能定义如表2-3所示。
表2-3P3口第二功能定义
口线
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0输入)
P3.3
(外部中断1输入)
P3.4
T0(计数器0输入)
P3.5
T1(计数器1输入)
P3.6
(外部数据存贮器写选通)
P3.7
(外部数据存贮器读选通)
2.2.2电源、时钟电路
VCC(40脚)——+5V电源
VSS(20脚)——地
XTAL1(19脚)——芯片内部振荡电路(单级反相放大器)输入端。
XTAL2(18脚)——芯片内部振荡电路(单级反相放大器)输出端。
MCS-51的时钟可由内部方式或外部方式产生。
1.内时钟方式
利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚接石英晶体和电容组成的并联谐振电路,连接方法如图2.2(a)所示。
晶体可以在1.2MHz~12MHz之间任选,电容通常选择为30pF左右。
2.外时钟方式
如图2.2(b)所示,XTAL1接地,XTAL2接外部振荡器,对外部振荡信号无特殊要求,由于XTAL2端的电平不是TTL电平,故应接一上拉电阻。
外部振荡器的频率应低于12MHz。
(a)内时钟方式(b)外时钟方式
图2.2MCS-51时钟方式电路图
2.2.3控制信号
1.RST/VPD(9脚)复位信号
时钟电路工作后,在此引脚上出现两个机器周期以上的高电平,芯片内部进行初始复位,复位后片内寄存器置初值。
但初始化不影响片内RAM状态,只在该引脚保持高电平,MCS-51将循环复位。
RST/VPD从高电平变低电平时,单片机将从程序存储器的0000单元取指,开始执行程序。
图2.3复位电路
MCS-51通常采用上电复位和开关复位二种方式。
其简单的复位应用电路如图2.3所示。
上电瞬间,电容两端电压不能突变,此时RST端为高电平,随着+5V通过电阻给电容充电,RST端电位逐步下降。
只要RST端电平在高电平段保持两个以上机器周期,单片机即复位,从而实现上电自动复位。
开关复位,只要将按键按下,RST为高电平,复位有效。
2.ALE/
(30脚)地址锁存信号
P0口作为地址和数据的复用口,P0口上的信息究竟是地址还是数据可以通过ALE的状态来确定,ALE高电平期间,P0口上出现地址信息,在ALE下降沿时,将P0口上地址信息锁存到片外地址锁存器中,在ALE低电平期间P0口上出现指令和数据信息。
平时不访问片外存贮器时,该端也以六分之一的时钟频率固定输出脉冲信号。
因而该引脚亦可作系统中其它芯片的时钟源。
ALE可驱动8个TTL门。
对于EPROM型单片机,在EPROM编程时,此脚用作编程脉冲
输入端。
3.
(29脚)片外程序存贮器选通信号,低有效。
当8051访问片外程序存贮器时,程序计数器PC通过P2口和P0口输出十六位指令地址,
作为程序存贮器读信号,输出负脉冲将相应存贮单元的指令读出并送到P0口上。
可驱动8个TTL门。
4.
/VPP(31脚)内部和外部程序存贮器选择信号
对于8051来说,内部有4K字节的程序存贮器,当
为高时,CPU访问程序存贮器有两种情况:
(1)地址小于4K时访问内部程序存贮器。
(2)地址大于4K时访问外部程序存贮器。
若
接地,则不使用内部程序存贮器,取指时总是访问外部程序存贮器。
对于EEPROM型的单片机,在EEPROM编程时,此引脚用于施加5V编程电压(VPP)。
2.3MCS-51单片机内部结构分析
如图2.4所示是MCS-51单片机的简化功能框图。
图2.48051功能框图
2.3.1程序存贮器
单片机的存贮器配置包括程序存贮器和数据存贮器,以8051为例,其配置图如图2.5所示。
(a)(b)
图2.58051存贮器配置图
程序存贮器用于存放编好的程序和表格常数。
8051内部加外部可扩展的程序存储器一共4K字节。
在正常运行时,如把
引脚接高电平那么程序从内部ROM开始执行,当PC值超出内部ROM的容量时会自动转向外部程序空间。
如果不使用内部ROM,而直接使用外部ROM,
应接低电平。
在64KB程序存贮器空间中有7个单元具有特殊功能。
0000H单元,MCS-51复位后程序计数PC的内容为0000H,故系统必须从0000H单元开始取指,执行程序。
它是系统的起动地址。
一般在该单元存放一条绝对跳转指令,而用户设计的主程序从跳转地址开始存放。
除0000H单元外,其它6个特殊单元分别对应6种中断源的中断服务子程序的入口地址,如表2-4所示。
通常在这些入口地址都存放一条绝对跳转指令,而真正的中断服务子程序从转移地址开始存放。
表2-4各种中断服务子程序入口地址
中断源
入口地址
外部中断0
0003H
定时器0溢出
000BH
外部中断1
0013H
定时器1溢出
001BH
串行口
0023H
定时器2溢出
002BH
2.3.2数据存贮器
数据存贮器在物理上和逻辑上都分为两个地址空间,一个内部数据存贮器空间和一个外部数据存贮器空间。
内部数据存贮器在物理上又可分为2个不同的块;00H~7FH(0~127)单元组成的低128字节的RAM块;80H~FFH(128~255)单元组成的高128字节的特殊功能寄存器(SFR)块,两块地址空间是相连的。
要注意的是,128字节的SFR块中仅有26个字节有定义的,若访问的是这一块中没有定义的单元,将得到一个不确定的随机数。
图2.6表示了内部数据存贮器的配置。
其中00H~1FH单元共32个字节是4个通用工作寄存器区,每个区含8个8位寄存器,编号为R0~R7。
内部RAM块中的20H~2FH16个字节单元和SFR块中的11个字节单元(52系列12个字节单元)构成了布尔处理机的存贮器空间,这27个字节单元的210位(27×8减去6个未定义位)各自都有专门的位地址,如图2.6、图2.7所示,它们可以被直接寻址。
8051的外部数据存贮器寻址空间为64KB。
图2.6内部RAM块中特殊功能位地址图2.7SFR块中特殊功能位地址
2.3.3特殊功能寄存器
在MCS-51中共有26个特殊功能寄存器(5个属52子系列)。
PC寄存器在物理上是独立的,其余都属于内部数据存贮器的SFR块,共占用了26个字节。
表2-5列出了这些特殊功能寄存器的助记标识符、名称和地址。
表2-5特殊功能寄存器(除PC外)
标识符
名称
地址
*ACC
累加器
0E0H
*B
B寄存器
0F0H
*PSW
程序状态字
0D0H
SP
堆栈指针
81H
DPTR
数据指针(包括DPH和DPL)
83H和82H
*P0
口0
80H
*P1
口1
90H
*P2
口2
0A0H
*P3
口3
0B0H
*IP
中断优先级控制
0B8H
*IE
允许中断控制
0A8H
TMOD
定时器/计数器方式控制
89H
*TCON
定时器/计数器控制
88H
+*T2CON
定时器/计数器2控制
0C8H
TH0
定时器/计数器0(高位字节)
8CH
TL0
定时器/计数器0(低位字节)
8AH
TH1
定时器/计数器1(高位字节)
8DH
TL1
定时器/计数器1(低位字节)
8BH
+TH2
定时器/计数器2(高位字节)
0CDH
+TL2
定时器/计数器2(低位字节)
0CCH
+RLDH
定时器/计数器2自动再装载(高位字节)
0CBH
+RLDL
定时器/计数器2自动再装载(低位字节)
0CAH
*SCON
串行控制
98H
SBUF
串行数据缓冲器
99H
PCON
电源控制
87H
注:
带(*)的寄存器可按字节和按位寻址;带(+)号的寄存器是与定时器/计数器2有关的寄存器,仅在52子系列芯片中存在。
1.程序计数器PC
程序计数器PC用于存放下一条要执行的指令地址(程序存贮器地址),是一个16位专用寄存器,因此寻址范围为64K(0~65535)。
PC在物理上是独立的,不属于内部数据存贮器的SFR块。
2.累加器A或特殊功能寄存器ACC
累加器A是在CPU运算器中的寄存器与特殊功能寄存器中的ACC是映象关系,它们的内容是完全相同的,在寻址方式上累加器A是寄存器而ACC是特殊功能寄存器只能用直接寻址方式来访问(在后边的指令讲述中,大家会有感受)。
3.B寄存器
在乘除法指令中,用到B寄存器。
在其它指令中,B寄存器可作为RAM的一个单元来使用。
4.程序状态字PSW
程序状态字PSW是一个8位寄存器,它包含了程序状态信息。
此寄存器各位的含义参见图2.8,各位说明如下:
PSW
CY
AC
F0
RS1
RS0
OV
—(未用)
P
图2.8程序状态字
CY(PSW.7)进位标志。
在执行某些算术和逻辑指令时,可以被硬件或软件置位或清除。
在布尔处理机中它被认为是位累加器。
AC(PSW.6)辅助进位标志。
当进行加法或减操作而产生由低4位向高4位数进位或借位时,AC将被硬件置1,否则就被清除。
AC被用于十进制调整,详见DA指令。
F0(PSW.5)用户标志0。
是用户定义的一个状态标记,可以用软件来使它置位或清除。
RS1、RS0(PSW.4、PSW.5)寄存器R0~R7工作区选择控制位1和0。
可以由软件来置位或清除以确定工作寄存器区。
(RS1、RS0)与寄存器区的对应关系如下:
(0,0)——R0~R7在0区(00H~07H)
(0,1)——R0~R7在1区(08H~0FH)
(1,0)——R0~R7在2区(10H~17H)
(1,1)——R0~R7在3区(18H~1FH)
OV(PSW.2)溢出标志。
当执行算术指令时,由硬件置位或清除,以指示溢出状态。
当执行加加减法运算时,若以
表示位i向i+1有进位或借位。
则
OV=
⊕
即当位6向位7有进位/借位而位7不向C进位/借位时,或位6不向位7进位/借位而位7向C进位/借位时,溢出标志OV置位,否则清除。
OV=1表示有符号加减运算的结果已超出一个字节所能表示补码数的范围(-128~+127)。
在MCS-51中,无符号数乘法指令MUL的执行结果也会影响溢出标志,若累加器A和寄存器B的乘积超过255时,OV=1,否则OV=0。
此积的高8位放在B中,低8位放在A中,故OV=0意味着只要从A中取得乘积即可,否则要从BA寄存器对中取得乘积。
除法指令DIV也会影响溢出标志,当除数为0时,OV=1,否则OV=0。
P:
(PSW.0)奇偶标志。
每个指令周期都由硬件来置位或清零,以表示累加器A中“1”的位数的奇偶性。
若P=1,则A中“1”的位数为奇数,否则P=0。
5.堆栈指针SP
它是一个8位寄存器,用来存放栈顶地址。
MCS-51堆栈设在内部RAM中,堆栈是一个具有“先进后出”功能,受SP管理的存贮区域。
在程序中断、子程序调用等情况下,用于存放一些特殊信息(亦可作数据传送的中转站)。
当数据压入堆栈时,SP就自动加“1”;当数据从堆栈中弹出时,SP就自动减“1”。
因而SP指针始终指向栈顶。
MCS-51系统复位时硬件使SP=07H。
堆栈在内部RAM区中的位置可根据程序要求由SP灵活安排。
6.数据指针DPTR
它是一个16位的特殊功能寄存器,既可作为一个16位寄存器(DPTR)来使用,又可作为两个独立的8位寄存器,其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。
当对外部存贮器空间寻址时,DPTR作间址寄存器用。
7.I/O端口P0~P3
特殊功能寄存器P0、P1、P2和P3分别是I/O端口P0~P3的锁存器。
8.复位后内部寄存器状态如表2-6所示。
表2-6复位后内部寄存器状态
寄存器
内容
寄存器
内容
PC
0000H
TMOD
00H
ACC
00H
TCON
00H
B
00H
TH0
00H
PSW
00H
TL0
00H
SP
07H
TH1
00H
DPTR
0000H
TL1
00H
P1~P3
0FFH
SCON
00H
IP
×××00000
SBUF
不定
IE
0××00000
PCON
0××00000
2.4MCS-51单片机CPU时序
2.4.1机器周期、状态、相位
如图2.9所示,MCS-51单片机规定:
一个机器周期包括6个状态S1~S6,每个状态又分两部分:
相位1(P1)、相位2(P2),即每个状态包括2个振荡周期。
因此,有下式成立:
1个机器周期=6个状态=12个振荡周期
1个振荡周期=
式中:
为主频。
若采用12MHz振荡源,则每个机器周器为1μs。
2.4.2典型指令的执行情况
由于单片机内部时钟信号外部无法观察,在图2.9中以振荡信号XTAL2和ALE端信号作为参考信号。
在每个机器周期,ALE信号两次有效,一次在S1P2到S2P1期间,一次在S4P2到S5P1期间。
图2.9/单片机的机器周期和状态周期
在MCS-51单片机指令系统中,单字节、双字节指令占绝大多数,三字节指令很少(13条)。
单字节或双字节指令可能是单周期或双周期的,三字节指令是双周期的,乘除指令是四个周期的,因此,当振荡频率为12MHz时,指令执行时间分别为1μs、2μs、4μs。
2.5MCS-51单片机低功耗运行方式
MCS-51单片机具有低功耗运行方式。
对于CHMOS型单片机有两种低功耗方式:
待机方式与掉电方式;HMOS型单片机仅有一种低功耗方式,即掉电方式。
下面分别加以叙述。
图2.10低功耗掉电方式
2.5.1HMOS型单片机掉电运行方式
如图2.10所示,正常运行时,HMOS型单片机由VCC供电。
当VCC掉电时,在VCC下降到操作允许极限之前,RST/UPD接上备用电源,向内部RAM供电。
当VCC恢复时,备用电源仍要保持一段时间,以便完成复位操作,然后重新开始工作。
2.5.2CHMOS型单片机的掉电运行方式与待机方式
在CHMOS型单片机中,待机方式与掉电方式均由特殊功能寄存器PCON的有关位控制,其中各位意义如下:
(87H)
7
6
5
4
3
2
1
0
字节地址87H
PCON
SMOD
—
—
—
GF1
GF0
PD
IDL
SMOD:
(PCON.7)波特率加倍位。
当SMOD=1时,串行口方式1、2、3的波特率提高一倍。
PCON:
6、5、4保留位,无定义。
GF1:
(PCON.3)通用标志位,供用户使用。
CF0:
(PCON.2)通用标志位,供用户使用。
PD:
(PCON.1)掉电方式位。
当PD=1时,机器进入掉电工作,由软件设置。
IDL:
(PCON.0)待机方式位。
当IDL=1时,机器进入待机工作方式,由软件设置。
1.掉电工作方式
当执行了使PCON寄存器中PD位置“1”的指令后,单片机进入掉电工作方式,如图2.11所示。
当PD=1,
=0时,片内振荡器停止工作。
由于时钟冻结,一切功能都停止,只有片内RAM内容被保持。
退出掉电方式的唯一途径是硬件复位。
在掉电方式下VCC可降到2V,耗电电流仅50μA。
值得注意的是,在进入掉电方式前,VCC不能下降;在结束掉电保护前,VCC必须恢复正常工作电压。
复位终止了掉电方式,同时释放了振荡器。
在VCC恢复到正常水平之前,不应该复位,要保持足够长的复位时间,通常只需不到10毫秒时间,以保证振荡器再起动并达到稳定。
2.待机方式
当执行了使PCON寄存器IDL位为“1”的指令后,单片机就进入了待机工作方式,参见图2.11。
当IDL=1,
=0时封锁了时钟信号去CPU的与门,CPU处于冻结状态,然而时钟信号仍能提供给中断逻辑、串行口和定时器。
在待机期间CPU状态被完整保存,如程序计数器PC、堆栈指针SP、程序状态字PSW、累加器A及所有的工作寄存器等,而ALE和
变为无效状态。
有两种方法退出待机方式:
1).任何一个允许的中断请求被响应时,内部硬件电路将IDL位清零,结束待机状态,进入中断服务程序。
2).硬件复位,由于时钟振荡器仍在工作,只要复位信号保持两个机器周期以上,便可完成复位,结束待机状态。
图2.11待机和掉电硬件结构
习题与思考题解题思路与方法
【习题2-1】8051单片机内部包含哪些主要逻辑功能部件?
各有什么主要功能?
【解答】
8051单片机内部主要包含有CPU、存储器、并行I/O口、定时器/计数器、串行口、时钟电路、复位电路等逻辑功能部件,各部分通过内部总线相连。
各部分主要功能如下:
1.中央处理器(CPU)
中央处理器是单片机最核心的部分,是单片机的控制和运算中心,主要完成运算和控制功能。
8051单片机的CPU是一个字长为8位的中央处理单元,即它对数据的处理是以字节为单位进行的。
2.内部数据存储器(内部RAM)
8051单片机中共有256个RAM单元,但其中能作为寄存器供用户使用的仅有前面128个,后面128个被特殊功能寄存器占用。
内部RAM一般用来暂存数据。
3.内部程序存储器(内部ROM)
8051单片机片内集成了ROM,用于存放程序、原始数据等。
4.定时器/计数器
8051单片机共有2个16位的定时器/计数器,可以实现定时和计数功能。
5.并行I/O口
8051单片机共有4个8位的I/O口,可以实现数据的并行输入、输出。
6.串行口
8051单片机有1个全双工的异步串行口,以实现单片机和其它设备之间的串行数据传送。
7.时钟电路
8051单片机内部的时钟电路为单片机产生时钟脉冲序列,使计算机按照时钟信号的节拍顺序严格的执行各种操作。
8.复位电路
复位是单片机的初始化操作,单片机在启动运行时,都需要先复位。
它的作用是使CPU和系统中其它部件都处于一个确定的初始状态,并从这个状态开始工作。
【习题2-2】MCS-51单片机有几种复位方法?
复位后单片机特殊功能寄存器的状态?
【解答】
单片机的复位电路有上电自动复位和手动按键复位两种。
上电自动复位利用电容器充电来实现,上电瞬间,RC电路充电,RST引脚端出现高电平,只要RST引脚端保持2个机器周期以上高电平,就能使单片机复位。
为了可靠地复位,一般应保持10ms以上高电平。
手动按键复位又分为:
按键电平复位和按键脉冲复位。
按键电平复位,相当于按复位键后复位端通过电阻与Vcc电源接通;按键脉冲复位,利用RC微分电路产生正脉冲。
除此之外,还有同步复位和外部脉冲复位等方法。
为了可靠复位很多芯片生产厂家制造出专门的复位电路,这些复位电路除了具有复位功能有的还集成了看门狗和串行EEPROM电路。
复位后片内各专用寄存器的状态如题表2—1所列,表中×为不定数。
寄存器
内容
寄存器
内容
PC
ACC
B
PSW
SP
DPTR
P0~P3
1P
IE
0000H
00H