位置:51电子网 » 技术资料 » 单 片 机

MCS-51系统中断优先级的软扩展

发布时间:2008/5/27 0:00:00 访问次数:641

摘要:鉴于mcs-51系统只提供“二级中断嵌套”,提出扩展51系统中断优先级的纯软件方法。其利用51系统内建的中断允许寄存器ie和中断优先级寄存器ip,通过屏蔽字机制来实现;以c51的形式,给出这种扩展方法的函数库实现,为该方法的使用赋予友好、简洁的用户接口。

关键词:mcs-51单片机 中断优先级 软扩展 c51

引言

众所周知,mcs-51系统只提供“二级中断嵌套”,而大多数嵌入式系统希望有多于两级的优先级别。因为一般来说,系统都有掉电中断,且应置为最高优先级,这样所有其它中断只能共用一个最低优先级,如此,往往不能满足实际的逻辑需求。为了使系统具有多于两级的中断优先级别,可以利用8259a之类的中断控制芯片实现中断优先级的硬扩展,但却增加了系统的造价和复杂性。因复杂性的提高,系统的可靠性将受到影响。本文提出一种扩展mcs-51系统中断优先级的纯软件方法,不需增加任何硬件,且所需的额外资源消耗也很小。实际应用表明这种方法是可行的和有效的。

1 mcs-51的中断系统简介

mcs-51系列单片机允许有五个中断源,提供两个中断优先级,可实现二级中断嵌套。这两级优先级遵循下述规则:仅高优先级中断源可中断嵌套低优先级中断源。为实现这一规则,中断系统内部包含两个不可寻址的优先级状态触发器。当特定优先级的某中断源被响应时,相应的触发器即被置位,直到执行了reti指令后,这个触发器才复位。在此期间,同级和低级中断将被防止。中断源的中断请求能否得到响应,受中断允许寄存器ie的控制。每个中断源的优先级可通过对中断优先级寄存器ip编程来设定:或最低,或最高。同一优先级中的各中断源同时请求中断时,由内部查询逻辑确定响应次序。查询次序依次为:外部中断0(x0)、定时器中断0(t0)、外部中断1(x1)、定时器中断1(t1)、串口中断(s)。如果当前指令是reti或是对ie、ip操作的指令,将封装cpu对中断的响应,且必须再执行完一条指令之后才会响应中断。

2 中断优先级软扩展的方法

首先,给出软扩展的第一种方法,并分析其特点,指出其存在的缺陷。然后,基于对方法一的不足之处,给出不断完善的方法二、方法三。其中方法二是对方法一的完善,方法三是对方法二的完善,并最终解决了方法一、二中的缺陷,实现了真正的中断优先级的软扩展。

2.1 方法一

此法仅使用和系统的中断允许寄存器ie,通过中断屏蔽字机制,以使不同的中断源具有不同的逻辑中断优先级(下文中的“优先级”如不加说明即指“逻辑中断优先级”)。

不失一般性,不妨令8051系统的五个中断源——外中断0(x0)、定时器中断0(t0)、外中断1(x1)、定时器中断1(t1)及串口中断(s),有如表1所列的优先级。(实际应用中,视具体情况,赋予不同中断源以适当的优先级。)

其中,“0”代表最高优先级,“4”代表最低优先级。

首先,给设定了优先级的诸中断源赋以二级“物理中断优先级”:将优先级最高的中断源(x1)在中断优先级寄存器ip中的相应位(px1)置1,而令ip中的其它相关位(pt1、pt0、ps、px0)为0。

其次,给设定了优先级的各中断源分配适当的“中断屏蔽字”。其基本思想是屏蔽同级和低级中断。具体分配过程如下:优先级为k(0≤k≤n-1,n为中断源数量)的中断源的“中断屏蔽字”为:优先级为x(x∈[k,n-1],即同级和低级)的中断源在ie中的对应位置0,优先级为y(y∈[0,k-1],即高级)的中断源在ie中的相应位置1而得的位组字节。当然,ie的ea位(cpu中断允许标志位)始终为1.

对于表1所列的中断优先级分配情况,各中断源的“中断屏蔽字”配置如表2所列。

表1 中断源的优先级分配表

中断源x1t1t0sx0

摘要:鉴于mcs-51系统只提供“二级中断嵌套”,提出扩展51系统中断优先级的纯软件方法。其利用51系统内建的中断允许寄存器ie和中断优先级寄存器ip,通过屏蔽字机制来实现;以c51的形式,给出这种扩展方法的函数库实现,为该方法的使用赋予友好、简洁的用户接口。

关键词:mcs-51单片机 中断优先级 软扩展 c51

引言

众所周知,mcs-51系统只提供“二级中断嵌套”,而大多数嵌入式系统希望有多于两级的优先级别。因为一般来说,系统都有掉电中断,且应置为最高优先级,这样所有其它中断只能共用一个最低优先级,如此,往往不能满足实际的逻辑需求。为了使系统具有多于两级的中断优先级别,可以利用8259a之类的中断控制芯片实现中断优先级的硬扩展,但却增加了系统的造价和复杂性。因复杂性的提高,系统的可靠性将受到影响。本文提出一种扩展mcs-51系统中断优先级的纯软件方法,不需增加任何硬件,且所需的额外资源消耗也很小。实际应用表明这种方法是可行的和有效的。

1 mcs-51的中断系统简介

mcs-51系列单片机允许有五个中断源,提供两个中断优先级,可实现二级中断嵌套。这两级优先级遵循下述规则:仅高优先级中断源可中断嵌套低优先级中断源。为实现这一规则,中断系统内部包含两个不可寻址的优先级状态触发器。当特定优先级的某中断源被响应时,相应的触发器即被置位,直到执行了reti指令后,这个触发器才复位。在此期间,同级和低级中断将被防止。中断源的中断请求能否得到响应,受中断允许寄存器ie的控制。每个中断源的优先级可通过对中断优先级寄存器ip编程来设定:或最低,或最高。同一优先级中的各中断源同时请求中断时,由内部查询逻辑确定响应次序。查询次序依次为:外部中断0(x0)、定时器中断0(t0)、外部中断1(x1)、定时器中断1(t1)、串口中断(s)。如果当前指令是reti或是对ie、ip操作的指令,将封装cpu对中断的响应,且必须再执行完一条指令之后才会响应中断。

2 中断优先级软扩展的方法

首先,给出软扩展的第一种方法,并分析其特点,指出其存在的缺陷。然后,基于对方法一的不足之处,给出不断完善的方法二、方法三。其中方法二是对方法一的完善,方法三是对方法二的完善,并最终解决了方法一、二中的缺陷,实现了真正的中断优先级的软扩展。

2.1 方法一

此法仅使用和系统的中断允许寄存器ie,通过中断屏蔽字机制,以使不同的中断源具有不同的逻辑中断优先级(下文中的“优先级”如不加说明即指“逻辑中断优先级”)。

不失一般性,不妨令8051系统的五个中断源——外中断0(x0)、定时器中断0(t0)、外中断1(x1)、定时器中断1(t1)及串口中断(s),有如表1所列的优先级。(实际应用中,视具体情况,赋予不同中断源以适当的优先级。)

其中,“0”代表最高优先级,“4”代表最低优先级。

首先,给设定了优先级的诸中断源赋以二级“物理中断优先级”:将优先级最高的中断源(x1)在中断优先级寄存器ip中的相应位(1)置1,而令ip中的其它相关位(pt1、pt0、ps、0)为0。

其次,给设定了优先级的各中断源分配适当的“中断屏蔽字”。其基本思想是屏蔽同级和低级中断。具体分配过程如下:优先级为k(0≤k≤n-1,n为中断源数量)的中断源的“中断屏蔽字”为:优先级为x(x∈[k,n-1],即同级和低级)的中断源在ie中的对应位置0,优先级为y(y∈[0,k-1],即高级)的中断源在ie中的相应位置1而得的位组字节。当然,ie的ea位(cpu中断允许标志位)始终为1.

对于表1所列的中断优先级分配情况,各中断源的“中断屏蔽字”配置如表2所列。

表1 中断源的优先级分配表

中断源x1t1t0sx0
相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!