第4章 MCS51单片机内部接口Word下载.docx

上传人:b****3 文档编号:16714935 上传时间:2022-11-25 格式:DOCX 页数:43 大小:210.38KB
下载 相关 举报
第4章 MCS51单片机内部接口Word下载.docx_第1页
第1页 / 共43页
第4章 MCS51单片机内部接口Word下载.docx_第2页
第2页 / 共43页
第4章 MCS51单片机内部接口Word下载.docx_第3页
第3页 / 共43页
第4章 MCS51单片机内部接口Word下载.docx_第4页
第4页 / 共43页
第4章 MCS51单片机内部接口Word下载.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

第4章 MCS51单片机内部接口Word下载.docx

《第4章 MCS51单片机内部接口Word下载.docx》由会员分享,可在线阅读,更多相关《第4章 MCS51单片机内部接口Word下载.docx(43页珍藏版)》请在冰豆网上搜索。

第4章 MCS51单片机内部接口Word下载.docx

当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”,则起始位无效并复位接收

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1