中斷請求的撤銷
掃描二維碼
隨時隨地手機看文章
某個中斷請求被響應后,就存在著一個中斷請求的撤銷問題。下面接中斷請求源的類型分別說明中斷請求的撤銷方法。
1.定時器/計數(shù)器中斷請求的撤銷
定時器/計數(shù)器中斷的中斷請求被響應后,硬件會自動把中斷請求標志位(TFO或TF1)清O,因此定時器/計數(shù)器中斷請求是自動撤銷的。
2.外部中斷請求的撤銷
(1)跳沿方式外部中斷請求的撤銷 包括兩項內(nèi)容:中斷標志位清0和外中斷信號的撤銷。
其中,中斷標志位(IEO或IE1)清0是在中斷響應后由硬件自動完成的。而外中斷請求信號的撤銷,由于跳沿信號過后也就消失了,所以跳沿方式的外部中斷請求也是自動撤銷的。
(2)電平方式外部中斷請求的撤銷 對于電平方式外部中斷請求的撤銷,中斷請求標志的撤銷是自動的,但中斷請求信號的低電平可能繼續(xù)存在,在以后的機器周期采樣時,又會把已清0的IEO或IE1標志位重新置1。為此,要徹底解決電平方式外部中斷請求的撤銷,除了標志位清0之外,必要時還需在中斷響應后把中斷請求信號輸入引腳從低電平強制改變?yōu)楦唠娖?。為此,可在系統(tǒng)中增加如右圖所示的電路。
由右圖可見,用D觸發(fā)器鎖存外來的中斷請求低電平,并通過D觸發(fā)器的輸出端Q接到INTO(或INT1(的反))。所以,增加的D觸發(fā)器不影響中斷請求。中斷響應后,為了撤銷中斷請求,可利用D觸發(fā)器的直接置1端SD實現(xiàn),即把SD端接AT89S51的Pl.O端。因此,只要P1.0端輸出一個負脈沖就可以使D觸發(fā)器置1,從而撤銷低電平的中斷請求信號。所需的負脈沖在中斷服務程序中增加如下指令即可得到:
3.串行口中斷請求的撤銷
串行口中斷請求的撤銷只有標志位清0的問題。串行口中斷的標志位是TI和RI,但對這兩個中斷標志CPU不進行自動清0。因為在響應串行口的中斷后,CPU無法知道是接收中斷還是發(fā)送中斷,還需測試這兩個中斷標志位的狀態(tài),以判定是接收操作還是發(fā)送操作,然后才能清除。所以串行口中斷請求的撤銷只能使用軟件的方法,在中斷服務程序中進行,即用如下指令在中斷服務程序中對串行口中斷標志位進行清除: