第2章 STC89C51系列结和原理3Word文档下载推荐.docx
《第2章 STC89C51系列结和原理3Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第2章 STC89C51系列结和原理3Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
可通过指令改变RS1、RS0(PSW)两位来选择。
用于临时寄存信息。
②20H~2FH的16个单元的128位可位寻址区,也可字节寻址。
③30H~7FH是一般RAM区,也称为用户RAM区,共80字节,只能字节寻址,用作存放数据以及作为堆栈区。
不使用的工作寄存器或位寻址区也都可以作为一般的RAM使用。
例如,如果在程序中只用到第0组工作寄存器,那么08~1FH区域就可以作为一般的RAM使用。
2.片外数据存储器
当片内128B的RAM不够用时,需外扩,最多可外扩64KB的RAM。
注意,片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低128B的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。
第三类特殊功能寄存器(SFR)
特殊功能寄存器(SFR)也称专用寄存器,专门用于控制、管理片内算术逻辑部件、并行I/O口、串行口、定时/计数器、中断系统等功能模块的工作,用户在编程时可以给其设定值,但不能移作它用。
SFR离散地分布在片内RAM的80H—FFH地址空间,与片内数据存储器统一编址。
51子系列有18个特殊功能寄存器,其中3个为双字节(DPTR、T0、T1),共占用21个字节;
其中11个可位寻址(仅83位有效)。
凡是可位寻址的SFR,字节地址末位只能是0H或8H。
52子系列有21个特殊寄存器,其中5个为双字节,共占用26个字节。
注意:
(1)21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元之中,共83个可寻址位。
尽管还剩余许多空闲单元,但用户并不能使用。
(2)在22个专用寄存器中,唯一一个不可寻址的PC。
PC不占据RAM单元,它在物理上是独立的(在控制器中),因此是不可寻址的寄存器。
(3)对专用寄存器只能使用直接寻址方式,书写时既可使用寄存器符号,也可使用寄存器单元地址。
(因为寄存器名和地址单元的地址已经一一对应)
下面介绍某些SFR,余下的SFR将在后面介绍。
序号
特殊功能寄存器符号
名称
字节
地址
位地址
复位值
1
A(或Acc)
累加器
E0H
E7H~E0H
00H
2
B
B寄存器
F0H
F7H~F0H
3
DPH
数据指针DPTR高字节
83H
4
DPL
数据指针DPTR低字节
82H
5
IE
中断允许控制寄存器
A8H
AFH~A8H
6
IP
中断优先级控制寄存器
B8H
BFH~B8H
X0000000B
7
P0
P0口寄存器
80H
87H~80H
FFH
8
P1
P1口寄存器
90H
97H~90H
9
P2
P2口寄存器
A0H
A7H~A0H
10
P3
P3口寄存器
B0H
B7H~B0H
11
PCON
电源控制寄存器
87H
00XXX000B
12
PSW
程序状态字寄存器
D0H
D7H~D0H
13
SBUF
串行发送数据缓冲器
99H
-
XXXXXXXXB
14
SCON
串行控制寄存器
98H
9FH~98H
15
SP
堆栈指针
81H
07H
16
TCON
定时器/计数器控制寄存器
88H
8FH~88H
17
TL0
定时器/计数器0(低字节)
8AH
18
TH0
定时器/计数器0(高字节)
8BH
19
TL1
定时器/计数器1(低字节)
8CH
20
TH1
定时器/计数器1(高字节)
8DH
21
TMOD
定时器/计数器方式控制
89H
SFR的分布情况如下:
CPU专用寄存器:
累加器A(E0H)、寄存器B(F0H)、程序状态寄存器PSW(D0H)、堆栈指针SP(81H)、数据指针DPTR(82H、83H)。
并行接口:
P0~P3(80H、90H、A0H、B0H)。
串行接口:
串口控制寄存器SCON(98H);
串口数据缓冲器SBUF(99H);
电源控制寄存器PCON(87H)。
定时/计数器:
方式寄存器TMOD(89H);
控制寄存器TCON(88H);
初值寄存器TH0、TL0(8BH、8AH)/TH1、TL1(8DH、8CH)。
中断系统:
中断允许寄存器IE(A8H);
中断优先级寄存器IP(B8H)。
定时/计数器2相关寄存器(仅52子系列有):
定时/计数器2控制寄存器T2CON(CBH);
定时/计数器2自动重装寄存器RLDL、RLDH(CAH、CBH);
定时/计数器2初值寄存器TH2、TL2(CDH、CCH)。
第四类位地址空间
211个寻址位的位地址,其中:
00H~7FH这128位处于片内RAM字节地址20H~2FH单元中,如表2-5所示。
其余的83个可寻址位分布在特殊功能寄存器SFR中,见表2-6。
可被位寻址的特殊寄存器有11个,共有位地址88个,5个位未用,其余83个位的位地址离散地分布于片内数据存储器区字节地址为80H~FFH的范围内,其最低的位地址等于其字节地址,且其字节地址的末位都为0H或8H。
表2-5AT89C51片内RAM的可寻址位及其位地址
字节单元地址
D7
D6
D5
D4
D3
D2
D1
D0
20H
07
06
05
04
03
02
01
00
21H
0F
0E
0D
0C
0B
0A
09
08
22H
23H
1F
1E
1D
1C
1B
1A
24H
27
26
25
24
23
22
25H
2F
2E
2D
2C
2B
2A
29
28
26H
37
36
35
34
33
32
31
30
27H
3F
3E
3D
3C
3B
3A
39
38
28H
47
46
45
44
43
42
41
40
29H
4F
4E
4D
4C
4B
4A
49
48
2AH
57
56
55
54
53
52
51
50
2BH
5F
5E
5D
5C
5B
5A
59
58
2CH
67
66
65
64
63
62
61
60
2DH
6F
6E
6D
6C
6B
6A
69
68
2EH
77
76
75
74
73
72
71
70
2FH
7F
7E
7D
7C
7B
7A
79
78
表2-6SFR中的位地址分布
作为对AT89C51存储器结构的小结,下面的图为各类存储器的结构图。
从图中可清楚看出各类存储器在存储器空间的位置。
AT89C51单片机的存储器结构
2.5P1~P3口驱动LED发光二极管
下面讨论P1~P3口与LED发光二极管的驱动连接问题。
P0口与P1、P2、P3口相比,P0口的驱动能力较大,每位可驱动8个LSTTL输入,而P1、P2、P3口的每一位的驱动能力,只有P0口的一半。
当P0口某位为高电平时,可提供400μA的电流;
当P0口某位为低电平(0.45V)时,可提供3.2mA的灌电流。
任何一个口要想获得较大的驱动能力,只能用低电平输出。
例如,使用单片机的并行口P1~P3直接驱动发光二极管,电路如下图。
由于P1~P3内部有30kΩ左右的上拉电阻。
如高电平输出,则强行从P1、P2和P3口输出的电流
会造成单片机端口的损坏。
如端口引脚为低电平,能使电流
从单片机外部流入内部,则将大大增加流过的电流值。
所以,当P1~P3口驱动LED发光二极管时,应该采用低电平驱动。
(a)不恰当的连接:
高电平驱动(b)恰当的连接:
低电平驱动
发光二极管与AT89C51并行口的直接连接
2.6有关时序的概念
计算机在执行指令时,一条指令经译码后产生若干个基本微操作,这些基本微操作在时间上有严格的先后次序,这种次序称为计算机的时序。
几个CPU时序的基本概念
1.振荡周期:
指为单片机提供定时信号的振荡源的周期,是时序中最小的时间单位。
若为内部产生方式,则为石英晶体的振荡周期。
(常用12MHz、6MHz等)。
80C51单片机的时钟电路
振荡脉冲并不直接使用,由XTAL2或XTAL1端送往内部时钟电路(fosc):
经过2分频,向CPU提供2相时钟信号P1和P2(f拍节=1/2fosc);
再经3分频,(6分频)产生ALE时序(fALE=1/6fosc);
经过12分频,成为机器周期信号(MC=12/fosc),如下图所示。
需要指出的是,CPU的运算操作在P1期间,数据传送在P2期间。
2.时钟周期:
是振荡源信号经2分频后形成的时钟脉冲信号,也就是一个时钟周期是振荡周期的2倍。
时钟信号向单片机提供一个二节拍时钟信号,在每个时钟的前半周期,节拍1信号P1有效,后半周期节拍P2有效,每个节拍持续1个振荡周期。
3.机器周期:
CPU完成一个基本操作所需的时间为机器周期。
一个机器周期包含6个时钟周期,也就是等于12个振荡周期。
当石英晶体的振荡为12MHz和6MHz时,时钟周期分别为1/12μs和1/6μs,机器周期分别为1μs和2μs。
4.指令周期:
是指CPU执行一条指令所需的时间,是时序中最大时间单位。
由于单片机执行不同的指令,所需要的时间不同,因此,不同指令所包含的机器周期数也不同,机器周期越少的指令执行速度快。
单片机中大多数指令的指令周期由一个机器周期或两个机器周期组成,只有乘法、除法指令需要四个机器周期。
CPU时序
1机器周期和指令周期
机器周期:
每个机器周期包含S1、S2、S3、S4、S5、S6个状态,每个状态包含2拍P1和P2,每一个节拍持续1个振荡周期。
因此,每12个振荡周期为一个机器周期。
依次可表示为S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2。
AT89C51的机器周期
2.7单片机的复位
复位是使单片机的CPU或系统中的其它部件处于某一确定的初始状态,并从这一状态开始工作。
单片机的工作就是从复位开始的。
2.7.1复位电路
在时钟电路工作以后,当外部电路使得RST端出现2个机器周期(24个振荡周期)以上的高电平时,系统内部复位。
为了保证上电复位的可靠,RST必须保持足够长时间的高电平,该时间至少为振荡器的稳定时间(通常为几个毫秒)加上两个机器周期。
如果RST引脚持续保持高电平,单片机就处于循环复位状态。
实际应用中,复位操作有两种基本形式:
一种是上电复位,另一种是上电与按键均有效的复位。
(a)上电复位(b)上电与按键均有效的复位
上电复位要求接通电源后,单片机自动实现复位操作。
常用的上电复位在加电的瞬间,RST引脚为高电平,随着电容C1的充电,RST引脚的高电平将逐渐下降。
该电路典型的电阻值为:
晶体振荡器为12MHz时,C1为10μF,R1为8.2kΩ。
复位时,PC初始化为0000H,程序从0000H单元开始执行。
除系统的正常初始化外,当程序出错(如程序跑飞)或操作错误使系统处于死锁状态时,需按复位键使RST脚为高电平,使AT89C51摆脱“跑飞”或“死锁”状态而重新启动程序。
复位操作还对其他一些寄存器有影响,这些寄存器复位时的状态见表2-7。
由表2-7可看出,复位时,SP=07H,而P0~P3引脚均为高电平。
在某些控制应用中,要注意考虑P0~P3引脚的高电平对接在这些引脚上的外部电路的影响。
例如,当P1口某个引脚外接一个继电器绕组,当复位时,该引脚为高电平,继电器绕组就会有电流通过,就会吸合继电器开关,使开关接通,可能会引起意想不到的后果。
2.7.2单片机最小系统设计
所谓单片机最小系统是指能够让单片机正常运行所需的最基本的硬件配置,由于80C51单片机内部含有程序存储器,所以(在程序的大小不超过4KB时,不用扩充程序存储器,超过4KB时,仍然要外扩程序存储器)不需外扩程序存储器。
下面给出STC89C51单片机的最小系统原理图。
基本要求:
(在Proteus中仿真可以不接这些)
(1)电源
(2)晶体振荡器
(3)复位电路
(4)使用内部程序存储器,
为高电平
2.7.3单片机系统扩展
在由单片机构成的实际测控系统中,最小应用系统往往不能满足要求,因此在系统设计时首先要解决系统扩展问题。
单片机的系统扩展主要有:
程序存储器(ROM)扩展,数据存储器(RAM)扩展以及I/O口的扩展。
外扩的程序存储器与单片机内部的程序存储器统一编址,采用相同的指令,常用芯片有EPROM和EEPROM,扩展时P0口分时地作为数据线和低位地址线,需要锁存器芯片。
扩展的数据存储器RAM和单片机内部RAM在逻辑上是分开的,二者分别编址,使用不同的数据传送指令。
常用的芯片有SRAM和DRAM以及锁存器芯片。
常用的可编程I/O芯片有8255和8155。
用8255扩展并行I/O口时需要锁存器,8155则不用。
对扩展I/O口的寻址采用与外部RAM相同的指令,因此在设计电路时要注意合理分配地址。
8255和8155的工作方式是通过对命令控制字的编程来实现的,在使用时首先要有初始化程序。
MCS-51单片机有很强的扩展功能,外围扩展电路、扩展芯片和扩展方法都非常典型、规范。