第4章 MCS51单片机内部接口Word下载.docx
- 文档编号:16714935
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:43
- 大小:210.38KB
第4章 MCS51单片机内部接口Word下载.docx
《第4章 MCS51单片机内部接口Word下载.docx》由会员分享,可在线阅读,更多相关《第4章 MCS51单片机内部接口Word下载.docx(43页珍藏版)》请在冰豆网上搜索。
当GATE=“0”时,外部中断信号不参预控制,此时,定时/计数器的启停只受TRX的控制。
:
计数器方式还是定时器方式选择位。
当C/
=0时为定时器方式;
=1时为计数器方式。
M1和M0:
操作方式选择位。
对应4种操作方式如表4-1所示。
表4-1操作方式选择
M1M0
操作方式
功能
00
方式0
13位计数器
01
方式1
16位计数器
10
方式2
可自动再装载的8位计数器
11
方式3
T0分为二个独立计数器,T1为串行口波特率发生器
2.定时/计数器控制寄存器TCON
定时/计数器的控制寄存器是一个8位特殊功能寄存器,用来存放控制字,字节地址为88H,可以位寻址,位地址为88H~8FH。
其格式如下:
8FH
88H
TCON(88H)
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
与外部中断
、
有关位,将在中断系统中介绍
T1、T0运行控制位,可编程
T1、T0溢出标志记录位
TF1(TCON.7):
T1溢出标志。
当T1产生溢出时,由硬件置“1”,可向CPU发中断请求。
CPU响应中断后被硬件自动清“0”,也可以由程序查询后清“0”。
TR1(TCON.6):
T1运行控制位。
由软件置“1”或置“0”来启动或关闭T1工作。
TF0(TCON.5):
T0溢出标志(同TF1)。
TR0(TCON.4):
T0运行控制位(同TR1)。
TCON的其它位将在后面详细介绍。
复位后,TCON的各位均被清“0”。
3.定时/计数器的4种工作方式
1)方式0
用软件设置使方式寄存器TMOD中M1M0=00时,计数器长度控制按13位工作。
由TX的低5位(TX的高3位未用)和THX的8位构成13位计数器(X取0或1)。
图4.2表示了定时/计数器T1在方式0下的逻辑图。
定时/计数器T0类似。
图中C/
是TMOD的控制位,当C/
=0时,选择定时器方式,计数器输入信号为晶振的12分频。
=1时,选择计数器方式,计数器输入信号为外部引脚P3.5(T1)。
TR1是TCON的控制位,GATE是门控位,
是外部中断1的输入端。
当GATE=1时,则计数器启动受外部中断信号
和TR1相与之后的信号控制,如果保持TR1为高电平,只要
为高电平,计数器便开始计数,当
为低电平时,停止计数。
利用这一功能可测量
引脚上正脉冲的宽度。
TF1是定时/计数器的溢出标志。
当定时/计数器T1按方式0工作时,计数输入信号作用于TL1的低5位;
当TL1低5位计满产生溢出时向TH1的最低位进位;
当13位计数器计满产生溢出时,使控制寄存器TCON中溢出标志TF1置“1”,并使13位计数器全部清零。
此时,如果中断是开放的,则向CPU发中断请求。
若定时/计数器将继续按方式0工作下去,则应按要求给13位计数器赋予初值。
图4.2定时/计数器T1(或T0)方式0逻辑图
2)方式1
当用软件使方式寄存器TMOD中M1M0=01时,计数器长度控制按16位工作,即TL、TH全部使用,构成16位计数器,其控制与操作方式与方式0完全相同。
3)方式2
当用软件使方式寄存器TMOD中M1M0=10时,定时/计数器就变为可自动装载计数初值的8位计数器。
在这种方式下,TL1(TL0)被定义为计数器,TH1(或TH0)被定义为赋值寄存器,其逻辑结构如图4.3所示。
图4.3定时/计数器T1(或T0)方式2逻辑图
当计数器TL1计满产生溢出时,不仅使其溢出标志TF1置“1”(若中断是开放的,则向CPU发中断请求),而且还自动打开TH1和TL1之间的三态门,使TH1的内容重新装入TL1中,并继续计数操作。
TH1的内容可通过软件预置,重新装载后其内容不变。
因而用户可省去重新装入计数初值的程序,简化定时时间的计算,可产生相当精确的定时时间。
另外方式2还特别适合于把定时/计数器用作串行口波特率发生器。
4)方式3
当用软件使方式寄存器TMOD中M1M0=11时,内部控制逻辑把TL0和TH0配置成2个互相独立的8位计数器,如图4.4所示。
其中TL0使用了自己本身的一些控制位。
、GATE、TR0、
、TF0,其操作类同于方式0和方式1,可用于计数也可用于定时。
但TH0只能用于定时器方式,因为它只能对机器周期计数。
它借用了定时器T1的控制位TR1和TF1,因此,TH0控制了定时器T1的中断。
图4.4定时/计数器T0方式3逻辑图
方式3只适合于定时器T0,使其增加一个8位定时器。
一般情况下,当定时器T1作为串行接口波特率发生器时,定时器T0才定义为方式3,以增加一个8位计数器。
当T0定义方式3时,定时器1可定义为方式0、方式1和方式2。
其逻辑结构如图4.5所示。
(a)
(b)
(c)
图4.5定时器T0方式3时T1的逻辑结构
(a)T1工作于方式0(b)T1工作于方式1(c)T1工作于方式2,
4.2MCS-51单片机中断系统
MCS-51单片机有2个外部中断源输入:
(P3.2)、
(P3.3);
内部有3个中断源:
定时/计数器T0、T1的溢出中断和片内串行口接受或发送中断。
当系统产生中断时,5个中断源的中断申请及中断控制分别由特殊功能寄存器TCON、SCON、IE和IP的相应位来锁存或控制。
4.2.1与中断有关的特殊功能寄存器
1定时/计数器控制寄存器TCON
TCON是定时/计数器T0、T1的控制寄存器,同时它又能锁存外部中断申请标志和定时/计数器T0、T1的溢出标志。
TF1:
定时/计数器T1溢出标志
当启动T1后,T1即从初值开始计数,当T1计数产生溢出时,由硬件自动置位TF1并向CPU请求中断,当CPU响应该中断后,中断标志被硬件自动清除。
TF0:
定时/计数器T0溢出标志,其功能和操作同TF1。
IE1:
外部中断
中断请求标志。
当CPU检测到外部中断请求
输入信号有效触发时,由硬件自动置位并请求中断,当CPU响应中断后中断标志被硬件自动清除。
IT1:
触发方式选择位。
可由指令程控为“0”和“1”。
当IT1=0时,INT1被指定为低电平触发方式。
CPU在每一机器周期的S5P2采样
(P3.3)的输入电平。
当采样值为低电平时,置“1”IE1。
当IT1=1时,
被指定为边沿触发方式,即
下降沿有效。
CPU在每一机器周期的S5P2都采样
(P3.3)的输入电平,若一次采样值为高电平而下一机器周期采样值为低电平(说明在两次采样期间曾产生了一个下降沿)则置“1”IE1。
IE0:
请求标志,其功能同IE1。
IT0:
触发方式选择位,其功能同IT1。
2串行口控制寄存器SCON
SCON为串行口控制寄存器,字节地址为98H,可以位寻址,复位后,SCON被清0。
当串行口发生中断请求时,其低两位锁存串行口的发送中断和接收中断,其格式如下:
SCON(98H)
TI
RI
TI:
串行口发送中断标志
当CPU向串行口的发送数据缓冲器SBUF写入一个数据时,发送器就开始发送,当发送完一帧数据后,由硬件置“1”TI,向CPU申请中断。
值得注意的是当CPU响应中断,转向串行口中断服务时,硬件不能自动清“0”TI标志,必须在中断服务程序中用指令清“0”。
RI:
串行口接收中断标志。
若串行口接收器允许接收,当接收器接收到一帧数据后,置“1”RI,串行口接收器向CPU申请中断,同样RI必须在中断服务程序中用指令清“0”。
由于IE0、IF0、IE1、IF1、RI、TI均可以位寻址,如果实际系统的实时性要求不高时,也可以选择采用查询方式工作。
3中断允许寄存器IE
字节地址是0A8H,可位寻址,IE格式如下:
IE(A8H)
EA
/
ES
ET1
EX1
ET0
EX0
EA:
CPU中断总的使能位。
EA=1,CPU开中断;
EA=0,禁止所有中断。
ES:
串行口中断允许位。
ES=1,开放串行口中断;
ES=0,禁止串行口中断。
ET1:
定时/计数器T1溢出中断允许位。
ET1=1,开T1中断;
ET1=0,禁止T1中断。
EX1:
允许位。
EX1=1,开
中断;
EX1=0,禁止
中断。
ET0:
定时/计数器T0溢出中断允许位。
ET0=1,开T0中断,ET0=0,禁止T0中断。
EX0:
EX0=1,开
EX0=0,禁止
MCS51单片机复位时,IE被清0,欲对中断进行管理必须对IE编程。
4中断优先级寄存器IP
字节地址是0B8H,可位寻址,MCS-51的中断分两个优先级,对于每一个中断源都可以通过对特殊功能寄存器IP编程以定义为高优先级或低优先级中断,以便实现二级中断嵌套。
IP的各位定义如下:
IP(B8H)
PS
PT1
PX1
PT0
PX0
PS:
串行口中断优先级设定位。
PS=1,串行口中断设定为高优先级;
PS=0,串行口中断设定为低优先级。
PT1:
定时/计数器T1溢出中断优先级设定位。
PT1=1,T1溢出中断设定为高优先级;
PT1=0,T1溢出中断设定为低优先级。
PX1:
优先级设定位。
PX1=1,外部中断
设定为高优先级;
PX1=0,外部中断
设定为低优先级。
PT0:
定时/计数器T0溢出中断优先级设定位。
PT0=1,T0溢出中断设定为高优先级;
PT0=0,T0溢出中断设定为低优先级。
PX0:
PX0=1,外部中断
PX0=0,外部中断
MCS51单片机复位后,IP被清0。
4.2.2中断系统优先级结构
对IP寄存器的编程可把5个中断规定为高低两个优先级,它们遵循两个基本规则:
①一个正在执行的低级中断服务程序,能被高优先级中断请求所中断,但不能被同优先级中断请求所中断。
②一个正在执行的高优先级中断服务程序,不能被任何中断请求所中断。
返回主程序后要再执行一条指令才能响应新的中断请求。
为了实现这两个规则,中断系统内部设置了两个不可寻址的“优先级状态”触发器。
当高级“优先级状态”触发器状态为“1”时,表示正在执行高优先级中断服务,它禁止所有其它中断,只有在高级中断服务返回(执行RET1指令)时,被清“0”,表示可响应其它中断。
当低级“优先级状态”触发器状态为“1”时,表示正在执行低优先级中断服务程序,它屏蔽其它同级中断请求,但不能屏蔽高优先级中断请求。
在中断服务返回时(执行RET1指令)时,被清“0”。
MCS-51有5(6)个中断源,但只有两个优先级,必然会有几个中断请求源处于同样的优先级。
当CPU同时收到几个同优先级中断请求,MCS-51内部有一个硬件查询逻辑,它的查询顺序是:
外部中断请求
最高
定时/计数器T0溢出中断
定时/计数器T1溢出中断
串行口接受或发送最低
CPU将根据查询顺序来响应这些中断请求。
MCS-51中断系统的总体结构如图4.6所示。
图4.6中断系统总体结构
4.2.3中断响应过程
MCS-51单片机CPU在每一个机器周期查询每一个中断源,在机器周期的S5P2状态采样并按优先级处理有被激活的中断申请,若没有被下述条件所阻止,将在下一个机器周期的S1状态响应激活了的最高级中断请求。
①CPU正在处理同级或高优先级中断;
②现行的机器周期不是所执行指令的最后一个机器周期;
③正在执行的指令是RET1或是访问IE或IP(即在CPU执行RET1或访问IE、IP的指令后,至少需要再执行一条指令才会响应新的中断请求)。
若存在上述任一种情况,中断将暂受阻,若不存在上述情况,将在紧跟的下一个机器周期执行这个中断。
CPU响应中断时,首先要完成这样几件工作:
其一先置位相应的“优先级状态”触发器(该触发器指出CPU当前处理的中断优先级别),以阻断同级或低级中断申请;
其二,自动清除相应的中断标志(T1或RI除外);
其三,自动保护断点,将现行程序计数器PC内容压入堆栈,并根据中断源把相应的矢量单元地址装入PC中。
CPU完成上述工作一般需3~8个机器周期。
中断源
矢量单元地址
0003H
定时/计数器T0
000BH
0013H
定时/计数器T1
001BH
串行口
0023H
这些矢量单元之间各有8个单元的空间,一般情况下,8个地址单元难以容纳一个中断服务子程序,除非中断服务特别简单,因此,一般应该在这些矢量单元中存放一条无条件转移指令,转移目标地址就是中断服务子程序的入口地址,以便有足够的空间来存放中断服务程序。
例如:
ORG
LJMP
2000H
这样,实际上真正外部中断
的中断子程序入口地址安排在2000H。
中断服务子程序的最后一条指令应是RET1(中断返回)。
RET1指令将清除“优先级状态”触发器,然后从堆栈弹出断点地址PC值,返回主程序继续执行主程序。
4.2.4外部中断的触发方式
若外部中断被定义为电平触发方式(即ITX=0时),即输入低电平有效。
该低电平维持到CPU响应中断为止足矣,在中断返回之前必须为高电平,否则CPU返回主程序后,将会再次响应该中断。
由此可见,电平触发方式适合于外部中断输入以低电平输入,且中断服务程序能撤除外部中断申请的情况。
若外部中断被定义为边沿触发方式(即ITX=1),在这种方式下,CPU在一个机器周期采样外部中断输入引脚信号为高电平,而在紧接着下一机器周期采样为低电平,就立即置位外部中断申请标志,换言之,CPU将外部中断输入的负跳变锁存在相应的中断标志位中。
即使CPU暂时不响应,中断申请标志也不会丢失,直到CPU响应该中断时,该标志才能清除。
需要强调的是外部中断输入边沿的检测,需要2个机器周期,因此,外部中断输入的负脉冲宽度至少大于12个时钟周期(若晶振为12MHz,则应大于1μs)才能保证被CPU采样。
外部中断边沿触发方式适合于以负脉冲形式的外部中断请求。
一般采用外部中断(
)时,外部中断源与单片机一般还应有握手线。
在CPU响应中断后,在中断服务子程序中,要通过握手线告知中断源其中断申请已被响应,中断源接到通知后,可清除本次中断申请。
准备后面继续向CPU提出中断申请。
4.3MCS-51单片机串行口
4.3.1串行口有关的特殊功能寄存器
1.数据缓冲器SBUF
串行口中有两个物理空间上各自独立的发送缓冲器和接收缓冲器。
这两个缓冲器公用一个地址99H,发送缓冲器只写不读,接收缓冲器只读不写。
接收缓冲器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应接收器中断,没有把上一帧数据读走而产生两帧数据重叠问题。
对于发送缓冲器,为了保持最大传送速率,一般为单缓冲型,因为发送时CPU是主动的,不会产生写重叠问题。
2.串行口控制寄存器SCON
其字节地址98H,可位寻址,位地址98H~9FH。
格式为
D7
D0
SM0
SM1
SM2
REN
TB8
RB8
包括方式选择位、接收发送控制位及中断状态标志位。
SM0、SM1:
串行口方式选择位,如表4-2所示。
SM2:
允许方式2、方式3多机通讯控制位。
在方式2或方式3中,如SM2=1,则接收到的第9位数据(RB8)为“0”时,不启动接收中断标志RI(RI=0)。
当接到收的第9位数据(RB8)为“1”时,则启动接收中断RI(RI=1)。
如果SM2=0,则接收到的第9位数据(RB8)无论为“1”或“0”均启动RI(RI=1)。
在方式1时,如SM2=1,则只有在接收到有效停止位时才启动RI,若没有接收到有效停止位,则RI为“0”。
如果不是多机通讯,则无论串行口工作在方式0、1、2、3时,一般SM2都置为“0”。
表4-2串行口工作方式
方式
功能说明
移位寄存器方式(用于I/O扩展)波特率为fosc/12
1
8位UART,波特率可变(T1溢出率决定)
2
9位UART,波特率为fosc/64或fosc/32
3
9位UART,波特率可变(T1溢出率决定)
REN:
允许接收控制位。
由软件置“1”时,允许接收;
由软件置“0”时,禁止接收。
TB8:
在方式2和方式3中要发送的第9位数据。
需要时由软件置位或复位。
RB8:
在方式2和方式3中是接收到的第9位数据。
在方式1时,如SM2=0,RB8是接收到的停止位。
在方式0中,不使用RB8。
发送中断标志。
接收中断标志。
3.特殊功能寄存器
其字节地址87H,没有位寻址功能。
与串行口有关的只有PCON的最高位。
PCON(87H)
SMOD
SMOD:
波特率选择位。
当SMOD=1时,波特率加倍。
4.3.2串行口工作方式
串行口具有4种工作方式,我们从应用角度,重点讨论各种方式的功能和外特性,对串行口的内部逻辑和内部时序的细节不做详细讨论。
1.方式0
方式0为移位寄存器输入/输出方式,可外接移位寄存器,以扩展I/O口,也可接同步输入/输出设备。
按方式0工作,波特率是固定的,为fosc/12。
这时数据的传送,无论是输入还是输出,均通过引脚RXD(P3.0)端,移位同步脉冲由TXD(P3.1)输出。
发送/接收一帧数据为8位二进制数,低位在先,高位在后。
(1)方式0发送
当串行口定义为方式0后,当一个数据写入发送缓冲器SBUF时,串行口即将8位数据以振荡频率的十二分之一的波特率,将数据从RXD端串行输出,TXD端输出移位同步信号,发送完时中断标志TI置“1”。
(2)方式0接收
当串行口定义为方式0并置“1”REN后,便启动串行口以振荡率的十二分之一的波特率接收数据,RXD为数据输入端,TXD为同步移位信号输出端,当接收器接收到8位数据时,置“1”中断标志RI。
2.方式1
串行口定义为方式1时,传送一帧数据为10位,其中1位起始位(低电平)、8位数据位(先低位后高位)、1位停止位(高电平)。
方式1的波特率可变,波特率=2SMOD/32×
(T1的溢出率)。
(1)方式1发送
方式1发送时,数据由TXD端输出。
CPU执行一条写入发送数据缓冲器SBUF的指令(例如,MOVSBUF,A),数据字节写入SBUF后,便启动串行口发送器发送,当发送完数据后,中断标志TI置“1”。
(2)方式1接收
方式1接收时,数据从RXD端输入。
在REN置“1”后,就允许接收器接收。
接收器以波特率16倍的速率采样RXD端的电平。
当采样RXD引脚上“1”到“0”的跳变时启动接收器接收并复位内部的16分频计数器以便实现同步。
计数器的16个状态把一位的时间分成16等份,在每位时间的第7、8和9计数状态,位检测器采样RXD的值,接收的值是3次采样中取至少二次相同的值,以排除噪声干扰。
起始位接收到的值不是“0”,则起始位无效,复位接收电路。
在检测起始位有效时,则移入输入移位寄存器,开始接收本帧其余数据信息。
当RI=0;
同时接收到停止位“1”(或SM2=0)时,停止位进入RB8,置“1”中断标志RI。
若以上二个条件任一条件不满足,所有接收信息将丢失,因此中断标志RI必须在中断服务程序中由用户清“0”。
通常串行口以方式1工作时,SM2置为“0”。
3.方式2
串行口定义为方式2时,串行口被定义为9位异步通信接口。
传送一帧信息为11位,其中1位起始位、8位数据位(先低位后高位)、1位附加的可程控为“1”或“0”的第9位数据位、1位停止位。
方式2的波特率是固定的,波特率为2SMOD/64×
fosc。
(1)方式2发送
在方式2发送时,数据由TXD端输出。
附加的第9位数据是SCON中的TB8,可作多机通信中的地址、数据标志,也可作数据的奇偶校验位。
CPU执行一条写入发送缓冲器指令(例如MOVSBUF,A),就启动发送器发送,发送完一帧信息,置“1”TI中断标志。
(2)方式2接收
在方式2接收时,数据由RXD端输入,REN被置“1”以后,接收器开始以波特率16倍的速率采样RXD电平,检测到RXD端由高到低的负跳变时,启动接收器接收,复位内部16位分频计数器,以实现同步。
计数器的16个状态把一位时间分成16等份,在每位时间的第7、8、9个状态,位检测采样RXD的值,若接收到的值不是“0”,则起始位无效并复位接收
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 MCS51单片机内部接口 MCS51 单片机 内部 接口
![提示](https://static.bdocx.com/images/bang_tan.gif)