中斷的原理和使用心得(一)
很多單片機初學(xué)者都會對中斷、定時/計數(shù)器、串口有些恐懼。原因有:
1.沒學(xué)之前被老鳥嚇。到,很多學(xué)單片機的新手問單片機難不難,就會有些老鳥故意嚇唬說中斷、定時器很難等等。
本節(jié)先說說中斷的使用:
概念:中斷是為了使單片機具有對外部或內(nèi)部隨機發(fā)生的事件實時處理而設(shè)置的,中斷功能的存在,很大程度上提高了單片機處理外部或內(nèi)部事件的能力。(純屬抄襲,但就是這個理)
51單片機的中斷有:外部中斷INT0
串行口中斷TI
我就對其一一分析,可能分析的不到位,希望大家給予指點,因為我也是才學(xué),也是自己總結(jié)的,不可能就正確。
1. 外部中斷INT0
例:你正在看書,突然手機鈴響了,你放下書去接電話。(這個例子都被一些出書的列舉的不愛用了,但我不只是就看書,電話鈴響了,接電話就完了)
#include
#define
#define
sbit
void
void
{
EA=1;//開總中斷
EX0=1;//開外部中斷0
IT0=1;//下降沿觸發(fā)
while(1)
{
}
void
{
d1=0;
}
我用例子對應(yīng)程序來分析:
EA=1;就是你開著手機,如果你都不開手機哪肯定不會影響到你看書了。
EX0=1;如果你手機是雙卡單待,相當于你SIM1卡開著。(即待機)
IT0=1;是下降沿觸發(fā),就相當短信提醒,短信響一下就停了,然后你就會去看短 信來處理短信內(nèi)容,短信內(nèi)容就相當于你中斷要做的事情。
void
{
d1=0;
} //點亮小燈程序,這就是中斷內(nèi)容,就相當于你看短信。
每一句分析完了,我用例子寫個程序,更直白點:
#include
#define
#define
sbit
void
{
打開手機;
打開手機SIM1卡:
短信提醒設(shè)為鈴聲,電話設(shè)為靜音;(注,電話設(shè)為靜音,意思是忽略電話的影響)
while(1)
{
你一直在看書;
}
void
{
查看短信;
}
中斷INT1:就不說了,就是手機SIM1卡和SIM2卡的區(qū)別。
外部中斷INT0 不是對應(yīng)著12引腳嗎:1。你打開中斷,2,設(shè)置觸發(fā)方式。剩下的事就是等待外部中斷的,只要12引腳有任何動靜,CPU都會根據(jù)情況去處理的。
舉例說明這句話:1.如果你設(shè)置下降沿觸發(fā),則12引腳有個高電平到低電平的跳變,則中斷就會被執(zhí)行。2.如果設(shè)置低電平觸發(fā),則12引腳有底電平中斷才會執(zhí)行,沒有中斷不會執(zhí)行。
先寫到著,實在不知道這樣寫,會不會把人搞暈。。。。
我寫的這些只是簡單的應(yīng)用,先不用去考慮什么中斷標志位什么的東西,因為那些動作是由硬件自動處理的,等到定時器,串口需要軟件處理時,再詳細說吧!
評論