MCS-51单片机的中断系统

一、基本概念
(一)中断的概念
中断是通过硬件来改变CPU的运行方向的。当CPU正在执行主程序的时,外部或内部发生的某一事件(如引脚上发生电平变化,一个脉冲的发生或计数器的计数溢出等)请求CPU迅速处理,CPU暂时中断当前程序而转去执行相应的处理程序,待处理程序执行完毕后,CPU再继续执行原来被中断的程序。中断的两个难题:一是如何从主程序转到中断服务程序;二是如何从中断服务程序返回主程序。
(二)中断的特点
1.分时操作:单片机有了中断功能,使CPU与外设由串行工作变成分时并行工作,实现了CPU和外设的同步工作,提高了工
作效率
2.实时处理:在实时的控制中,现场的各种参数、信息均随时间和现场而变化。
3.故障处理:针对随机发生的故障,如掉电、存储出错、电路故障等,可通过中断系统由故障源向CPU发出中断请求,再由
CPU转到相应的故障处理程序进行处理。
二、MCS-51单片机的中断系统与控制
(一)中断源和中断标志
1.中断源与中断入口:中断源就是引起中断的事件
1)INT0:外部中断0中断请求,由P3.2引脚输入。通过IT0引脚(TCON.0)来决定是低电平有效还是下跳变有效。一旦输入信号有效,就向CPU申请中断请求,并建立IE0标志。中断入口地址为0003H。
2)INT1:外部中断1中断请求,由P3.3引脚输入。通过IT1引脚(TCON.2)来决定是低电平有效还是下跳变有效。一旦输入信号有效,就向CPU申请中断请求,并建立IE1标志。中断入口地址为0013H。
3)TF0:定时器0溢出中断请求。当定时器0产生溢出时,其中断请求标志位(TCON.5)置位(由硬件自动执行),请求中断处理,中断入口为000BH。
4)TF1:定时器1溢出中断请求。当定时器0产生溢出时,其中断请求标志位置位(由硬件自动执行),请求中断处理,中断入口为001BH。
5)RI或TI:串行中断请求。当接受或发送完一串行帧时,内部串口中断请求标志位RI或TI置位,请求中断。中断入口地址0023H。
2.中断请求标志
1)TCON寄存器中的中断标志(TCON为定时器/计数器中断控制寄存器(字节地址88H))
各位的定义:| TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
①IT0(IT1):外部中断0(或1)触发方式控制位,IT0(IT1)被设置位0时,则选择外部中断为电平触发方式。在这种方式下,CP在每个机器周期的S5P2期间对P3.2(P3.3)引脚采样,若为低电平,则认为由中断请求,随即使使IE0(IE1)标志置位。IT0(IT1)被置为1,则选择编研触发方式。
②IE0(IE1):外中断标志。当检测到P3.2(P3.3)引脚有中断请求时,由硬件使IE0(IE1)=1,当CPU转向中断服务程序时,由硬件使IE0(IE1)=0。
③TF0(TF1):定时器0(1)的溢出中断标志,T0(T1)被启动计数后,从初值起加1计数,计数溢出后由硬件置位TF0(TF1),同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清零。
2)SCON寄存器中的中断标志(字节地址98H)
SCON是串行口寄存控制器,其低位T1和R1锁存串行口的发送中断标志和接收中断标志。
①TI(SCON.1):串行发送中断标志,CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧后,硬件将使TI置位,但CPU响应中断时并不清除TI,必须由软件清零。
②RI(SCON.0):串行接收中断标志。在串行口允许接收时,每接收完一个串行帧后,硬件将使RI置位,但CPU响应中断时并不清除RI,必须由软件清零。
(二)中断控制
中断控制包括中断开放、中断判别、中断响应、中断查询、中断处理等。它们分别由特殊功能寄存器IE和IP的相应位控制
1.中断的开发和屏蔽
MCS-51单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE,用于控制CPU对各中断源的开发或屏蔽。IE寄存器各位定义:|EA| | |ES|ET1|EX1|ET0|EX0|
①EA:总中断允许控制位。EA=1,开发所有的中断,各中断源的允许和禁止可通过相应的中断允许位单独加以控制;EA=0,禁止所有的中断。
②ES:串行口中断允许位。ES=1,允许中断口中断;ES=0,禁止中断口中断。
③ET1(ET0):定时器1(0)中断允许位,ET1(ET0)=1,允许定时器中断;ET1(ET0)=0,禁止定时器中断。
④EX1(EX0):外部中断1(0)中断允许位,EX1(EX0)=1,允许外部中断1(0)中断;EX1(EX0)=0,禁止外部中断1(0)中断。
2.中断优先权控制
8051单片机有两个中断优先级,每个中断优先源都可以通过编程确定为高优先级中断或者低优先级中断,因此,可实现二级嵌套。同一优先级别中的中断源可能不止一个,也有中断优先级排队的问题。专用寄存器IP为中断优先级寄存器,所存各中断优先级控制位,IP的每一位可由软件置1或清零,且1表示高优先级,0表示低优先级。
IP寄存器各位定义:| | |PS|PT1|PX1|PT0|PX0|
PS:串行口中断优先级控制位;
PT1:T1中断优先级控制位;
PX1:INT1优先级控制位;
PT0:T0中断优先级控制位;
PX0:INT0中断优先级控制位;
对于同级中断源,系统默认的优先级顺序:外部中断0>定时器/计数器0>外部中断1>定时器/计数器1>串行口中断
对于中断优先级的嵌套,MCS-51的单片机有以下3条规定:
①正在进行的中断过程不能被新的同级或低优先级的中断请求所中断;
②正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套;
③CPU同时接收到几个中断请求时,首先响应优先级最高的中断请求;
中断嵌套只能高优先级中断低优先级,低优先级不能中断高优先级,同一低优先级也不能相互中断,中断嵌套结构类似于调用子程序嵌套,其不同点有两条:
①子程序嵌套是事先在程序中事先安排好的,中断嵌套是随机发生的;
②子程序嵌套无次序限制,中断嵌套只允许高优先级中断低优先级。
(三)中断响应
1.中断响应条件:单片机响应中断的条件为:中断源有请求(IE相应为置1),且CPU开中断(EA=1)。这样,在每个机器周期内,单片机对所有中断源进行顺序检测,并可在任一周期的 S6期间,找到所有的中断请求,并对其优先级进行排队。但是,必须满足以下条件:
①无同级或高级中断正在服务;
②现行指令执行到最后一个机器周期且已结束;
③若现行指令为RETI或需访问特殊功能寄存器IE或IP的指令时,执行完该指令且紧随其后的另一条指令也已执行完。
单片机便在紧接着的下一个机器周期的S1期间响应中断。否则,将丢弃中断查询的结果。
2.中断响应过程。单片机一旦响应中断,首先对相应的优先级有效触发器置位。然后执行一条由硬件产生的子程序调用指令,将断点地址压入堆栈,再把与各中断源对应的中断服务程序的入口地址送入程序计数器PC,同时清除中断请求标志(串行口中断和外部电平触发中断除外),从而转入相应的中断服务程序。以上过程均由中断系统硬件自动完成。
(四)中断响应时间
中断响应时间是指从查询中断请求标志位到转入中断服务程序入口地址所需的时间。响应中断最短需要3个机器周期。若CPU查询中断请求标志的周期正好是执行一条指令的最后一个机器周期,则不需等待就可以响应。而响应中断执行一条长调用指令需要两个机器周期,加上查询的个机器周期,一 共需要3个机器周期才开始执行中断服务程序。若系统中只有一个中断源,则响应时间在3~8个机器周期之间。
(五)中断服务与返回
中断服务程序从中断入口地址开始执行,到返回指令"RETI”为止。一般包括两部分内容,一是保护现场,二是完成中断源请求的服务。编写中断服务程序时需注意以下几点:
(1)各中断源的中断入口地址之间只相隔8个字节,一般容纳不下中断服务程序,因此,在中断入口地址单元通常存放一条无条件转移指令,可将中断服务程序转至存储器的其他任意空间。
(2)若要在执行当前中断程序时禁止其他更高优先级中断,需先用软件关闭CPU中断:或用软件禁止相应高优先级的中断,在中断返回前再开放中断。
(3)在保护和恢复现场时,为了不使现场数据遭到破坏成造成混乱,般规定此时CPU不再响应新的中断请求。因此,在编写中断服务程序时,要注意在保护现场前关中断,在保护现场后若允许高优先级中断,则应开中断,同样,在恢复现场前也应先关中断,恢复之后再断开。
(4)在中断服务程序的末尾,必须安排一条中断返回指令RETI,使程序自动返回主程序。
(六)中断请求的撤除
CPU响应中断请求后即进入中断脂务程序,在中断返回前,应撤除该中断请求。否则,会重复引起中断而导致错误。MCS-51 名中断源中断请求撤销的方法各不相同,分别如下:
 (1)定时器中断请求的损除。对于定时器0或1溢出中断,CPU在响应中断后由硬件自动清除其中断标志位TF0或TF1,无须采取其他措施。
(2)单行口中断请求的那除。对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TR、 RI,必须在中断服务程序中用软件将其消除(收发都用一中断)。
(3)外部中断可分为边沿触发型和电平触发型。对于边沿触发的外部中断0成1, CPU在响应中断后由硬件自动清除其中断标志位1E0或IE1,无须采取其他措施:对于电平触发方式,只要P3.2(或P3.3)引脚为低电平,IE0(IE1)就置1,请求中断。如果在中断服务程序返回时,P3.2(或P3 3)引脚还为低电平,则又会产生中断,这样就出现一次请求。多次中断的情况。为避免这种情况,只有在中断服务程序返回前撒销 P3.2(或P33)的中断请求信号,即使P3.2(P3.3)为高电平。
外部中断请求信号加在D触发器的CLK端.由于D端接地,当外部中断请求的正脉冲信号出现在CLK端时,Q端输出为0,外部中断向单片机发出中断请求。当CPU响应中断后,可在中断服务程序中采用下面两条指令撒除中断请求:
CLR   P1.0
SETB   P1.0
第一条指令使P10为0,因P1.0与D触发器的异步置1项相连,Q端输出为1,从面撤销中断请求,第条指令使P1.0变为1, 使异步置1端无效,Q继续受CLK控制,即新的外部中断请求信号又能向单片机申请中断。
三、MCS-51 型单片机中断系统的应用
在中断服务程序编程时, 首先要对中断系统进行初始化。也就是对几个特殊功能寄存器的相关控制位进行赋值。具体来说,就是要完成下列工作:
(1)开中断和允许中断源中断:
(2)确定各中断源的优先级:
(3) 若是外部中断,则应规定是电平触发还是边沿触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值