CPU响应某一中断后,在中断返回前,该中断请求应该撤除;否则,会引起重复中断而发生错误。
对于定时器T0和T1的溢出中断及边沿触发方式的外部中断,CPU响应中断后,便由中断系统的硬件自动清除相关的中断请求标志,即这些中断请求是自动撤除的,用户无须采取其他措施。
但对电平触发方式的外部中断,情况则不同。光靠清除中断标志,并不能彻底解决中断请求的撤除问题。因为尽管中断请求标志位撤除了,但是中断请求的有效低电平仍然存在,在下一个机器周期采样中断请求时,又会使IE0或IE1重新置1。为此,要想彻底解决中断请求的撤除,必须在中断响应后把外部输入端信号从低电平强制改为高电平。
对于串行接口中断,CPU响应中断后,硬件不能清除它们的中断标志,必须在中断服务程序中用软件清除中断标志,如“CLR RI”、“CLR TI”。MCS-52的T2定时中断标志必须由软件清0。电平触发方式的外部中断请求撤除电路如图4-5所示。
由图4-5可见,当外部中断源产生中断请求时,D触发器被触发,其端输出低电平并送到单片机的引脚,该低电平被单片机CPU检测到后就使中断标志IE0置1,CPU响应中断请求便可转去执行中断服务程序。为了撤除上的低电平,可以在中断服务程序开头加上如下的指令:
INTSUB:ANL P1,#0FE;P1.0=0
ORL P1,#01H;P1.0=1(www.xing528.com)
CLR IE0
…
RETI
CPU执行上述INT0的中断服务程序时,可在P1.0上产生一个宽度为两个机器周期的负脉冲。在该负脉冲作用下,D触发器的端被置位成1状态,上的电平因此而变高,从而撤除了其上的中断请求。
图4-5 电平触发方式的外部中断请求撤除电路
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。