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





