PIC單片機(jī)之中斷程序
什么是中斷程序呢?
形象的生活比喻就比如你現(xiàn)在這在看我的文章,突然你的朋友喊你一起去烤地瓜,這時候你就中斷了看文章和朋友烤地瓜去了,烤完地瓜之后你又回來看文章??镜毓线@件事就好比中斷程序,他中斷了你看文章這件事。在程序方面來說 當(dāng)CPU在執(zhí)行一個程序的時候,突然產(chǎn)生了中斷事件CPU就去執(zhí)行中斷程序了,當(dāng)執(zhí)行完成后CPU又回來執(zhí)行原先的程序。
什么是中斷事件,就是引起中斷的事件。對于單片機(jī)來說這些事件是多種多樣的。比如 說一個按鍵按下,一定的時間到了,一串?dāng)?shù)據(jù)發(fā)送完畢,或接收完一個數(shù)據(jù)。
講到中斷不得不講講和中斷相對的 查詢。其實不管是按鍵按下 還是 時間到,還是數(shù)據(jù)發(fā)送完畢,這些事實上都可以用查詢的方式辦到。比如 你是經(jīng)理 如果你想知道屬下任務(wù)完成了沒有 一種方式就是去詢問屬下,任務(wù)完成沒有。早上沒完成,下午在問。下午沒完成第二天再問。。。。一直到完成為止 這種方式就相當(dāng)于查詢的方式,另一種就是然屬下完成任務(wù)好直接匯報,在下屬執(zhí)行任務(wù)的期間你無需去打撓下屬,當(dāng)下屬任務(wù)完成后就第一時間向你匯報,這種方式就好像中斷。
查詢方式:缺點就是可能會大量浪費CPU的時間,不斷去查詢。如果事情不多還好,可是一旦事情多了會明顯感到運行速度變慢。
中斷方式:可以用在對時間和響應(yīng)速度有要求的場合。
具體有哪些事件會引起中斷 可以看
1,中斷控制寄存器INTCON
2,外設(shè)中斷允許寄存器 PIEX 注 : X可以是1 2 3 4.。。。不同型號的單片機(jī)數(shù)目不同
3,外設(shè)中斷標(biāo)志寄存器 PIRX 注: X可以是1 2 3 4.。。。不同型號的單片機(jī)數(shù)目不同
INTCON 中斷控制寄存器講解:
1開啟或關(guān)閉 全體的中斷功能(GIE)
2開啟或關(guān)閉全體外設(shè)的中斷功能(PEIE)外設(shè)就是在外設(shè)中斷允許/標(biāo)志寄存器里面所寫的設(shè)備。
3開啟一些中斷事件。
PIEX 與 PIRX 是相互對應(yīng)的如:當(dāng)把PIE1的TMR1IE設(shè)置為1 定時器timr1將開啟中斷。等到TMR1定時器溢出后,則會在PIR1的TMRIF將為1,并且執(zhí)行中斷程序。
實例講解:
我們把上一講的《PIC單片機(jī)之定時器》中的實例修改成中斷方式 實現(xiàn) 每隔 50MS亮起LED,每隔50MS滅掉LED。
/*開發(fā)環(huán)境MPLAB X IDE 芯片型號PIC16LF1823*/
#include
__CONFIG(FOSC_INTOSCWDTE_OFFPWRTE_ONMCLRE_OFFCP_ONCPD_OFFBOREN_ON
CLKOUTEN_OFFIESO_ONFCMEN_ON);//這個要放到上一行去
__CONFIG(PLLEN_OFFLVP_OFF) ;
#define LED LATA5
void init_fosc(void)
{
OSCCON= 0x68;
}
void init_gpio(void)
{
PORTA = 0;
LATA = 0;
ANSELA = 0;
TRISAbits.TRISA5=0;
}
評論