第二章MCS51单片机的结构和工作原理Word下载.docx
《第二章MCS51单片机的结构和工作原理Word下载.docx》由会员分享,可在线阅读,更多相关《第二章MCS51单片机的结构和工作原理Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
使用时VCC接电源的正极,VSS接电源负极。
2.XTAL1、XTAL2(18、19脚):
外部晶体振荡器的接入引脚;
图2-3MCS-51系列单片机引脚示意图
3.控制信号引脚RST,ALE,
和
1)RST/VPD(9脚):
此引脚有两个功能,一是作为复位信号输入端RST使用,高电平有效。
正常工作时,当此输入端保持两个机器周期(24个振荡周期)的高电平时,就可以完成复位操作。
此引脚的第二功能是作为备用电源的输入端VPD,当主电源Vcc发生故障,降低到低电平规定值时,将备用电源自动接入,为RAM提供备用电源,以保证存储在RAM中的信息不丢失,从而使复位后能继续正常运行。
2)ALE/PROG(30脚):
此引脚有两个功能,一是输出地址锁存控制信号ALE,高电平有效,二是作为片内EPROM编程写入脉冲输入端。
当单片机上电正常工作后,ALE引脚不断向外输出地址锁存信号,其频率为振荡器频率fosc的1/6。
CPU访问片外存储器时,ALE输出信号作为锁存低8位地址的控制信号。
ALE端的负载驱动能力为8个LS型TTL负载。
在对片内带有4KBEPROM的单片机进行固化程序时,作为编程脉冲输入端PROG使用。
3)
(29脚):
程序存储器输出允许信号,低电平有效。
在访问片外扩展的程序存储器时,此端定时输出负脉冲,作为片外存储器的读选通信号。
同样可驱动8个LS型TTL负载。
另外,如果想测试MCS-51系列单片机芯片的好坏,在上电的状态下,可用示波器查看ALE和
引脚是否有脉冲信号输出,如有脉冲信号输出,表示芯片基本上是好的。
4)
/Vpp(31脚):
此引脚有两个功能,一是作为内/外部程序存储器设置信号输入端,二是作为片内EPROM编程写入电压输入端使用。
当
引脚接高电平时,CPU访问片内程序存储器的顺序是由内到外,即CPU首先从片内程序存储器开始执行程序,当PC(程序计数器)的值超过0FFFH时,将自动转去执行片外程序存储器内的程序。
当输入信号
引脚接低电平(接地)时,CPU只访问外部程序存储器,执行外部程序存储器中的程序,而不管是否有片内程序存储器。
对于无片内ROM的8031或8032型号的单片机,在使用时需要通过外部电路扩展程序存储器,此时必须将
引脚接地。
此引脚的第二功能Vpp是对8751片内EPROM固化编程时,作为施加较高编程电压(一般12V~21V)的输入端。
4.输入/输出端口引脚:
P0,P1,P2和P3
四个并行端口都可以作为普通的I/O端口使用,除P1口外其它三个端口都具有第二功能。
1)P0口(P0.0~P0.7,39~32脚):
可以作为普通的I/O口使用,在总线方式时,作为地址/数据线使用。
当P0口作为普通输入/输出口使用时,在输入数据时,应先向P0口锁存器(地址80H)写入全1,然后再读入数据。
当P0口作为总线接口使用时,在CPU访问片外存储器时,P0口做为低8位地址/数据的复用总线使用。
在此期间,P0口内部上拉电阻有效。
P0口是一个漏极开路的8位准双向I/O端口。
每位能驱动8个LS型TTL负载。
2)P2口(P2.0~P2.7,21~28脚):
可以作为普通的I/O口使用,在总线方式时,作为地址线使用。
当P2口作为普通输入口使用时与P0口相同,要先写1,然后再读入数据。
当P2口作为总线接口使用时,在CPU访问片外存储器时,它作为高8位地址总线使用。
P2口是一个带内部上拉电阻的8位准双向I/O端口,每一位能驱动4个LS型TTL负载。
3)P1口(P1.0~P1.7,1~8脚):
P1口是一个带内部上拉电阻的8位准双向I/O端口,无总线接口功能。
同理,在P1口作为输入口使用时,应先向P1口锁存器(地址90H)写入全1,此时P1口引脚由内部上拉电阻拉成高电平,然后再读入P1口的数据。
P1口的每一位能驱动(灌入或输出电流)4个LS型TTL负载。
4)P3口(P3.0~P3.7,10~17脚):
P3口是一个带内部上拉电阻的8位准双向I/O端口。
P3口的每一位能驱动4个LS型TTL负载。
P3口除作为一般准双向I/O口外,每个引脚还具有第二功能。
P3口用在第二功能使用时,8个引脚的功能如下:
P3.0-串行数据输入引脚RXD
P3.1-串行数据输出引脚TXD
P3.2-外部中断0(
)的中断请求信号输入引脚
P3.3-外部中断1(
P3.4-定时器0(T0)外部计数脉冲输入引脚
P3.5-定时器1(T1)外部计数脉冲输入引脚
P3.6-片外数据存储器写选通控制信号输出引脚
P3.7-片外数据存储器读选通控制信号输出引脚
第三节MCS-51单片机的存储器配置
mcs-51的存储器在物理结构上分为程序存储器和数据存储器,共有四个存储空间:
分别是片内程序存储器、片内数据存储器、片外程序存储器和片外数据存储器。
存储空间分布如图2-4所示,从使用者的角度看,mcs-51存储器的地址空间为三类:
图2-4存储空间分布图
1)片内、片外统一编址的64KB程序存储器地址空间,用16位地址表示为:
0000H~FFFFH。
CPU访问片内、片外ROM时,使用MOVC指令。
2)片外扩展的64KB的数据存储器地址空间,也用16位地址表示为:
CPU访问片外RAM时,使用MOVX指令。
3)片内数据存储器256B地址空间,用8位地址表示为:
00H~FFH。
CPU访问片内RAM时。
使用MOV指令。
一、程序存储器的配置
MCS-51系列单片机的程序存储器最大配置为64KB,用于存放编好的程序和表格常数。
由图2-4可知,程序存储器由两个部分组成,片内程序存储器ROM,8051/8751的容量为4KB,地址为0000H~0FFFH;
片外程序存储器最多可扩至64KB,地址为1000H~FFFFH,片内外统一编址。
并且通过
引脚进行设置。
1.
引脚的作用
当引脚
接高电平(
=1)时,MCS-51的程序计数器PC在0000H~0FFFH范围内(即前4KB地址)执行片内ROM中的程序;
当指令地址超过0FFFH后,就自动转向执行片外ROM中的程序。
MCS-51从片内程序存储器和片外程序存储器取指时执行速度相同。
接低电平(
=0)时,MCS-51片内ROM不起作用,CPU只能从片外扩展的程序存储器ROM中取指令执行,片外扩展的程序存储器ROM的地址从0000H开始编址。
这种接法特别适用于无片内程序存储器的8031型号的单片机。
2.程序存储器中的保留单元
程序存储器的某些单元是留给系统使用的,见表2-1。
由于MCS-51系列单片机上电复位后,程序计数器的内容为0000H,所以CPU总是从0000H开始执行程序。
存储单元0000H~0002H用作MCS-51上电复位后引导程序的存放单元。
使用时通常在这三个单元中存放一条转移指令(LJMPMAIN),那么程序就被引导到转移指令指定的程序段去执行。
表2-1保留的存储单元
存储单元
功能
0000H
上电或复位后,引导程序入口地址
0003H
外部中断0(
)中断服务程序的入口地址
000BH
定时器0(T0)中断服务程序的入口地址
0013H
外部中断1(
001BH
定时器1(T1)中断服务程序的入口地址
0023H
串行口中断服务程序的入口地址
MCS-51单片机有5个中断源,在程序存储器中规定了5个中断服务程序的入口,并且在每个中断向量之间有8个单元提供用户使用。
例如,外部中断0引脚
(P3.2)有效时,向CPU发出中断申请,CPU响应
的中断请求后自动将
中断服务程序的入口地址0003H装入PC,程序就自动转向0003H单元开始执行。
如果事先在0003H~000AH存入转移到
中断服务程序的转移指令,则程序就被自动转移到指定的中断服务程序空间去执行。
二、数据存储的配置
数据存储器RAM用于存放运算的中间结果、数据暂存和缓冲、标志位等。
数据存储器空间也分成片内和片外两大部分,片内存储器空间为256B,地址从00H~0FFH;
片外数据存储器空间可扩展为64KB,地址从0000H~0FFFFH。
下面分别进行介绍。
图2-5片内RAM
1.片外RAM
片外数据存储器通过硬件电路可以扩展为64KB,地址范围:
0000H~0FFFFH。
使用时通过“MOVX”指令进行数据存取。
2.片内RAM
片内数据存储器共有128个字节,地址范围:
00H~7FH。
它们又分为三个部分:
工作寄存器区,位寻址区和用户区低。
如图2-5所示。
1)地址为00H~1FH的32个字节定义为工作寄存器区,并且分成四组来使用,称为0组、1组、2组和3组。
每组有8个工作寄存器,每个字节定义为一个工作寄存器,分别用R0~R7表示。
每组寄存器均可选作CPU的当前工作寄存器组。
若程序中并不需要四组寄存器,其余可以作一般RAM单元使用。
CPU复位后,选中第0组寄存器为当前的工作寄存器。
通过对程序状态字PSW中RS1,RS0的设置,可以选择其它组为当前工作寄存器,见表2-2。
2)地址为20H~2FH的单元为“位寻址区”,这16个字节即可以按字节寻址,也可以按位寻址,这16个字节总共128位,每一位都有唯一的位地址,可通过位寻址方式访问其各位,其位地址分布见表2-3所示。
表2-2工作寄存器地址表
组
R7
R6
R5
R4
R3
R2
R1
R0
RS1RS0
0组
工作寄存器的地址
07H
06H
05H
04H
03H
02H
01H
00H
00
1组
0FH
0EH
0DH
0CH
0BH
0AH
09H
08H
01
2组
17H
16H
15H
14H
13H
12H
11H
10H
10
3组
1FH
1EH
1DH
1CH
1BH
1AH
19H
18H
11
表2-3RAM位寻址区地址表
字节地址
MSB
位地址
LSB
2FH
7FH
7EH
7DH
7CH
7BH
7AH
79H
78H
2EH
77H
76H
75H
74H
73H
72H
71H
70H
2DH
6FH
6EH
6DH
6CH
6BH
6AH
69H
68H
2CH
67H
66H
65H
64H
63H
62H
61H
60H
2BH
5FH
5EH
5DH
5CH
5BH
5AH
59H
58H
2AH
57H
56H
55H
54H
53H
52H
51H
50H
29H
4FH
4EH
4DH
4CH
4BH
4AH
49H
48H
28H
47H
46H
45H
44H
43H
42H
41H
40H
27H
3FH
3EH
3DH
3CH
3BH
3AH
39H
38H
26H
37H
36H
35H
34H
33H
32H
31H
30H
25H
24H
6H
23H
22H
21H
20H
3)地址为30H~7FH的单元为用户区,用户可以在这个区域存取数据,也可以定义为堆栈区。
对于128B的RAM区,CPU访问时可以采用字节地址或位地址方式。
如果访问位地址区,就用位寻址方式,否则可以采用直接寻址或间接寻址方式。
位寻址能力是MCS-51的一个重要特点。
这些可寻址位,通过执行指令可直接对某一位操作,如置1、清0等,可用作软件标志位或用于位(布尔)处理。
3.特殊功能寄存器(SFR)区
MCS-51片内RAM的80H~FFH地址空间,为特殊功能寄存器(SFR)区,有21个特殊功能寄存器(SFR),它们离散地分布在80H~FFH的RAM空间中。
访问特殊功能寄存器只允许使用直接寻址方式,这些特殊功能寄存器见表2-4所示。
在表2-4中,有21个特殊功能寄存器,有些特殊功能寄存器的符号地址上标有“※”号,他表示该特殊功能寄存器既可以位寻址也可以字节寻址。
表中有10个寄存器是即可以位寻址也可以字节寻址,特征是它们的字节地址正好能被8整除,其地址分布见表2-5所示。
下面介绍部分特殊功能寄存器,其余将在后续章节中讲述。
表2-4MCS-51系列单片机特殊功能寄存器表
符号地址
名称
B
B寄存器
F0
*ACC
累加器
E0H
*PSW
程序状态字寄存器
D0H
*IP
中断优先级控制寄存器
B8H
*P3
P3口锁存寄存器
B0H
*IE
中断允许控制寄存器
A8H
*P2
P2口锁存寄存器
A0H
SBUF
串行口数据缓冲器
99H
*SCON
串行口控制寄存器
98H
*P1
P1口锁存寄存器
90H
TH1
定时/计数器1的高字节
8DH
TH0
定时/计数器1的低字节
8CH
TL1
定时/计数器0的高字节
8BH
TL0
定时/计数器0的低字节
8AH
TMOD
定时/计数器工作方式寄存器
89H
*TCON
定时/计数器控制寄存器
88H
PCON
电源控制寄存器
87H
DPH
数据指针寄存器高字节
83H
DPL
数据指针寄存器低字节
82H
SP
堆栈指针寄存器
81H
*P0
P0口锁存寄存器
80H
1)累加器ACC是MCS-51最常用的8位特殊功能寄存器;
在执行运算指令时,许多指令的操作数取自于ACC,许多运算中间结果也存放于ACC中。
在指令系统中用A作为累加器ACC的助记符。
2)寄存器B在乘、除指令中使用最多。
乘法指令的两个操作数分别取自A和B,乘积存于B和A两个8位寄存器中。
详见乘除法指令,在其他指令中,B可作为一般通用寄存器或一个RAM单元使用。
3)程序状态字寄存器PSW,它的8位包含了程序执行后的状态信息,供程序查询和判断之用。
其各位含义如下:
CY:
进位、借位标志位。
有进位、借位时CY=1,否则CY=0;
AC:
辅助进位、借位标志位,当高半字节与低半字节间有进位或借位时AC=1,否则AC=0;
F0:
用户标志位,由用户自己定义;
RSl、RS0:
当前工作寄存器组选择位,见表2-2;
OV:
溢出标志位。
有溢出时OV=1,否则OV=0;
P:
奇偶标志位。
存于ACC中的运算结果有奇数个1时P=1,否则P=0。
表2-5特殊功能寄存器地址表
SFR
位地址/定义
ACC
E7H
E6H
E5H
E4H
E3H
E2H
E1H
ACC.7
ACC.6
ACC.5
ACC.4
ACC.3
ACC.2
ACC.1
ACC.0
PSW
D7H
D6H
D5H
D4H
D3H
D2H
D1H
CY
AC
RS1
RS0
OV
F1
P
IP
BFH
BEH
BDH
BCH
BBH
BAH
B9H
/
PS
PT1
PX1
PT0
PX0
P3
B7H
B6H
B5H
B4H
B3H
B2H
B1H
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
IE
AFH
AEH
ADH
ACH
ABH
AAH
A9H
EA
ES
ET1
EX1
ET0
EX0
P2
A7H
A96H
A95H
A4H
A3H
A2H
A1H
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
SCON
9FH
9EH
9DH
9CH
9BH
9AH
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
P1
97H
96H
95H
94H
93H
92H
91H
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
GATE
C/T
M1
M0
TCON
8FH
8EH
TF1
TR1
TF0
TR0
IT1
IE1
IT0
IE0
SMOD
GF1
GF0
PD
IDL
P0
86H
85H
84H
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
4)8位堆栈指针寄存器SP,它总是指向栈顶。
MCS-51单片机的堆栈通常设在30H~7FH这一段RAM中。
在系统上电或复位时,SP的初始值为07H,可以在初始化程序中重新设置。
MCS-51系列单片机堆栈操作遵循“先进后出,后进先出”的原则,入栈操作时,首先执行SP加1操作,然后数据入栈存入SP指向的单元。
出栈操作时,先将SP指向单元的数据弹出,然后执行SP减1操作,这时SP指向的单元是新的栈顶。
由此可见,MCS-5