地址執(zhí)行需滿足以下條件:
1. 當(dāng)對應(yīng)中斷使能位為“1”時,繼續(xù)判斷第二個條件是否滿足;當(dāng)對應(yīng)中斷使能位為“0”,即使中斷標(biāo)志為“1”,中斷也不會發(fā)生,程序也不會跳轉(zhuǎn)至中斷服務(wù)地址執(zhí)行。
2. 當(dāng)全局中斷使能位 GIE 為“0”,將屏蔽所有中斷請求。當(dāng)全局中斷使能位 GIE 為“1”,程序?qū)⑻林袛喾⻊?wù)地址執(zhí)行。
為確保對寄存器 GIE 和 GIEL 的軟件寫操作成功,需按如下步驟進行:
1. 在默認(rèn)中斷模式或向量中斷模式下,對 GIE 位的軟件清 0 操作,需先關(guān)閉所有外設(shè)中斷使能,再將 GIE 位清 0;或在 GIE 位清 0 操作后,查詢 GIE 位是否為 0,不為 0則繼續(xù)執(zhí)行清 0 操作,直到成功為止;
對 GIE 位的軟件置 1 操作,無特殊要求,推薦先打開所需的外設(shè)中斷使能,再將 GIE位置 1。
2. 在向量中斷模式下,對 GIEL 位的軟件清 0 操作,需先關(guān)閉所有外設(shè)中斷使能,再將
GIEL 位清 0;或在 GIEL 位清 0 操作后,查詢 GIEL 位是否為 0,不為 0 則繼續(xù)執(zhí)行清 0 操作,直到成功為止;
對 GIEL 位的軟件置 1 操作,需與 GIE 位同時置 1,或先將 GIEL 位置 1,再將 GIE位置 1。
7. 4. 1 外部中斷
當(dāng) PINTn 復(fù)用端口被配置為數(shù)字輸入端口,且輸入信號變化滿足觸發(fā)條件時,將產(chǎn)生PINTn 外部端口中斷,相應(yīng)的中斷標(biāo)志 PIFn 被置“1”。當(dāng)全局中斷控制位 GIE 和外部端口中斷控制位 PIEn 都被置為“1”,則向 CPU 發(fā)出 PINTn 外部端口中斷請求。當(dāng)中斷條件允許,系統(tǒng)將進入中斷服務(wù)程序入口地址,進行中斷程序處理。值得注意的是,相應(yīng)中斷標(biāo)志位 PIFn 和中斷使能位 PIEn 都需通過軟件清除,INTC1 寄存器中的 PEGn 位用于配置觸發(fā)條件,可分別配置為上升沿觸發(fā)或下降沿觸發(fā)。
7. 4. 2 外部按鍵中斷
當(dāng) KINn 復(fù)用端口被配置為數(shù)字輸入端口,未被屏蔽的按鍵中任何一個端口輸入信號發(fā)生電平變化,將中斷標(biāo)志位 KIF 置為“1”,當(dāng)外部按鍵中斷控制位 KIE 為“1”,且全局中斷控制位 GIE 位使能后,則向 CPU 發(fā)出外部按鍵中斷請求。當(dāng)外部按鍵中斷條件允許時,系統(tǒng)將進入中斷服務(wù)程序入口地址,進行中斷程序處理。使用外部按鍵中斷時,須配置相應(yīng)的控制寄存器,并且使能外部按鍵中斷端口的內(nèi)部弱上拉電阻。
在按鍵中斷使能(KMSKn=1,KIE=1)前,先對端口寄存器進行讀或者寫的操作,清除中斷標(biāo)志位,以免誤產(chǎn)生中斷。
清除該中斷標(biāo)志位 KIF 的操作步驟:
1)對端口寄存器進行讀或者寫操作,結(jié)束端口電平與鎖存器值的不匹配條件;
2)軟件清除中斷標(biāo)志位 KIF。
中斷使能位 KIE 也需要通過軟件進行清除。