学习单片机中断系统_第1页
学习单片机中断系统_第2页
学习单片机中断系统_第3页
学习单片机中断系统_第4页
学习单片机中断系统_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.3MCS-51单片机的中断系统5.3.1中断的概念计算机暂时中止正在执行的主程序,转去执行中断服务程序,并在中断服务程序执行完了之后能自动回到原主程序处继续执行,这个过程叫做“中断”。中断需要解决两个主要问题:一是如何从主程序转到中断服务程序;二是如何从中断服务程序返回主程序。

大体说来,采用中断系统改善了计算机的性能,主要表现在以下几个方面:

(1)有效地解决了快速CPU与慢速外设之间的矛盾,可使CPU与外设并行工作,大大提高了工作效率。

(2)可以及时处理控制系统中许多随机产生的参数与信息,即计算机具有实时处理的能力,从而提高了控制系统的性能。

(3)使系统具备了处理故障的能力,提高了系统自身的可靠性。5.3.2中断源所谓中断源就是引起中断的事件,亦即是什么部件要求中断。对于各种计算机来说,其中断源的允许数目是不一样的,例如Z80允许128个中断源(不包括非屏蔽中断),而8086/8088则允许256个中断源。MCS-51单片机相对来说较为简单,只提供了5个中断源:2个外部中断请求和2个片内定时器/计数器T0和T1的溢出中断请求TF0和TF1及串行口中断请求TI或RI(合为一个中断源)。MCS-51单片机5个中断源的中断请求信号分别锁存在特殊功能寄存器TCON和SCON中:

(1)TCON为定时/计数器控制寄存器,字节地址为88H,其中锁存的中断源请求标志如表5―1所示。

表5―1TCON锁存的中断源IT0:外部中断0触发方式控制位。当IT0=0时,外部中断0控制为电平触发方式。在此方式下,CPU在每个机器周期的S5P2期间采样(P3.2,INT0)的输入电平,若采到低电平,则认为有中断请求,随即置位IE0。若采到高电平,则认为无中断请求或中断请求已清除,随即对IE0清“0”。在电平触发方式中,CPU响应中断后不能自动使IE0清“0”,也不能由软件使IE0清“0”,故在中断返回前必须清除引脚上的低电平,否则会再次响应中断造成出错。

若IT0=1,外部中断0控制为边沿触发方式。在此方式下,CPU在每个机器周期的S5P2期间采样(P3.2,INT0)的输入电平,若相继两次采样,一个周期采样为高电平,接下来的下一个周期采样为低电平,则置位IE0,表示外部中断0正在向CPU请求中断,直到该中断被CPU响应时,IE0由硬件自动清“0”。在边沿触发方式中,为保证CPU在两个机器周期内检测到先高后低的负跳变,输入高低电平的持续时间起码要保持1个机器周期。

IE0:外部中断0标志,若IE0=1,则外部中断0向CPU请求中断。

IT1:外部中断1触发方式控制位,功能与IT0类似。

IE1:外部中断1标志,功能与IE0类似。

TF0:T0溢出中断标志,在启动T0计数后,T0从初值开始加1计数,当计满溢出时,由硬件使TF0置1,向CPU申请中断,CPU响应TF0中断后,由硬件对TF0清“0”,TF0也可由软件清“0”(查询方式)。

TF1:T1溢出中断标志,功能与TF0类似。系统复位后,TCON各位均清“0”。(2)SCON串行口控制寄存器,字节地址为98H。

SCON的低2位锁存串行口的接收中断和发送中断标志,其格式如表5―2所示。表5―2SCON锁存的中断源TI:串行口发送中断标志。在串行口以方式0发送时,每当发送完8位数据后,由硬件置位TI;若以方式1、2、3发送时,在发送停止位的开始时(同时)置位TI。TI=1表示串行口发送器正在向CPU申请中断。值得注意的是当CPU响应该中断后,转向中断服务程序时并不复位TI,TI必须由用户在中断服务程序中用软件清0(可用CLRTI或其它指令)。RI:串行口接收中断标志。若串行口接收器允许接收并以方式0工作,则每当接收到第8位数据时置位RI;若以方式1、2、3工作,且SM2=0时,则每当接收器接收到停止位的(同时)中间时置位RI;当串行口以方式2或方式3工作,且SM2=1时,仅当接收到的第9位数据RB8为1后,同时还要接收到停止位的中间时置位RI。RI为1表示串行口接收器正向CPU申请中断,同样RI必须由用户在中断服务程序中清0。

80C51复位后,SCON也被清0。

EA:CPU中断总允许位。当EA=1时,CPU允许中断,每个中断源是允许还是禁止,分别由各自的允许位确定,当EA=0时,CPU屏蔽所有的中断要求。

ES:串行口中断允许位。ES=1,允许串行口中断,ES=0,禁止串行口中断。

ET1:T1中断允许位。ET1=1,允许T1中断,ET1=0,禁止T1中断。

EX1:外部中断1允许位。EX1=1,允许外部中断1中断,EX1=0,禁止外部中断1中断。

ET0:T0中断允许位。ET0=1,允许T0中断,ET0=0,禁止T0中断。

EX0:外部中断0允许位。EX0=1,允许外部中断0中断,EX0=0,禁止外部中断0中断。系统复位后,IE中各位均清“0”,禁止所有中断。5.3.3中断控制5.3.4中断的优先级如果正在执行主程序时只有1个中断源请求中断,而这时CPU又是对中断开放的,那么这个中断立即得到响应。然而由于中断是随机产生的,中断源一般又不止1个,因此往往会出现这样的情况:几个中断源同时请求中断;或者当某一个中断正在响应中(即正在执行该中断源的中断服务程序),又有其它的中断源请求中断,这时中断系统应如何处理呢?在一般情况下,首先把各个中断源分成若干个优先级,然后再按如下原则进行处理:表5―3中断优先级寄存器IP的格式其中:PX0:外部中断0优先级控制位。PT0:定时器0中断优先级控制位。PX1:外部中断1优先级控制位。PT1:定时器1中断优先级控制位。PS:串行口中断优先级控制位。上面优先级控制位规定1为高优先级,0为低优先级。(1)不同级的中断源同时申请中断时——先高后低;

(2)同级的中断源同时申请中断时——按规定执行;

(3)处理低级中断又收到高级中断请求时——停低转高;

(4)处理高级中断又收到低级中断请求时——高不理低。

MCS-51单片机的中断系统对优先级的控制比较简单,只规定了两个中断优先级,对于每一个中断源均可编程为高优先级中断或低优先级中断。在同1个优先级中,对5个中断源的优先次序安排如下:最高优先级最低优先级

外部中断0(IE0)

定时器/计数器T0溢出中断(TF0)

外部中断1(IE1)

定时器/计数器T1溢出中断(TF1)

串行口中断(RI+TI)

5.3.4中断响应的条件、过程与时间

1.中断响应的条件单片机响应中断的条件为中断源有请求(中断允许寄存器IE相应位置1),且CPU开中断(即EA=1)。这样,在每个机器周期内,单片机对所有中断源都进行顺序检测,并可在任1个周期的S5P2期间,找到所有有效的中断请求,还对其优先级进行排队。但是,必须满足下列条件:(1)无同级或高级中断正在服务;

(2)现行指令执行到最后1个机器周期且已结束;

(3)若现行指令为RETI或需访问特殊功能寄存器IE(中断允许)或IP(中断优先级)的指令时,执行完该指令且紧随其后的另1条指令也已执行完。单片机便在紧接着的下1个机器周期的S1期间响应中断。否则,将丢弃中断查询的结果。2.中断响应过程单片机一旦响应中断,首先对相应的优先级有效触发器置位。然后执行1条由硬件产生的子程序调用指令,把断点地址压入堆栈,再把与各中断源对应的中断服务程序的入口地址送入程序计数器PC,同时清除中断请求标志(串行口中断和外部电平触发中断除外(软件复位)),从而程序便转移到中断服务程序。以上过程均由中断系统自动完成。各中断源所对应的中断服务程序的入口地址如下:中断源入口地址外部中断0003H定时器T0中断000BH外部中断0013H定时器T1中断001BH串行口中断0023HCPU从上面相应的地址开始执行中断服务程序直到遇到1条RETI指令为止。RETI指令表示中断服务程序的结束。CPU执行该指令,一方面清除中断响应时所置位的优先级有效触发器(中断完毕);另一方面从堆栈栈顶弹出断点地址送入程序计数器PC,从而返回主程序。若用户在中断服务程序的开始安排了保护现场指令(一般均为相应寄存器内容入栈或更换工作寄存器区),则在RETI指令前应有恢复现场指令(相应寄存器内容出栈或换回原工作寄存器区)。

各入口地址之间只相隔8个字节,一般的中断服务程序是容纳不下的。通常在中断服务程序入口地址处放一条无条件转移指令,这样可使中断服务程序安排在64K空间的任意处3.中断响应时间所谓中断响应时间是指从查询中断请求标志位到转入中断服务程序入口地址所需的机器周期数(对单一中断源而言)。响应中断最短需要3个机器周期。若CPU查询中断请求标志的周期正好是执行1条指令的最后1个机器周期,则不需等待就可以响应。而响应中断执行1条长调用指令需要2个机器周期,加上查询的1个机器周期,一共需要3个机器周期才开始执行中断服务程序。5.3.5MCS-51单片机的中断系统

MCS-51系列单片机的中断系统属于8位单片机中功能较强的1种中断系统,它可以提供5个中断源,每个中断源有两个中断优先级别可供选择,可实现两级中断服务程序嵌套。此外,所有中断均可由软件设定为允许中断或禁止中断,也就是说,用户可以用关中断指令(或复位)来屏蔽所有的中断请求,也可以用开中断指令使CPU接受中断请求。MCS-51单片机的中断系统结构示意图如图5―2所示。图5―2MCS-51的中断系统5.3.6外部中断及中断请求的撤除

1.外部中断

MCS-51单片机的中断系统有2个外部中断源,引脚信号为和(即P3.2和P3.3)。其中断请求触发信号有电平触发和边沿触发两种,当TCON寄存器中的IT0位和IT1位为“0”时采用电平触发;为“1”时采用边沿触发。2.中断请求的撤除

CPU响应中断请求后,在中断返回(执行RETI指令)前,必须撤除请求,否则会错误地再一次引起中断过程。如前所述,对于定时器T0与T1的中断请求及边沿触发方式的外部中断0和1来说,CPU在响应中断后用硬件清除了相应的中断请求标志TF0、TF1、IE0与IE1,即自动撤除了中断请求。(只有串行口需要人工软件清楚)5.3.7中断程序举例在中断服务程序编程时,首先要对中断系统进行初始化,也就是对几个特殊功能寄存器的有关控制位进行赋值。具体来说,就是要完成下列工作:

(1)开中断和允许中断源中断;(2)确定各中断源的优先级;(3)若是外部中断,则应规定是电平触发还是边沿触发。例5.10晶振Fosc=6MHz,利用T0产生周期为2ms方波,由P1.0输出。要求采用中断方式处理。解:根据题意,定时/计数器T0采用方式1,定时值为1ms,其初值计算如下:机器周期T=12/Fosc=12/6×106μs=2μs则T0的初值为:X=216-1000/2=65036即:X=65036D=0FE0CH=1111111000001100B则:(TH0)=0FEH,(TL0)=0CH程序编写如下:

ORG0000HAJMPMAIN;转主程序

ORG000BH;中断入口地址

MOVTL0,#0CH;重赋初值

MOVTH1,#0FEHCPLP1.0;输出取反

RETI;中断返回MAIN:TMOD,#01;T0初始化

MOVTL0,#0CH;赋初值

MOVTH0,#0FEHMOVIE,#82H;CPU开中断,T0开中断HERE:SJMPHERE例5.13利用定时中断抗干扰。

单片机应用系统开发完成后,在工作现场由于系统本身的噪声干扰、电磁干扰、过压干扰以及环境干扰等原因,往往会出现“死机”现象。解决的办法有多种,这里介绍利用定时中断防止“死机”的方法。设计思想是先估算系统主程序执行一次循环所需时间t,然后把定时器T0或T1的定时时间取得比t稍大,并在主程序中包含对定时器的初始化程序,这样,如果系统主程序运行正常,因定时时间比t大,故在定时时间还未到时,主程序已完成一次循环,T0或T1被重新初始化,使定时时间常数重新置入其中,故不会产生溢出中断。若应用系统由于干扰失控,主程序不能正常循环运行,T0或T1不能及时初始化,则经过时间t后,T0或T1必将产生溢出中断,转入中断服务程序,这表明程序运行出现故障,用户可安排中断服务程序跳转回主程序需要的地址,以便重新使主程序运行。将T1设置为工作方式2,晶振频率为6MHz,防止“死机”的程序如下:

SETBET1;T1开中断

SETBPT1;T1中断设置为高优先

SETBEA;CPU开中断

MOVTL1,#data;T1赋初值(根据t)

MOVTH1,#dataMOVTMOD#20H;T1工作方式2,定时

SETBTR1;启动T1计数

ORG001BH;T1溢出中断入口地址

POPA;丢弃PC压入堆栈的错误地址

POPAMOVA,#data;将需转去的主程序地址(2个字节)送入栈顶

PUSHAMOVA,#dataPUSHARETI;中断返回例5.15通过定时/计数器采用中断方式测量外部引脚T1上的脉冲信号频率(如图5-19所示)。采用定时闸门计数方法测量脉冲频率。设定时/计数器0为定时方式,提供100ms的基准闸门时间TR。在10TR(1s)期间,定时/计数器1对外部脉冲进行计数,所获得的计数值m即为被测脉冲信号的频率。定时/计数器0用来提供100ms的闸门时间,单片机时钟振荡器频率FOSC为6MHz;定时/计数器1用来对外部脉冲计数。定时/计数器0采用方式1、定时状态,由内部TR0控制启、停;定时/计数器1采用方式1、计数状态,由内部TR1控制启、停。因此TMOD=01010001B=51H。T0的初值为:

式中:FOSC=6MHz,x=100ms。

MSFI:MOVTMOD,#51H;T0、T1初始化

MOVR0,#0AH;1s定时的计数长度

MOVTL1,#00H;定时器1的计数器清“0”MOVTH1,#00HMOVTL0,#0B0H;定时器0装入计数初值

MOVTH0,#3CHSETBP3.5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论