中断系统与定时计数器各个位的定义.docx
- 文档编号:14699161
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:31
- 大小:86.61KB
中断系统与定时计数器各个位的定义.docx
《中断系统与定时计数器各个位的定义.docx》由会员分享,可在线阅读,更多相关《中断系统与定时计数器各个位的定义.docx(31页珍藏版)》请在冰点文库上搜索。
中断系统与定时计数器各个位的定义
第5章中断系统与定时/计数器
本章概要及学习目标
本章介绍单片机中断系统的概念及89C51三种中断类型的工作方式;介绍定时/计数器的结构、类型及控制方式。
并通过实训介绍中断技术、定时/计数器的具体应用及中断服务子程序的基本编程方法。
通过对本章的学习,读者应掌握和了解以下知:
1.89C51中断系统的概念及中断系统的功能
2.特殊功能寄存器TCON、SCON、IE、IP、TH、TL和TMOD各控制位的功能及设
置方法
3.定时/计数器的结构、两种工作方式、四种工作模式及应用
4.中断服务子程序的结构及基本编程方法
5.MCS-51单片机外部中断源的扩展方法
5.1中断系统
中断系统是计算机的重要组成部分。
实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。
中断系统的应用大大提高了计算机的工作效率。
中断技术的应用使计算机的功能更强,效率更高。
5.1.1中断的概念
1.中断技术
中断是指CPU正在执行程序的过程中,CPU以外发生的某一事件(如芯片引脚一个电平的变化、一个脉冲沿的发生或定时/计数器的溢出等)向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。
这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。
例5.1中,50ms定时时间到则发生定时器0溢出,向CPU提出中断请求,CPU响应中断请求,就暂时终止当前执行的程序,转去执行相应的处理程序ISSR(InterruptServiceSubroutine)。
“中断”之后所执行的相应的处理程序通常称之为中断服务或中断处理子程序,原来正常运行的程序称为主程序。
主程序被断开的位置(或地址)称为“断点”。
引起中断的原因或能发出中断申请的来源,称为“中断源”。
中断源要求服务的请求称为“中断请求”(或中断申请)。
例5.1中的中断服务子程序是ISSR程序,主程序中的断点(读者自行查找),中断源是定时器0,在50ms定时时间到后由硬件置位TCON寄存器中的TF0位,然后自动向CPU发出中断请求。
调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序在程序中是事先安排好的,而何时调用中断服务程序事先无法确定,因为“中断”的发生是由外部因素随机决定的,程序中无法事先安排调用指令,因此,调用中断服务程序的过程是由硬件自动完成的。
对这个中断全过程的分析,研究及实现方法称为中断技术。
2.中断技术的应用
采用中断技术能实现以下的功能:
(1)并行处理有了中断技术,就解决了快速的CPU与慢速外设之间的速度匹配问题,CPU可以与多台外设并行工作,CPU可分时与多台外设进行信息交换。
CPU在启动外设后,便继续执行主程序;而外设被启动后,开始进行准备工作。
当外设准备就绪时,就向CPU发出中断请求,CPU响应该中断请求并为其服务完毕后,返回到原来的断点处继续执行主程序。
外设在得到服务后,也继续进行自己的工作。
CPU和外设并行工作。
由于CPU与外设速度的悬殊差异,CPU可以使多个外设同时工作,并分时为多台外设提供服务。
(2)实时处理在单片机实时控制中,请求CPU提供服务是随机发生的。
有了中断系统,CPU就可以立即响应并进行相应的处理。
从而实现了实时处理。
(3)故障处理单片机系统工作时会出现一些突发故障,如电源断电、存储器出错、运算溢出等。
有了中断系统,当出现故障时,CPU可及时转去执行故障处理程序,自行处理故障而不必停机。
在单片机应用系统中,为了实现上述中断功能而配置的软件与硬件,便称为中断系统。
5.1.2中断系统的硬件结构和中断源
1.中断系统的硬件结构
中断过程是在硬件基础上再配以相应的软件而实现的,不同的计算机,其硬件结构和软件指令是不完全相同的,因此,中断系统也是不尽相同的。
89C51中断系统的结构示意图如图5.1.1所示。
图5.1.189C51中断系统的结构示意图
由图可知,89C51单片机有5个中断源,分别为外部中断0
、外部中断1
、
定时器0溢出中断请求TF0、定时器1溢出中断请求TF1和串行中断请求RI或TI,四个用于中断控制寄存器,分别为定时/计数器及外部中断控制寄存器TCON(用六位)、串行口控制寄存器SCON(用两位)、中断允许控制寄存器IE及中断优先级控制寄存器IP。
5个中断源有两个优先级,每个中断源可以由中断优先级控制寄存器IP编程设置为高优先级或低优先级中断,同级中断源的中断先后由顺序查询逻辑电路决定。
5个中断源分别对应5个固定的中断入口地址。
2.中断源
中断源是中断申请的来源。
89C51单片机的5个中断源见表5.1.1
表5.1.189C51单片机中断系统表
中断源
说明
外部中断0
从P3.2引脚引入的外部中断申请
定时器T0中断
定时器T0溢出发出中断申请
外部中断1
的是定时器从P3.3引脚引入的外部中断申请
定时器T1中断
定时器TI溢出发出中断申请
串行口中断
一次串行发送/接收完成后,发出中断申请
5.1.3中断控制
89C51通过对4个特殊功能寄存器TCON,SCON,IE和IP的设置来进行中断允许、中断申请方式和中断优先级的控制。
1.定时器/计数器及外部中断控制寄存器TCON
字节地址为88H,每位名称,位地址及含义分述如下:
TCON
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
TF1:
定时器/计数器T1的溢出中断请求标志位。
当启动T1计数后,T1从预先设置的初值开始加1计数。
当计数器最高位产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。
当CPU响应中断时,由硬件使TF1清零。
TF0:
定时器/计数器T0的溢出中断请求标志位,含义与TF1相同。
IE1:
外部中断1的中断请求标志。
当检测到外部中断引脚P3.3上存在有效的中断请求信号时,由硬件使IE1置1。
当CPU响应该中断请求时,由硬件使IE1清零。
IE0:
外部中断0的中断请求标志位。
其含义与IE1类同。
IT1:
外部中断1的中断触发方式控制位。
IT1为0时,外部中断1为电平触发方式,若外部中断1的引脚P3.3为低电平,则使IE1置1,请求中断。
IT1为1时,外部中断1为边沿触发方式,若CPU检测到外部中断1的引脚P3.3有由高到低的负跳边沿时,则使IE1置1,请求中断。
IT0:
外部中断0的中断触发方式控制位。
其含义与IT1类同。
TR1:
为1时启动定时器/计数器T1,为0时停止定时器/计数器T1。
TR0:
为1时启动定时器/计数器T0,为0时停止定时器/计数器T0。
2.串行口控制寄存器SCON
字节地址为98H,每位名称、位地址及含义如下:
SCON
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
位地址
9FH
9EH
9DH
9CH
9BH
9AH
99H
98H
只用了两位:
TI:
串行口发送中断请求标志。
当CPU发送完一串行数据后,此时SBUF寄存器为空,硬件使TI置1,请求中断。
CPU响应中断后,由软件对TI清零。
RI:
串行口接收中断请求标志。
当串行口接收完一帧串行数据时,此时SBUF寄存器为满,硬件使RI置1,请求中断。
CPU响应中断后,用软件对RI清零。
其他几位的含义及用法见串行通信一章。
3.中断允许控制寄存器IE。
字节地址为A8H,每位名称、位地址及含义如下:
IE
EA
/
/
ES
ET1
EX1
ET0
EX0
位地址
AFH
ACH
ABH
AAH
A9H
A8H
EA:
中断允许总控制位。
EA=0,禁止所有中断;EA=1,开放所有中断。
但是否允许各中断源的中断请求,还要取决于各中断源的中断允许控制位的状态。
ES:
串行口的中断允许位。
ET1:
定时器/计数器T1的中断允许位。
EX1:
外部中断1INT1的中断允许位。
ET0:
定时器/计数器T0的中断允许位。
EX0:
外部中断0INT0的中断允许位。
以上5个中断允许控制位为0时,禁止中断,为1时允许中断。
4.中断优先级控制寄存器IP。
89C51单片机设有两级中断优先级,通过对IP寄存器相应位的设置进行中断优先级的选择。
IP字节地址为B8H,各位含义分述如下:
IP
/
/
/
PS
PT1
PX1
PT0
PX0
位地址
BCH
BBH
BAH
B9H
B8H
PS:
串行口中断优先级控制位。
PT1:
定时器/计数器T1中断优先控制位。
PX1:
外部中断1优先级控制位。
PT0:
定时器/计数器T0中断控制位。
PX0:
外部中断0中断优先级控制位。
以上5个中断优先级控制位分别为“0”时,为低级中断,为“1”时为高级中断。
如果几个同一优先级的中断源同时向CPU申请中断,CPU通过内部顺序查询逻辑电路,按自然优先级顺序确定该响应哪个中断请求。
自然优先级由硬件形成,排列见表
中断源
中断入口地址
同级自然优先级
外部中断0
0003H
最高
定时器/计数器T0
000BH
外部中断1
0013H
定时器/计数器T1
001BH
串行口中断
0023H
最低
表
5.1.4中断响应
1.响应中断的条件
(1)有中断请求信号
(2)中断允许开放即EA=1,且中断源对应的中断允许位置位。
(3)无同级或更高级中断正在服务。
(4)当前的指令周期已经结束。
(5)如果当前指令为RETI或访问IE和IP的指令,至少需要再执行完一条指令。
当满足以上5个条件时CPU将对中断请求进行响应。
2.中断响应过程
如果中断响应条件满足,CPU就响应中断。
中断响应过程分为以下6个步骤:
a)保护断点断点就是CPU响应中断时程序计数器PC的内容,它指示被中断程序的下一条指令的地址——断点地址。
CPU自动把断点地址压入堆栈,以备中断处理完毕后,自动从堆栈取出断点地址送入PC,然后返回主程序断点处,继续执行被中断的程序。
b)给出中断入口地址程序计数器PC自动装入中断入口地址(见表5.2),执行相应的中断服务程序。
c)保护现场为了使中断处理不影响主程序的运行,需要把断点处有关寄存器的内容和标志位的状态压入堆栈区进行保护。
现场保护要在中断服务程序开始处通过编程实现。
d)中断服务执行相应的中断服务,进行必要的处理。
e)恢复现场在中断服务结束之后,返回主程序之前,把保存在堆栈区的现场数据从堆栈区中弹出,送回到原来的位置。
恢复现场也需要通过编程实现。
f)中断返回执行中断返回指令RETI,它将堆栈内容保存的断点地址弹给PC,程序则恢复到中断前的位置。
5.1.5中断的嵌套
MCS-51单片机有两个中断优先级。
当CPU正在执行中断服务程序,又有新的
断源发出中断申请时,CPU要进行分析判断,决定是否响应新的中断。
若是同级中断源申请中断,CPU将不予理睬;若是高级中断源申请中断,CPU将转去响应新的中断请求,待高级中断服务程序执行完毕,CPU再转回低级中断服务程序。
这就是中断的嵌套。
二级中断嵌套程序执行过程如图
图5.1.2中断嵌套流程图
5.1.6中断系统应用实例
例5-1:
试利用MCS-51内部定时器以中断的方式通过P1.0输出只有两个状态电平的占空比相等的系列方波,该方波的周期为50mS,用示波器查看。
①:
题意分析:
该题目是以定时中断来实现的。
程序上分为主程序和中断程序。
主程序负责中断的初始化,并加载第一个中断的定时,以保证系列方波的完整性,因题目简单,除此不再做其它事情;中断程序负责定时改变输出端口的状态,它能自动重载相应的定时值。
中断的执行过程所造成在时间上的影响只有几个μS,同样相对25mS的方波半周期影响极小,可以忽略不计。
②:
汇编语言源程序:
ORG0000H
SJMPMAIN;跳到主程序
ORG000BH;中断程序
ISSR:
CPLP1.0;改变输出端口
MOVTH0,#0A6H;重载25mS定
;时值图5.1.3例5-1流程图
MOVTL0,#00H
RETI;中断返回
MAIN:
MOVIE,#82H;开放中断总控位及定时器T0中断
MOVTMOD,#01H;设置定时器T0为模式1
MOVTH0,#0A6H;加载25mS定时值
MOVTL0,#00H
SETBTR0;启动定时器
SJMP$;主程序动态停止
END
5.289C51/80C51的定时/计数器
定时/计数器作为89C51的基本结构单元,主要完成以89C51为核心的测控系统中常常需要的定时或延时控制;当需要对外界事件进行计数时,就理所当然地由计数器来完成。
5.2.1定时/计数器的基本组成与操作方式
1.定时/计数器基本组成
89C51单片机内部有两个16位的可编程定时/计数器,称为定时器0(T0)和定时器1
(T1),可编程选择其作为定时器用或作为计数器用。
此外,工作方式、定时时间、计数值、
启动、中断请求等都可以由程序设定,其逻辑结构如图
由图可知,89C51定时/计数器由定时器0(T0)、定时器1(T1)、定时器工作方式寄存器TMOD和定时器控制寄存器TCON组成。
定时器0、定时器1是16位加法计数器,分别由两个8位专用寄存器组成:
定时器0
由TH0和TL0组成,定时器1由TH1和TL1组成。
TL0、TL1、TH0、TH1的访问地址依
次为8AH、8BH、8CH和8DH,每个寄存器均可单独访问。
定时器0或定时器1用作计数
器时,对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数,每输入一个脉冲,加法
计数器加1;其用作定时器时,对内部机器周期脉冲计数,由于机器周期是定值,故计数值
确定时,时间也随之确定。
TMOD、TCON与定时器0、定时器1间通过内部总线及逻辑电路连接,TMOD用于设
置定时器的工作方式,TCON用于控制定时器的启动与停止。
图5.2.189C51定时/计数器逻辑结构图
2.定时/计数器工作原理
当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周
期,计数器增1,直至计满溢出,发出中断请求信号。
定时器的定时时间与系统的振荡频率
及定时器初值紧密相关。
因MCS-51单片机的一个机器周期由12个振荡脉冲组成,所以,
计数频率
。
如果单片机系统用12MHZ晶振,则计数频率fc=1Mhz记数周期:
T=1μs,这是最短的定时周期,适当选择定时器的初值可获取各种定时时间。
当定时/计数器设置为计数工作方式时,计数器对来自输入引脚T0(P3.4)和T1(P3.5)
的外部脉冲信号计数,外部脉冲的下降沿将触发计数。
在每个机器周期的S5P2期间采样引脚输入电平,若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。
新的计数值是在检测到输入引脚电平发生1到0的负跳变后,于下一个机器周期的S3P1期间装入计数器中的,可见,检测一个由1到0的负跳变需要两个机器周期,所以,最高检测频率为振荡频率的1/24。
计数器对外部输入信号的占空比没有特别的限制。
但必须保证输入信号的高电平与低电平的持续时间在一个机器周期以上。
当设置了定时器的工作方式并启动定时器工作后,定时器就按被设定的工作方式独立
工作,不再占用CPU的操作时间,只有在计数器计满溢出时才可能中断CPU当前的操作。
3.定时/计数器的方式寄存器和控制寄存器
定时/计数器的方式寄存器TMOD和控制寄存器TCON用来设定定时/计数器T0、T1
的工作方式和工作状态。
l)定时/计数器方式寄存器TMOD
TMOD为定时器0、定时器1的工作方式寄存器,其格式如下:
GATA
M1
M0
GATA
M1
M0
用于设置T1
用于设置T0
TMOD的低4位为定时器0的方式字段,高4位为定时器1的方式字段,它们的含义完全相同。
(1)M1和M0:
工作方式控制位。
定义如表5.2.1所示(其中i=0,1)。
M1
M0
工作方式
功能
0
0
方式0
TLi的低5位与THi的8位构成13位计数器
0
1
方式1
TLi和THi构成16位计数器
1
0
方式2
自动重装8位计数器,TLi溢出,THi内容自动送入TLi
1
1
方式3
定时器T0分成两个8位计数器,T1停止工作
表5.2.1定时器工作方式控制位
(2)C/T:
功能选择位。
C/T=0时,设置为定时器工作方式;C/T=1时,设置为计
数器工作方式。
(3)GATE:
门控位。
当GATE=0时,软件控制位TR0或TR1置1即可启动定时器;
TR0或TR1置0即可停止定时器工作;当GATE=1时,软件控制位TR0或TR1需置1,同时还需
(P3.2)或
(P3.3)为高电平方可启动定时器,即允许外部中断
、
启动定时器。
TMOD不能位寻址,只能用字节指令设置高4位定义定时器1上的工作方式或低4位定义定时器0的工作方式。
复位时,TMOD所有位均置0。
2)定时/计数器控制寄存器TCON
TCON的作用是控制定时器的启动、停止,标志定时器的溢出和中断情况。
定时器控
制字TCON的格式如下:
TCON(88H)8FH8EH8DH8CH8BH8AH89H88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
各位含义如下:
(l)TFl:
定时器1溢出标志位。
当定时器1计满数产生溢出时,由硬件自动置TF1=1,向CPU发出定时器1的中断请求,在中断允许时,响应。
进入中断服务程序后,由硬件自动清0。
在中断屏蔽时,TF1可作查询测试用,此时只能由软件清0。
(2)TR1:
定时器1运行控制位。
由软件置1或清0来启动或关闭定时器1。
当GATE=l,且
为高电平时,TRI置1启动定时器l;当GATE=0时,TR1置1即可
启动定时器1。
(3)TF0:
定时器0溢出标志位。
其功能及操作情况同TF1。
(4)TR0:
定时器0运行控制位。
其功能及操作情况同TR1。
(5)IE1:
外部中断1(
)请求标志位。
(6)IT1:
外部中断1触发方式选择位。
(7)IE0:
外部中断0(
)请求标志位。
(8)IT0:
外部中断0触发方式选择位。
TCON中的低4位用于控制外部中断,与定时/计数器无关,在上一节中已介绍。
当系
统复位时,TCON的所有位均清0。
TCON的字节地址为88H,可以位寻址,清溢出标志位或启动定时器都可以用位操作
指令。
如SETBTR1、JBCTF1,LP2等。
3)定时/计数器的初始化
由于定时/计数器的功能是由软件编程确定的,所以,一般在使用定时/计数器前都要对其进行初始化。
初始化步骤如下:
(1)确定工作方式——对TMOD赋值。
如赋值语句:
MOVTMOD,#10H,表明定时器1工作在方式1,且工作在定时器方式。
(2)预置定时或计数的初值——直接将初值写入TH0、TL0或TH1、TL1。
定时/计数器的初值因工作方式的不同而不同。
设最大计数值为M,则各种工作方式下的M值如下:
方式0:
M=213=8192
方式1:
M=216=65536
方式2:
M=28=256
方式3:
定时器0分成两个8位计数器,所以两个定时器的M值均为256。
因定时/计数器工作的实质是做“加1”计数,所以,当最大计数值M值已知时,初值X可计算如下:
X=M-计数值
例如:
定时器1采用方式1定时,M=65536,要求每50ms溢出一次,如采用12MHZ晶振,则计数周期T=1μs,计数值(50×1000)/=50000,所以,计数初值为
X=65536-50000=15536=3CB0H
将3CH、B0H分别预置给TH1、TL1。
(3)根据需要开启定时/计数器中断——直接对IE寄存器赋值。
MOVIE,#88H开启定时/计数器1中断,关闭其它中断源。
(4)启动定时/记数器工作——将TR1置“1”。
GATE=0时直接由软件置位启动:
GATE=1时,除了软件置位外,还必须在外中断引脚加上相应的电平值才能启动。
到此为止,定时/计数器的初始化过程已完毕,读者可以通过第三节的实训熟悉应用。
5.2.2定时/计数器的工作方式
由前述内容可知,通过对TMOD寄存器中M0、M1位进行设置,可选择4种工作方式,下面逐一进行介绍。
1.方式0
方式0构成一个13位定时/计数器。
图5.2.2是定时器0在方式0时的逻辑电路结构,定时器1的结构和操作与定时器0完全相同。
图5.2.2定时器0(或定时器1)在方式0时的逻辑电路结构图
由图可知:
可编程的16位加法计数器(TH0,TL0)只用了13位。
其中TH0占高8位,TL0占低5位(只用低5位,高3位未用)。
当TL0低5位溢出时自动向TH0进位,而TH0溢出时向中断标志位TF0进位(硬件自动置位),并申请中断。
当C/T=0时,多路开关连接12分频器输出,定时器0对机器周期计数,此时,定时器
0为定时工作方式。
其定时时间为:
(213-定时器0初值)×时钟周期(12/fosc)
其中213=8192,fosc为晶振频率。
若设fosc=12Mhz,则延时范围:
1~8192μs
当C/T=1时,多路开关与T0(P3.4)相连,外部计数脉冲由T0脚输入,当外部信号电平发生由1到0的负跳变时,计数器加1,此时,定时器0为计数工作方式。
当GATA=0时,
信号无效。
或门常输出1,打开与门,TR0直接控制定时器0的启动和关闭。
TR0=l,启动定时器0,定时器0从初值开始计数直至溢出。
溢出时,16位加法计数器为0,计数(定时)完成,TF0置位,并申请中断。
如要循环计数,则定时器0需重置初值;如采用查询方式,则需用软件将TF0复位。
TR0=0,则与门被封锁,控制开关被关断,停止计数。
当GATE=l时,与门的输出由
的输入电平和TR0位的状态来共同确定。
若TR0=l则与门打开,外部信号电平通过
(P3.4)引脚直接开启或关断定时器0,当
为高电平时,允许计数,否则停止计数;若TR0=0,则与门被封锁,控制开关被关断,停止计数。
2.方式1
定时器工作于方式1时,其逻辑结构图如图5.2.3所示。
图5.2.3定时器0(或定时器1)在方式1时的逻辑电路结构图
由图可知,方式1构成一个16位定时计数器,其结构与操作几乎完全与方式0相同,
唯一差别是二者计数位数不同。
作定时器用时其定时时间为:
(216-定时器0初值)×时钟周期(12/fosc)
其中216=65536,fosc为晶振频率。
若设fosc=12MHz
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中断 系统 定时 计数器 各个 定义