新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机多中断处理技术研究

单片机多中断处理技术研究

作者:时间:2012-02-16来源:网络收藏

1.引 言:

本文引用地址:http://www.eepw.com.cn/article/172080.htm

的应用大大提高了CPU的有效使用率,有效提高了资源的利用率。的性能同时也就成了衡量芯片性能的标准。新开发的芯片增加了很多的源,如 PIC16F877的中断源已经达到14个,可谓相当丰富;但同时也带来了一些难题:如此多的中断源在时很容易产生中断冲突,如何有效的中断到达时的时序,其算法应该如何实现成了首先需要解决的问题

2.中断

为了解决多中断带来的问题,有必要清楚单个中断到达时的处理,首先简要介绍中断的基本原理:计算机在执行某一程序过程中,由于计算机系统内外原因,而必须中止原程序的执行,转去执行相应的处理程序,待处理结束后再回来继续执行中止程序。当只有一个事件被响应,进入中断执行中断程序,这较易被处理,当两个,三个,甚至更多的中断同时产生的时候,处理起来就复杂多了,对于PIC系列,其设计上虽然有很多中断,但是并没有规定中断的优先级。当遇到中断的时候,不做任何判断,而是先把指针指向0004H(中断起始地址),至于接下来如何操作则完全交给用户软处理完成。其中断时序图如下:

51.jpg

INT引脚中断时序图

其中时序图说明如下:

(1)中断开销时间=3~4TCY,取决于是单周期还是双周期指令,这里的TCY为指令周期

(2)CLKOUT信号仅在RC振荡器下有效。

(3)INTF标志可在Q4~Q1期间的任何的时候把其置成高电平。

如果正当全局中断允许位GIE清零(禁止中断)时发生中断,GIE位可能会被用户的中断服务程序(RETFIE指令)无意地重新开放,能引起该事件发生有以下情况:

1. 在一个中断被响应时执行一条对GIE位置1的指令;

2. 程序正在转向中断矢量并执行中断服务程序;

在执行中断返回指令RETFIE后中断服务程序完成。这将引起GIE位被置1(开放中断)并且程序返回一条指令,而这条指令的下一条指令将禁止中断。

要确保整个中断被禁止的方法是通过以下程序代码使GIE位清零:

loop BCF INTCON,GIE
BTFCS INTCON,GIE
GOTO loop

3.多路中断处理技术

以上方法不能解决多路中断问题,因此有必要具体分析一下当最坏的情况发生时,即多路中断同时出现时的中断处理过程。

怎样出现的中断才能称为多路中断同时出现呢?通过上面的时序图,可以得出这样的结论:

(1)当一个中断产生时,在一个周期范围内必然产生一个中断标志,由此触发全局中断禁止位。(2)判断中断的类型就是判断其对应中断的标志位。

(3)在第一个诱发中断源产生中断时开始,到中断程序执行完成的范围内,如果有其它中断发生,那么都称为多路中断同时出现。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭