外部中斷可以分為電平觸發(fā)和邊緣觸發(fā)兩種,那么這兩種中斷有什么區(qū)別,我們今天講解下。
1、什么是中斷
CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生);
CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));
待CPU將事件B處理完畢后,再回到原來(lái)事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過(guò)程稱(chēng)為中斷。
通俗點(diǎn)說(shuō):你正在家里做家務(wù),突然有人來(lái)找你,打斷了你的進(jìn)程,在你們交談完之后,你就又回去繼續(xù)進(jìn)行你的家務(wù)活,這其中被打斷的過(guò)程,就叫做中斷,而在中斷結(jié)束之后,你則會(huì)繼續(xù)進(jìn)行本來(lái)應(yīng)該做的事情。
高低電平觸發(fā):
低電平觸發(fā):
低電平觸發(fā)中斷顧名思義,就是檢測(cè)到引腳為低電平就觸發(fā),從而進(jìn)入中斷函數(shù)中處理這個(gè)中斷,并且在高或低電平保持的時(shí)間內(nèi)持續(xù)觸發(fā),假設(shè)是低電平觸發(fā),只要引腳為低電平時(shí)間內(nèi)中斷一直有效,那么就會(huì)一直進(jìn)入中斷,直到電平變化為高電平。
高電平觸發(fā):
則是 檢測(cè)為高電平就觸發(fā),其余與低電平觸發(fā)相同
注意事項(xiàng):
1.電平觸發(fā)中斷,如果在電平?jīng)]有恢復(fù)之前就退出中斷程序,那么會(huì)在退出后又再次進(jìn)入中斷。只要不退出是不會(huì)重復(fù)觸發(fā)的。
也就是重復(fù)觸發(fā)只有在退出中斷后才會(huì)再次觸發(fā),不用擔(dān)心這次還沒(méi)進(jìn)行完,中斷已經(jīng)重新觸發(fā)的情況。
2.低電平觸發(fā)是即時(shí)的,當(dāng)外部中斷信號(hào)撤消時(shí),中斷申請(qǐng)信號(hào)隨之消失。如果在外部中斷信號(hào)申請(qǐng)期間,CPU來(lái)不及響應(yīng)此中斷,那么有可能這次中斷申請(qǐng)就漏掉了。也就是說(shuō)假設(shè)低/高電平的時(shí)間很短。CPU沒(méi)來(lái)得及相應(yīng),那么這次的電平中斷申請(qǐng)就可能不會(huì)檢測(cè)到。
3.如果想要電平觸發(fā)中斷也只進(jìn)行一次,通常的做法是在中斷退出前關(guān)閉中斷,等后面需要的時(shí)候再打開(kāi)。
邊沿觸發(fā):
這里要先了解下:
從低電平到高電平, 叫做上升
從高電平到低電平, 叫做下降
上升沿觸發(fā)
數(shù)字電平從低電平(數(shù)字“0”)變?yōu)楦唠娖剑〝?shù)字“1”)的那一瞬間叫作上升沿。上升沿觸發(fā)是當(dāng)信號(hào)有上升沿時(shí)的開(kāi)關(guān)動(dòng)作,當(dāng)電位由低變高而觸發(fā)輸出變化的就叫上升沿觸發(fā)。也就是當(dāng)測(cè)到的信號(hào)電位是從低到高也就是上升時(shí)就觸發(fā),叫做上升沿觸發(fā)。
下降沿觸發(fā)
數(shù)字電路中,數(shù)字電平從高電平(數(shù)字“1”)變?yōu)榈碗娖剑〝?shù)字“0”)的那一瞬間叫作下降沿。下降沿觸發(fā)是當(dāng)信號(hào)有下降沿時(shí)的開(kāi)關(guān)動(dòng)作,當(dāng)電位由高變低而觸發(fā)輸出變化的就叫下降沿觸發(fā)。也就是當(dāng)測(cè)到的信號(hào)電位是從高到低也就是下降時(shí)就觸發(fā),叫做下降沿觸發(fā)。
那么我們可以很好的理解兩種觸發(fā):
上升沿觸發(fā) 就是當(dāng)電壓從低變高時(shí)觸發(fā)中斷
下降沿觸發(fā) 就是當(dāng)電壓從高變低時(shí)觸發(fā)中斷
當(dāng)然,上升沿與下降沿檢測(cè)的是電平變化的一瞬間,就會(huì)產(chǎn)生中斷,這個(gè)時(shí)間是us級(jí)別的,但是如果中斷引腳檢測(cè)到一直保持低/高電平,則無(wú)法產(chǎn)生下次中斷,也就是中斷只會(huì)觸發(fā)一次,只有在下次電平發(fā)生變化時(shí)才會(huì)重新觸發(fā)中斷。
注意事項(xiàng):
1、邊沿觸發(fā)就是單片機(jī)在上一次機(jī)器周期內(nèi),檢測(cè)到中斷引腳口為高電平,這一次機(jī)器周期內(nèi)檢測(cè)到為低電平,則會(huì)申請(qǐng)產(chǎn)生中斷,所以為us級(jí)別。
2、下降沿觸發(fā)是鎖存中斷信號(hào)的,由D觸發(fā)器記憶,意即:即使當(dāng)時(shí)CPU來(lái)不及響應(yīng)中斷,外部中斷信號(hào)撤消后,由于D觸發(fā)器的記憶作用,消失的中斷信號(hào)仍然有效,直到中斷被響應(yīng)并進(jìn)入中斷ISR,記憶的中斷信號(hào)才會(huì)由硬件清除。這也是為什么邊沿觸發(fā)只能觸發(fā)一次的原因。
3、對(duì)于單片機(jī)的中斷引腳,如果你另一端接的是VCC 則需要設(shè)置成上升沿或者高電平觸發(fā) 如果你接的是GND 就可以設(shè)置成下降沿或者低電平觸發(fā)。
區(qū)別:
我們可以理解,電平觸發(fā)在你一直按著按鍵的時(shí)候會(huì)一直進(jìn)入中斷,邊沿觸發(fā)則是只會(huì)觸發(fā)一次,再次按下才會(huì)重新觸發(fā),這就給我們不同的應(yīng)用功能提供了選擇,使得我們可以在不同個(gè)工作下選擇適合的模式,邊沿觸發(fā)適用于對(duì)對(duì)時(shí)間要求高的,比如中斷中有計(jì)數(shù)之類(lèi)的(GATE門(mén)控位置1時(shí)),而電平觸發(fā)則適合報(bào)警裝置,
51單片機(jī)的具體講解與實(shí)現(xiàn):
在51中,為了方便區(qū)分兩種方式,用IT0/IT1,將低電平觸發(fā)和下降沿觸發(fā)這兩種方式轉(zhuǎn)化成對(duì)應(yīng)的信號(hào):IT0/IT1的高電平和低電平,IT0/IT1高電平則為下降沿觸發(fā),IT0/IT1低電平則為低電平觸發(fā)
IT0=1;//跳變沿出發(fā)方式(下降沿)
IT0=0;//電平觸發(fā)
而在有中斷觸發(fā)之后,是否允許進(jìn)行該中斷,則對(duì)應(yīng)的轉(zhuǎn)換為 EX0 EX1的高低電平來(lái)實(shí)現(xiàn)
EX0 EX1為高電平則允許中斷,EX0 EX1為低電平則不允許中斷
EX1=1;//打開(kāi)INT1的中斷允許
EX1=0;//關(guān)閉INT1的中斷允許
而我們的外部中斷,定時(shí)器中斷,串口中斷,等等,都只是中斷的一個(gè)分支,在打開(kāi)分支之后,相對(duì)應(yīng)的要打開(kāi)“總閘” EA
EA的作用相當(dāng)于一個(gè)”總閘“,而EX0 EX1只是支線(xiàn)上的一個(gè)開(kāi)關(guān) ,再打開(kāi)分支開(kāi)關(guān)之后,需要打開(kāi)總開(kāi)關(guān),才能夠進(jìn)行中斷
簡(jiǎn)單來(lái)說(shuō) ,EA等于告訴單片機(jī)是否可以進(jìn)行中斷這個(gè)操作,而EX0 EX1等于是否允許外部觸發(fā)中斷進(jìn)行,
EA=1;//打開(kāi)總中斷
EA=0;//關(guān)閉總中斷
在允許中斷操作進(jìn)行之后,如果有好幾個(gè)中斷應(yīng)該怎么怎么辦呢,如果誰(shuí)也不服誰(shuí),都搶著說(shuō)我先,那么MCU估計(jì)沒(méi)兩天就罷工告竭了,這時(shí)候便需要設(shè)置中斷優(yōu)先級(jí),告訴每個(gè)中斷誰(shuí)應(yīng)該先,誰(shuí)應(yīng)該后,大家禮尚往來(lái),系統(tǒng)才能正常工作 當(dāng)然在51中有著一個(gè)默認(rèn)的優(yōu)先級(jí),依次是:外中斷0,定時(shí)器0,外中斷1,定時(shí)器1,串口 有多個(gè)中斷時(shí),會(huì)先進(jìn)行前面的中斷
void函數(shù)名() interrupt 2 using 工作組 //外部中斷1的中斷函數(shù)
{undefined
//吧啦吧啦代碼
}
interrupt后面跟的數(shù)字代表使用哪一個(gè)中斷通道,
0 外部中斷0
1 定時(shí)器0
2 外部中斷1
3 定時(shí)器1
4 串行中斷
工作組一般不用設(shè)置,在程序編譯時(shí)會(huì)自動(dòng)分配
這樣子外部觸發(fā)中斷的配置就配置好了,其他的中斷配置和它都是類(lèi)似的,同學(xué)們學(xué)會(huì)這個(gè)51的中斷基本就可以舉一反三,有一個(gè)更好的認(rèn)識(shí)
低電平觸發(fā):
在51中:低電平觸發(fā)是當(dāng)管腳INTO/INT1(P3.2/P3,3)為低電平時(shí),被單片機(jī)檢測(cè)到后,就認(rèn)為有中斷請(qǐng)求,EX0/EX1置高電平,向CPU發(fā)出中斷請(qǐng)求;則進(jìn)入中斷
下降沿觸發(fā):
邊沿觸發(fā)就是當(dāng)管腳INTO/INT1有由高電平變低電平的過(guò)程時(shí),就認(rèn)為有中斷請(qǐng)求,EX0/EX1置高電平,向CPU發(fā)出中斷請(qǐng)求,進(jìn)入中斷。
審核編輯 :李倩
-
單片機(jī)
+關(guān)注
關(guān)注
6039文章
44583瀏覽量
636526 -
電平
+關(guān)注
關(guān)注
5文章
361瀏覽量
39939 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3251瀏覽量
115024
原文標(biāo)題:外部中斷----高低電平觸發(fā),(邊沿觸發(fā))上升沿觸發(fā)和下降沿觸發(fā)區(qū)別
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論