久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 中斷的原理和使用心得(一)

中斷的原理和使用心得(一)

作者: 時間:2016-11-25 來源:網絡 收藏
又是很長時間沒有寫東西了,感覺時間長不寫人都變懶了。其實,說實話:不是我不寫,我也在總結,單片機以前學過一次,都是這看一點,那看一點,沒有系統的學習。現在工作閑的發慌,總感覺在浪費青春,才想起自己還有個愛好。就想把單片機系統的學一遍。所以,我現在也是一邊學習、一邊總結,可以說我也是個十足的菜鳥,還不如你呢!
很多單片機初學者都會對中斷、定時/計數器、串口有些恐懼。原因有:
1.沒學之前被老鳥嚇。到,很多學單片機的新手問單片機難不難,就會有些老鳥故意嚇唬說中斷、定時器很難等等。
2.很多新手聽說難學,在編程時會極力避免使用中斷、定時器,以至于越不使用,越不會用,就越害怕使用。(其實我說的只是我自己遇到的一些,不必究其細節,目的只有一個,讓你在學習單片機之前放下恐懼)
本節先說說中斷的使用:
概念:中斷是為了使單片機具有對外部或內部隨機發生的事件實時處理而設置的,中斷功能的存在,很大程度上提高了單片機處理外部或內部事件的能力。(純屬抄襲,但就是這個理)
51單片機的中斷有:外部中斷INT0、外部中斷INT1、定時器T0、定時器T1
串行口中斷TI、RI
我就對其一一分析,可能分析的不到位,希望大家給予指點,因為我也是才學,也是自己總結的,不可能就正確。
1. 外部中斷INT0:對應單片機12引腳(P3^2口),只看名字就知道,處理外部事件的,因為它是外部中斷。它是如何處理外部事件呢?我用生活中實際的例子對應單片機的中斷操作說說,可能不是很恰當,但是,目的是說明問題。
例:你正在看書,突然手機鈴響了,你放下書去接電話。(這個例子都被一些出書的列舉的不愛用了,但我不只是就看書,電話鈴響了,接電話就完了)
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitd1=P1^0;
voiddelay(uintz);
voidmain()
{
EA=1;//開總中斷
EX0=1;//開外部中斷0
IT0=1;//下降沿觸發
while(1)
{
}
voidexter0()interrupt0
{
d1=0;
}
我用例子對應程序來分析:
EA=1;就是你開著手機,如果你都不開手機哪肯定不會影響到你看書了。
EX0=1;如果你手機是雙卡單待,相當于你SIM1卡開著。(即待機)
IT0=1;是下降沿觸發,就相當短信提醒,短信響一下就停了,然后你就會去看短 信來處理短信內容,短信內容就相當于你中斷要做的事情。

voidexter0()interrupt0
{
d1=0;
}  //點亮小燈程序,這就是中斷內容,就相當于你看短信。

每一句分析完了,我用例子寫個程序,更直白點:

#include
#defineuintunsignedint
#defineucharunsignedchar
sbitd1=P1^0; //前面的就沒必要說了吧!
voidmain()
{
打開手機;
打開手機SIM1卡:
短信提醒設為鈴聲,電話設為靜音;(注,電話設為靜音,意思是忽略電話的影響)
while(1)
{
你一直在看書;
}
voidexter0()interrupt0   短信處理程序
{
查看短信;
}

中斷INT1:就不說了,就是手機SIM1卡和SIM2卡的區別。

外部中斷INT0 不是對應著12引腳嗎:1。你打開中斷,2,設置觸發方式。剩下的事就是等待外部中斷的,只要12引腳有任何動靜,CPU都會根據情況去處理的。
舉例說明這句話:1.如果你設置下降沿觸發,則12引腳有個高電平到低電平的跳變,則中斷就會被執行。2.如果設置低電平觸發,則12引腳有底電平中斷才會執行,沒有中斷不會執行。

先寫到著,實在不知道這樣寫,會不會把人搞暈。。。。
我寫的這些只是簡單的應用,先不用去考慮什么中斷標志位什么的東西,因為那些動作是由硬件自動處理的,等到定時器,串口需要軟件處理時,再詳細說吧!


關鍵詞: 中斷原理使用心

評論


技術專區

關閉