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