51單片機(jī)的中斷控制
51系列單片機(jī)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套結(jié)構(gòu)。
現(xiàn)在很多兼容51的單片機(jī)已經(jīng)有4個(gè)優(yōu)先級(jí)(或更多)和更多的中斷源了。
---------------------
想要研究中斷的嵌套,應(yīng)該從中斷優(yōu)先級(jí)入手。
一些資料中,把有關(guān)中斷優(yōu)先級(jí)的中斷響應(yīng)原則,寫成如下三條:
1、CPU同時(shí)接收到幾個(gè)中斷申請(qǐng)時(shí),首先響應(yīng)優(yōu)先級(jí)級(jí)別最高的中斷請(qǐng)求;
2、正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷;
3、正在進(jìn)行的低優(yōu)先級(jí)中斷過(guò)程,能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。
中斷優(yōu)先級(jí)的設(shè)置,是在IP寄存器中進(jìn)行,IP稱為中斷優(yōu)先級(jí)控制寄存器。
把IP中的某位置為1,則相應(yīng)的中斷源為高優(yōu)先級(jí);為0,則為低優(yōu)先級(jí)。
當(dāng)把5個(gè)中斷源,劃分成兩個(gè)優(yōu)先級(jí)之后,它們的中斷程序之間,就可以呈現(xiàn)出嵌套的現(xiàn)象了。
根據(jù)前面所說(shuō)的中斷響應(yīng)原則,可以看出:
出現(xiàn)中斷嵌套的要求比較高,只有高優(yōu)先級(jí)的中斷源,才可以中斷正在進(jìn)行的低優(yōu)先級(jí)的中斷過(guò)程。
而同級(jí)別的中斷源,則不能互相中斷,不能形成中斷嵌套;低級(jí)別中斷申請(qǐng),就更不能中斷高級(jí)別中斷過(guò)程的了。
中斷的優(yōu)先級(jí),是個(gè)實(shí)現(xiàn)嵌套的關(guān)鍵因素。
---------------------
響應(yīng)中斷前,CPU首先要查詢各個(gè)中斷源的申請(qǐng)標(biāo)志。
當(dāng)各個(gè)中斷源的級(jí)別相同的時(shí)候,CPU的查詢次序是:
外部中斷0、定時(shí)/計(jì)數(shù)0、外部中斷1、定時(shí)/計(jì)數(shù)1 和 串行接口
這個(gè)次序稱為“自然優(yōu)先級(jí)”。
“自然優(yōu)先級(jí)”,并非是“優(yōu)先級(jí)”。
自然優(yōu)先級(jí)的不同,并不能引出中斷的嵌套現(xiàn)象,因?yàn)樗鼈兊?ldquo;優(yōu)先級(jí)”是相同的。
----------------------
根據(jù)前面所介紹的可知:
優(yōu)先級(jí),能夠影響中斷的嵌套;
自然優(yōu)先級(jí),只是CPU查詢的次序,不影響中斷的嵌套。
----------------------
在百度知道中,發(fā)現(xiàn)有些網(wǎng)友對(duì)此基本概念不很清楚。
網(wǎng)友用“自然優(yōu)先級(jí)”,代替了“優(yōu)先級(jí)”,來(lái)討論中斷嵌套的問(wèn)題,這個(gè)觀點(diǎn)是明顯錯(cuò)誤的。
為了澄清基本概念,做而論道特寫出本篇短文,觀點(diǎn)正確與否,希望各位網(wǎng)友留言討論。