第5章中断系统与定时计数器.docx

上传人:b****4 文档编号:3733993 上传时间:2022-11-25 格式:DOCX 页数:24 大小:147.42KB
下载 相关 举报
第5章中断系统与定时计数器.docx_第1页
第1页 / 共24页
第5章中断系统与定时计数器.docx_第2页
第2页 / 共24页
第5章中断系统与定时计数器.docx_第3页
第3页 / 共24页
第5章中断系统与定时计数器.docx_第4页
第4页 / 共24页
第5章中断系统与定时计数器.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

第5章中断系统与定时计数器.docx

《第5章中断系统与定时计数器.docx》由会员分享,可在线阅读,更多相关《第5章中断系统与定时计数器.docx(24页珍藏版)》请在冰豆网上搜索。

第5章中断系统与定时计数器.docx

第5章中断系统与定时计数器

第五章中断系统与定时/计数器

MCS-51单片机已经包含CPU、ROM、RAM、以及I/O端口等基本资源,此外,它还内含有中断逻辑、定时/计数器以及串行通信接口等功能部件,这就使得MCS—51单片机可以满足复杂的应用需要。

本章主要介绍MCS—51单片机的中断系统以及定时/计数器的原理与应用。

5.1MCS-51单片机中断系统

5.1.1基本概念

1.什么是中断

当中央处理器CPU正在处理某件事情的时候,外部发生了某一更为重要或更为紧迫的事件,需要CPU暂时停下正在执行的工作去处理这一突发事件,之后再继续执行以前被暂停下来的工作,这个过程就叫中断。

例如,一个锅炉计算机控制系统,CPU正在执行炉温检测并显示程序,如果这时突然断水,这意味着必须立即停下现行的炉温检测显示程序,转而去执行更为紧迫的故障处理程序。

以上情况说明利用中断可以处理一些突发的紧迫事件,此外,我们也可以利用中断去提高程序的执行效率。

例如,在CPU与慢速外部设备的信息交换过程中,如果CPU完全采用查询方式等待诸如打印机这类低速设备,那么整个计算机系统将陷于严重的低效率运行状态。

对于一些诸如计算机自动检测与控制等对实时性要求比较高的应用系统,这种低效率的运行模式可能会造成系统失控,必须采用中断模式及时响应处理实时信息。

2.中断工作方式的优点

CPU中能够控制实现这种中断响应的逻辑机构称为中断系统。

中断有以下优点:

◆实现与低速设备的同步。

计算机有了中断功能后,就可以使CPU和外设同步工作,CPU启动外设工作后,就继续执行主程序,而外没把数据准备好后,发出中断请求,请求CPU中断原程序的执行,转去执行输入/输出处理程序,中断程序执行完后,CPU恢复执行主程序,外设也继续工作,这样CPU就可指挥多个外设同时工作,大大提高了CPU的利用率,也提高了输入/输出速度;

◆提高实时处理系统的即时性。

在实时控制系统中,现场信息是随机发生的,需要CPU及时捕获处理,中断方式可以很好实现这种即时性数据处理任务;

◆实现故障处理,避免系统灾难。

计算机在运行过程中可能出现事先预料不到的紧急情况或故障,如掉电、存储出错、计算溢出、死循环、PC指针跑飞等,对于各人计算机而言,简单的办法是关机复位,重新开机启动。

然而,对于实时控制系统或如银行POS终端这样重要系统而言,这种简单的重启方式将丢掉重要数据,甚至引起灾难性后果。

对于重要系统的故障,必须采用中断处理程序进行完善的故障处理。

3.中断响应与子程序调用的区别

所谓中断响应就是停下正在执行的程序转而去执行另一个程序。

显然,中断响应的过程与子程序调用有相似的地方,但是,它们之间有着本质的区别。

子程序调用是程序设计者的主动行为,完全是计划内的任务,它是为主程序服务的,我们知道何时去调用子程序,也就是说,子程序的断点是已知的。

但是,对于中断我们却不知道应该具体什么时候去执行中断响应程序,中断的断点是未知的,中断的发生也是随机的,也许有些中断永远都不会发生。

5.1.2MCS—51单片机中断系统

1.MCS—51单片机的中断源

MCS—51单片机共包含有5个中断源,2个中断优先级,每个中断源均可程序设定为高或低优先级。

MCS—51单片机的中断系统由中断允许寄存器IE、中断优先权寄存器IP、中断入口电路、优先查询逻辑电路、中断矢量发生电路等组成,逻辑结构如图5-1-1所示。

图5-1-1MCS-51中断系统逻辑结构

(1)外部中断源

2个外部中断源INT0(P3.2)和INT1(P3.3)均可定义为电平(低电平)触发方式输入或边沿(下降沿)触发方式。

外部中断申请信号经电平/边沿选择逻辑后送触发器IE0或IE1保存,等待CPU响应中断。

(2)3个内部中断源

MCS—51单片机内部有2个定时/计数器CT0、CT1和1个串行通信接口UART,这3个内部功能单元都可以定义为允许中断方式。

当定时/计数器CT0或CT1溢出时,溢出标志触发器TF0(TCN.5)或TF1(TCN.7)有效,如果这时的中断允许是开通的,则可以向CPU申请中断,进行相关处理。

串行通信接口UART可以同时发送和接收数据,发送或接收数据完毕时,置位发送结束标志触发器TI(SCON.1)或接收结束标志触发器RI(SCON.0),同样,如果这时的相关中断允许是开通的,就可以向CPU申请中断。

INT0、INT1的中断触发标志IE0、IE1以及CT0、CT1的溢出标志触发器TF0、TF1位于特殊功能寄存器TCON中,UART的发送和接收结束标志触发器TI、RI位于特殊功能寄存器SCON中。

如下所示

TCON:

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

SCON:

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

TCON称为定时/计数器状态寄存器,字节地址为88H,SCON称为串行口控制寄存器,字节地址为88H,以后的章节中将会作具体介绍。

如图5-1-1所示,内部中断触发标志TF0、TF1、TI或RI与外部中断触发标志IE0、IE1一起送中断排队逻辑,经过中断允许控制、中断优先级控制以及中断入口地址矢量控制等电路,等待CPU响应处理。

需要说明的是,52系列单片机比51系列单片机多1个定时/计数器2的内部中断源。

另外,一些变形的兼容51系列单片机可能还有一些其它独特的中断源,例如Philips公司的P87LPC76X单片机还提供有键盘中断。

2.MCS—51单片机的中断控制

MCS—51单片机内部有4个特殊功能寄存器与中断控制相关,它们分别是中断允许寄存器IE、中断优先权寄存器IP、定时/计数器状态寄存器TCON(用6位)和串行口状态寄存器SCON(用2位)。

(1)中断允许控制IE

MCS—51单片机的5个中断源都可以通过程序开通或关断。

实现中断开关控制的控制寄存器叫中断允许寄存器IE,字节地址为A8H。

如下所示

EA

X

ET2

ES

ET1

EX1

ET0

EX0

INT0允许位,0-禁止,1-允许

CT0允许位,0-禁止,1-允许

INT1允许位,0-禁止,1-允许

CT1允许位,0-禁止,1-允许

UART允许位,0-禁止,1-允许

(CT2允许位,0-禁止,1-允许)

无效位

系统总允许位,0-禁止,1-允许

EA为系统中断总允许位。

EA=0,禁止向CPU申请中断,系统中断全部关闭;EA=1,则系统中断开通,允许各中断源申请中断。

ES、ET1、EX1、ET0、EX0则分别是串行口UART、定时/计数器CT1、外部中断INT1、定时/计数器CT0、外部中断INT0的允许控制位,0—禁止,1—允许。

(2)中断优先级控制IP

MCS—51单片机有2个中断优先级,低优先级的中断可以被高优先级的中断所中断,反之不然。

同级中断相互间不能打断。

这就是说,可实现二级中断嵌套。

一个正在执行的低优先级中断能被高优先级中断所中断,但不能被另一个低优先级中断所中断,一直执行到遇到中断返回指令RETI后,返回主程序。

返回主程序后再执行一条指令才能响应新的中断请求,这一特性常被用来实现程序调试时的单步执行工作方式。

MCS—51单片机内部中断系统有两个不可寻址的“优先级有效”触发器。

其中一个指示某高优先级的中断正在执行,所有后来申请的中断都被阻止。

另一个触发器指示某低优先级的中断正在执行,所有的同级中断都被阻止,但不阻止高优先级的中断。

MCS—51单片机内有一个优先级控制寄存器IP,字节地址为B8H,只要用程序改变其内容,就可对各中断源的中断级别进行设置。

其格式如下:

X

X

PT2

PS

PT1

PX1

PT0

PX0

INT0,0-低优先级,1-高优先级

CT0,0-低优先级,1-高优先级

INT1,0-低优先级,1-高优先级

CT1,0-低优先级,1-高优先级

UART,0-低优先级,1-高优先级

(ET2,0-低优先级,1-高优先级)

无效位

无效位

优先级控制寄存器IP的低5位IP.4~IP.0分别代表了5个中断源的优先级别,0—低优先级,1—高优先级。

IP.5用于52系列单片机的定时/计数器CT2。

如果同时收到中断请求时,CPU首先响应高优先级中断源。

若同时收到的中断请求为同级别时,哪一个先得到服务,取决于中断系统内部的查询顺序。

这相当于在每个优先级内,还同时存在另一个辅助优先级结构。

系统开机默认的中断优先级为同级别,但是,尽管同级,也有一个默认的优先查询顺序:

中断源同级中断的优先顺序

外部中断0(INT0)高

定时/计数器0(CT0)

外部中断1(INT1)

定时/计数器1(CT1)

串行口(UART)

定时/计数器2(CT2)低

(3)外部中断的电平/边沿选择

外部中断INT0和INT1可以由程序设置为低电平触发或边沿触发方式,其控制位在TCON中,通过对定时/计数器状态寄存器TCON中IT0、IT1位的设置,可以实现对外部外部中断触发方式的选择。

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

定时器/计数器状态中断状态

IT0、IT1分别为外部中断INT0、INT1的类型控制位,靠编程人员软件置位或清除。

置1时,外部中断为下降沿触发方式;清0时,外部中断为低电平触发方式。

若外部中断定义为电平触发方式,则外部中断请求触发器的状态随着CPU在每个机器周期采样到的外部中断输入线的电平的变化而变比。

外部中断设置为电平触发方式时,外部中断输入必须保持低电平,直到CPU响应该中断为止。

同时,在中断服务程序返回之前,外部中断输入必须为高电平,否则CPU返回后会再一次响应中断。

若定义为外部中断边沿触发方式,外部中断请求触发器能锁存外部中断输入线上的负跳变,即使CPU暂时不能响应,中断请求标志也不会丢失。

在这种方式里,如果相继连续两次采样,一个周期采样到外部中断输入为高电平,下一个周期采样列低电平,则置位中断请求触发器,直至CPU响应此中断时才清零。

这样不会丢失中断,但输入请求脉冲宽度至少保侍12个时钟周期才能被CPU采样到。

(4)中断的状态控制

TCON中的TF0和TF1是CT0和CT1的溢出标志位。

当CTi计数溢出(由全1再加1变为全0,则溢出)后使TFi置1,并申请中断。

系统响应中断服务后自动将该标志清0。

TCON中的IE0和IE1是外部中断INT0和INT1的请求标志位。

系统自动监控INTi引脚的电平或边沿,当出现低电平或下降沿时,系统自动使IEi置位,向系统申请中断,系统响应中断服务后自动将该标志清0。

3.中断响应

(1)中断响应条件

单片机响应中断的条件是:

◆中断源有请求

◆CPU允许中断,即EA=1;

◆中断源允许中断,即中断允许寄存器IE相应位置1。

在每个机器周期内,单片机对所有中断源都进行顺序检测,并可在任一个周期的S6状态期间,找到所有有效的中断请求,并对其进行优先级排队,只要满足下列条件:

◆无同级或高级中断正在服务;

◆现行指令执行到最后一个机器周期且已结束;

◆若现行指令为RETI或是访问特殊寄存器IE或IP的指令时,则需执行完该指令以及紧随其后的另一条指令。

以上条件满足后,单片机便在紧接着的下一个机器周期S1状态期间响应中断,否则将丢弃该中断查询的结果。

(2)中断响应入口

MCS—51单片机程序存储器中有7个地址单元留作特殊用途,分别用作复位和6个中断源的入口。

如表2-3-1所示,其中0003H、000BH、0013H、001BH、0023H、002BH分别是INT0、CT0、INT1、CT1、UART、CT2的中断的入口地址。

图5-1-1所示中断逻辑系统中有专门的中断入口矢量地址发生电路,当某中断源被CPU响应时,该电路负责将对应的中断源的中断入口地址提供给CPU的程序指针PC。

(3)中断响应时间

CPU不是在任何情况下都对中断请求立即响应,而且不同情况对中断响应的时间也不同,下面以外部中断为例,说明中断响应时间。

外部中断请求信号的电平在每个机器周期的S5P2期间,经反相后锁存到IE0或IE1标志位,CPU在下一个机器周期才会查询到这些值。

如果满足响应条件,CPU响应中断时,需执行一条两个机器周期的调用指令,以转到相应的中断服务入口。

这样,从外部中断请求有效到开始执行中断服务程序的第一条指令,至少需3个机器周期。

如果在申请中断时,CPU正在执行乘、除法指令,则至少需6个机器周期。

如果在申请中断时,CPU正在执行RETI或访问IE、IP指令,则至少需8个机器周期。

由以上的分析可见,系统中只有一个中断源时,响应时间为3~8个机器周期。

若还有其它中断源,则响应时间由其优先级别以及具体应用程序执行情况而定。

(4)中断响应过程

单片机一旦响应中断,首先置位相应低或高优先级有效触发器,然后执行一个硬件子程序调用,把断点地址(即现行程序指针PC的值)压入堆栈保护,然后将对应的中断入口地址装入程序计数器PC,使程序转向该中断入口地址,执行中断服务程序。

需要说明的是,单片机响应中断后,只保护断点而不保护现场。

保护断点PC的工作是硬件自动完成的,而对累加器A、程序状态字PSW、数据指针DPTR、乘法寄存器B、通用寄存器Rn等的现场保护则必须有软件在中断服务程序中完成。

(5)中断响应的返回

中断服务程序执行到RETI指令,则中断自动将堆栈中断点恢复到PC中,实现返回。

断点的恢复是硬件自动实现的,而现场的恢复则同样由软件完成。

这一点与子程序调用的过程相同。

4.中断请求的撤除

单片机响应中断后,定时/计数器中断申请标志TF0和TF1以及外部中断申请标志IE0和IE1是硬件自动清除的。

但是,串行口中断申请标志TI和RI则不能由硬件自动清除,这一点需要在应用程序设计中予以注意,需采用软件清除TI和RI标志。

 

图5-1-2外部中断撤除电路

另外,尽管系统硬件可以自动撤除外部中断申请标志IE0和IE1,但是,硬件无法清除外部中断INT0和INT1申请源信号。

因此,对于电平方式的外部中断,仍然存在对外部中断的重复响应的可能。

用户在编制中断服务程序时,一方面可以通过软件控制外部中断申请源复位,另一方面也应该采用诸如单稳态触发等方法对中断源进行预处理。

图5-1-2为一个典型的外部中断撤除电路,外部中断源使D触发器锁存0信号,申请中断,中断响应后,软件控制从P1.0口输出低电平0使D触发器置1,撤除外部中断申请。

5.1.3中断系统应用

例5-1-1:

在MCS—5l单片机的外部中断/INT0引脚上输入一个正脉冲实现单步执行方式,其硬件逻辑电路如图5-1-3所示。

图中/INT0引脚平时为低电平,每当用户按一次单步执行键时,单脉冲电路就输出一个正脉冲加到/INT0引脚上。

因此在没有按键时,CPU总是处于响应中断的状态。

利用/INT0实现单步运行控制的过程为:

首先进行初始化操作,设定外部中断/INT0为电平触发方式,高优先级中断,开/INT0中断。

由于外部中断/INT0引脚输入低电平,CPU在执行一条用户主程序指令后,立即响应中断,进入中断服务服务程序。

初始化程序为:

CLRIT0;设INT0为电平中断方式

SETBPX0;设INT0为高优先级

SETBEX0;开INT0中断

SETBEA;开系统中断

中断服务程序为:

ORG0003H

LJMPINT0-SUB;中断入口

INT0-SUB:

…;显示调试数据

LOOP1:

JNBP3.2,LOOP1;等待INT0引脚为高电平

LOOP2:

JBP3.2,LOOP2;等待INT0引脚为低电平

RETI

中断服务程序的主要任务是显示系统主要工作状态,例如,显示A、B、PSW、DPTR、SP、R0~R7等,这由程序设计决定。

显示完毕后,中断服务程序等待单步调试按键是否动作,直到有新的按键动作才退出服务。

中断服务程序执行完RETI指令后,至少要再执行一条指令才能响应新的中断请求,这就意味着每次按键CPU执行了一条用户程序指令。

重复以上过程,这样便实现单步执行用户程序指令的过程。

 

图5-1-3单步执行硬件逻辑电路

5.2MCS-51单片机的定时计数器

5.2.1基本结构与功能

1.基本组成

MCS—51单片机拥有两个相互独立的16位可编程定时/计数器CT0、CT1。

每个定时/计数器均可编程工作为定时或计数两种工作方式,并可编程工作于模式0、模式1、模式2、模式3四种工作模式。

定时/计数器基本结构如图5-2-1所示。

图5-2-1定时/计数器工作寄存器结构

与定时/计数器相关的寄存器包括:

◆CT0的时间常数寄存器TH0、TL0;

◆CT1的时间常数寄存器TH1、TL1;

◆工作模式控制寄存器TMOD;

◆工作状态寄存器TCON。

这些工作寄存器均位于MCS-51内部SFR存储体中。

其中,THi、TLi分别用于存放CTi的高8位、低8位时间常数。

TMOD又称为定时/计数器方式控制字,用于对两个定时/计数器CTi工作方式的控制。

TCON又称为定时/计数器状态控制字,反映了两个定时/计数器CTi的工作状态。

2.基本结构与功能

图5-2-2为定时/计数器CTi的内部结构。

由图可见,CTi的主体是一个加法计数器,通过相关控制位的操作,可对模拟开关进行切换,从而控制CTi实现以下不同功能:

◆计数器:

对引脚Ti上的脉冲数进行计数;

◆定时器:

以系统时钟Φ的1/12分频时序脉冲作为计数脉冲,计数器进行加法计数,也可将外部基准脉冲源通过Ti接入到计数器,从而实现更长时间定时。

外接基准信号源的最小频率不得小于1/12系统时钟;

◆脉宽测量:

可检测/INTi引脚的高电平宽度。

图5-2-2定时/计数器逻辑结构

5.2.2定时/计数器的方式控制与状态控制

MCS—51单片机内部的定时器/计数器是一种可编程的部件,在其工作之前必须将控制字写入方式寄存器TMOD和状态控制寄存器TCON,以确定其工作方式,即需要对定时器/计数器进行初始化。

1.方式控制(模式控制)

MCS—51内部RAM空间高128字节为SFR寄存器块,其中就包括定时器/计数器模式控制寄存器TMOD,其RAM地址为89H。

TMOD的定义如下:

GATE:

门控位。

GATE=1时,/INTi引脚=1并且TRi=1,则CTi工作;若GATE=0,则只要TRi=1,CTi就工作,而不管INTi引脚是否为高电平。

C/T:

定时/计数方式选择位。

C/T=0时,CTi工作于定时方式,即对系统时钟Φ的1/12分频时序脉冲进行计数,由于是对固定周期的脉冲进行计数,从而可以实现定时功能;C/T=1时,CTi工作于计数方式,对从Ti管脚接入的外部脉冲信号进行计数。

显然,从Ti管脚接入的外部脉冲信号可以是单脉冲也可以是连续脉冲,这时CTi实现的就是对外部脉冲事件的计数。

如果从Ti管脚接入的外部脉冲信号周期固定且是已知的,则也同样可以间接地实现定时功能。

M1、M0:

模式控制位。

用于设定CTi工作于模式0、模式1、模式2以及模式3等4种模式之一。

TMOD的高4位用于控制CT1,低4位用于控制CT0。

2.状态控制

定时/计数器的状态控制字TCON的字节地址为88H,其低4位用于中断控制,而高4位则反映了2个定时/计数器CT1和CT0的工作状态。

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

定时器/计数器状态中断状态

TFi:

溢出标志位。

计数器CTi溢出(由全1再加1变为全0时,则溢出)后使TFi=1,并申请中断。

系统响应中断服务后自动清除该标志。

TRi:

定时/计数启动控制位。

TRi由编程人员软件置1或清0,置1时,CTi启动工作;清0时,CTi停止工作。

由图5-2-2可见,CTi是否工作还还取决于GATE和INTi的状态,因此,严格意义上来说,TRi还不能称为真正的启动位,因此,通常我们称TRi为允许工作控制位。

TMOD、SCON在系统复位时均自动清0。

对定时器/计数器进行初始化的过程就是对TMOD、SCON中相关位的设置过程,可以应用赋值指令(MOV类、逻辑类)对其进行设置,以实现对定时器/计数器工作方式的设置。

例如,以下两条指令均可将TMOD.6位置1。

需要注意的是,TMOD的位不能位寻址,编程时需要注意。

MOVTMOD,#40H

ORLTMOD,#40H

3.定时/计数器的4种工作模式

MCS—51单片机的2个16位的定时器/计数器具有定时和计数两种功能,每种功能包括4种工作方式,除了工作方式3以外,其他3种工作方式的基本原理都是一样的。

用户通过指令把方式字写入TMOD中来选择定时器/计数器的功能和工作方式,通过把计数的初始值写入THi和TLi中来控制计数长度,通过对TCON个相应位进行置1或0,来实现启动定时器工作或停止计数。

用户还可以读出THi、TLi、TCON中的内容来查询定时/计数器的工作状态。

定时器/计数器的工作模式控制由模式控制字TMOD中的M1、M0位来实现,如表5-2-1所示。

各种工作模式的结构原理如图5-2-3所示。

表5-2-1:

定时/计数器的4种工作模式

M1

M0

方式

说明

0

0

0

13位定时/计数器。

工作寄存器的低字节TLi的高3位无效。

最大计数值为213=8192。

0

1

1

16位定时/计数器。

最大计数值为216=65536。

1

0

2

8位可自动重装载的定时/计数器。

TLi溢出后,一方面使TFi为1申请中断,另一方面,将THi中的数据自动装载到TLi中,重新开始定时/计数,重装载后THi中的数据不变。

模式2主要应用于UART的波特率控制。

1

1

3

对于定时/计数器1而言,模式3相当于使TRi=0,即停止计数,保持原有计数值不变。

对于定时/计数器0而言,模式3将定时/计数器0分解为2个独立的8位定时/计数器。

模式3较少使用。

图5-2-3定时/计数器的4种工作方式

(1)模式0——13位定时/计数器

M1M0=00时,CTi工作于13位定时/计数器模式。

工作寄存器的低字节TLi的高3位无效。

TLi的低5位计数满后向高8位THi进位,THi的8位计数满后置位TCON中的TFi位,产生溢出标志信号。

模式0最大计数值为213=8192。

以Φ=12MHZ为例,最大定时时间8192μs,约8ms。

(2)模式1——16位定时/计数器

M1M0=01时,CTi工作于16位定时/计数器模式。

TLi计数满后向THi进位,T

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

当前位置:首页 > 求职职场 > 简历

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

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