目录
- 1.定时器/计数器T0、T1中断请求的撤销
- 2.外部中断请求的撤销
- (1)跳沿方式外部中断请求的撤销
- (2)电平方式外部中断请求的撤销
- 3.串行口中断请求的撤销
- 4.定时器/计数器T2中断请求的撤销
- 某个中断请求被响应后,就存在着一个中断请求的撤销问题。
1.定时器/计数器T0、T1中断请求的撤销
- 硬件会自动把中断请求标志位(TF0或TF1)清0,自动撤销。
2.外部中断请求的撤销
(1)跳沿方式外部中断请求的撤销
- 包括两项:中断标志位清0和外中断信号的撤销。
- 中断标志位清0是在中断响应后由硬件自动完成的。
- 外中断请求信号的撤销,由于跳沿信号过后也就消失了,自动撤销。
(2)电平方式外部中断请求的撤销
- 电平方式外中断请求的撤销,其中中断请求标志自动撤销,但中断请求信号的低电平可能继续存在,为此,除了标志位清“0”之外,还需在中断响应后把中断请求信号输入引脚从低电平强制改变为高电平,如图4-9所示。
图4-9 电平方式的外部中断请求的撤销电路
- 由图4-9,用D触发器锁存外来的中断请求低电平,并通过D触发器的输出端Q接到INT0*(或 INT1* )。所以,增加的D触发器不影响中断请求。
- 中断响应后,利用D触发器的SD端接AT89S51的P1.0端。因此,只要P1.0端输出一个负脉冲就可以使D触发器置“1”,撤销低电平的中断请求信号。
- 负脉冲可在中断服务程序中增加如下指令:
ORL P1,#01H ;P1.0为“1”
ANL P1,#0FEH ;P1.0为“0”
ORL P1,#01H ;P1.0为“1”
3.串行口中断请求的撤销
- 响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位,以判定是接收操作还是发送操作,然后才清除。所以串行口中断请求的撤销只能使用软件的方法,在中断服务程序中进行,即用如下指令在中断服务程序中对串行口中断标志位进行清除:
CLR TI ;清TI标志位
CLR RI ;清RI标志位
4.定时器/计数器T2中断请求的撤销
- 定时器/计数器T2的中断请求包括两种:TF2和EXF2。
- 上述两种中断请求,在满足中断响应条件时,CPU都将响应其中断请求,转向同一个中断矢量地址。因此,必须在T2的中断服务程序中对TF2和EXF2两个中断请求标志位进行查询,然后正确转入对应的中断处理程序。
- 中断结束后,中断请求标志位TF2或EXF2必须由软件清0。所以定时器/计数器T2中断请求的撤销只能使用软件的方法,在中断服务程序返回前完成。