51單片機外部中斷的總結
51單片機的外部中斷有兩種觸發(fā)方式可選:電平觸發(fā)和邊沿觸發(fā)。選擇電平觸發(fā)時(shí),單片機在每個(gè)機器周期檢查中斷源口線(xiàn),檢測到低電平,即置位中斷請求標志,向CPU請求中斷。選擇邊沿觸發(fā)方式時(shí),單片機在上一個(gè)機器周期檢測到中斷源口線(xiàn)為高電平,下一個(gè)機器周期檢測到低電平,即置位中斷標志,請求中斷。
這個(gè)原理很好理解。但應用時(shí)需要特別注意的幾點(diǎn):
1) 電平觸發(fā)方式時(shí),中斷標志寄存器不鎖存中斷請求信號。也就是說(shuō),單片機把每個(gè)機器周期的S5P2采樣到的外部中斷源口線(xiàn)的電平邏輯直接賦值到中斷標志寄存器。標志寄存器對于請求信號來(lái)說(shuō)是透明的。這樣當中斷請求被阻塞而沒(méi)有得到及時(shí)響應時(shí),將被丟失。換句話(huà)說(shuō),要使電平觸發(fā)的中斷被CPU響應并執行,必須保證外部中斷源口線(xiàn)的低電平維持到中斷被執行為止。因此當CPU正在執行同級中斷或更高級中斷期間,產(chǎn)生的外部中斷源(產(chǎn)生低電平)如果在該中斷執行完畢之前撤銷(xiāo)(變?yōu)楦唠娖剑┝?,那么將得不到響應,就如同沒(méi)發(fā)生一樣。同樣,當CPU在執行不可被中斷的指令(如RETI)時(shí),產(chǎn)生的電平觸發(fā)中斷如果時(shí)間太短,也得不到執行。
2)邊沿觸發(fā)方式時(shí),中斷標志寄存器鎖存了中斷請求。中斷口線(xiàn)上一個(gè)從高到低的跳變將記錄在標志寄存器中,直到CPU響應并轉向該中斷服務(wù)程序時(shí),由硬件自動(dòng)清除。因此當CPU正在執行同級中斷(甚至是外部中斷本身)或高級中斷時(shí),產(chǎn)生的外部中斷(負跳變)同樣將被記錄在中斷標志寄存器中。在該中斷退出后,將被響應執行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標志。
3)中斷標志可以手工清除。一個(gè)中斷如果在沒(méi)有得到響應之前就已經(jīng)被手工清除,則該中斷將被CPU忽略。就如同沒(méi)有發(fā)生一樣。
4)選擇電平觸發(fā)還是邊沿觸發(fā)方式應從系統使用外部中斷的目的上去考慮,而不是如許多資料上說(shuō)的根據中斷源信號的特性來(lái)取舍。比如,有的書(shū)上說(shuō)(《Keil C51使用技巧及實(shí)戰》),就有類(lèi)似的觀(guān)點(diǎn)。
評論