CPU响应中断请求后即进入中断服务程序,在中断返回前,应撤除该中断请求;否则,会重复引起中断而导致错误。51单片机各中断源中断请求撤销的方法各不相同。
1.定时器中断请求的撤除
对于定时器0或1溢出中断,CPU在响应中断后即由硬件自动清除其中断标志位TF0或TF1,无须采取其他措施。
2.串行口中断请求的撤除
对于串行口中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI和中断接收标志位RI,必须在中断服务程序中用软件将其清除。
3.外部中断请求的撤除
外部中断可分为边沿触发型和电平触发型。(www.xing528.com)
对于边沿触发的外部中断0或1,CPU在响应中断后由硬件自动清除其中断标志位IE0或IE1,无须采取其他措施。
对于电平触发的外部中断,其中断请求撤除方法较复杂。因为对于电平触发外中断,CPU在响应中断后,硬件不会自动清除其中断请求标志位IE0或IE1,同时,也不能用软件将其清除,所以,在CPU响应中断后,应立即撤引脚上的低电平;否则,就会引起重复中断而导致错误。而CPU又不能控引脚的信号,因此,只有通过硬件再配合相应软件才能解决这个问题。图6-5是可行方案之一。
图6-5 撤除外部中断请求的电路
由图可知,外部中断请求信号不直接加引脚上,而是加在D触发器的CLK端。由于D端接地,当外部中断请求的正脉冲信号出现在CLK端时,Q端输出为0,为低,外部中断向单片机发出中断请求。利用P1口的P1.0作为应答线,当CPU响应中断后,可在中断服务程序中采用两条指令:“P1&=~0x01;P1|=0x01;”,用来撤除外部中断请求。第一条指令使P1.0为0,因P1.0与D触发器的异步置1端SD相连,Q端输出为1,从而撤除中断请求。第二条指令使P1.0变为1,,Q继续受CLK控制,即新的外部中断请求信号又能向单片机申请中断。第二条指令是必不可少的,否则,将无法再次形成新的外部中断。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。