0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

了解什么是中斷程序和實(shí)現(xiàn)中斷的步驟

2oON_changxuemc ? 來源:未知 ? 作者:工程師郭婷 ? 2018-06-30 11:54 ? 次閱讀

什么是中斷程序呢?形象的生活比喻就比如你現(xiàn)在這在看我的文章,突然你的朋友喊你一起去烤地瓜,這時(shí)候你就中斷了看文章和朋友烤地瓜去了,烤完地瓜之后你又回來看文章??镜毓线@件事就好比中斷程序,他中斷了你看文章這件事。在程序方面來說 當(dāng)CPU在執(zhí)行一個(gè)程序的時(shí)候,突然產(chǎn)生了中斷事件CPU就去執(zhí)行中斷程序了,當(dāng)執(zhí)行完成后CPU又回來執(zhí)行原先的程序。

中斷事件

什么是中斷事件,就是引起中斷的事件。對(duì)于單片機(jī)來說這些事件是多種多樣的。比如 說一個(gè)按鍵按下,一定的時(shí)間到了,一串?dāng)?shù)據(jù)發(fā)送完畢,或接收完一個(gè)數(shù)據(jù)。

講到中斷不得不講講和中斷相對(duì)的 查詢。其實(shí)不管是按鍵按下 還是 時(shí)間到,還是數(shù)據(jù)發(fā)送完畢,這些事實(shí)上都可以用查詢的方式辦到。比如 你是經(jīng)理 如果你想知道屬下任務(wù)完成了沒有 一種方式就是去詢問屬下,任務(wù)完成沒有。早上沒完成,下午在問。下午沒完成第二天再問。。。。一直到完成為止 這種方式就相當(dāng)于查詢的方式,另一種就是然屬下完成任務(wù)好直接匯報(bào),在下屬執(zhí)行任務(wù)的期間你無需去打撓下屬,當(dāng)下屬任務(wù)完成后就第一時(shí)間向你匯報(bào),這種方式就好像中斷。

查詢方式:缺點(diǎn)就是可能會(huì)大量浪費(fèi)CPU的時(shí)間,不斷去查詢。如果事情不多還好,可是一旦事情多了會(huì)明顯感到運(yùn)行速度變慢。

中斷方式:可以用在對(duì)時(shí)間和響應(yīng)速度有要求的場(chǎng)合。

具體有哪些事件會(huì)引起中斷 可以看

1,中斷控制寄存器INTCON

2,外設(shè)中斷允許寄存器 PIEX 注 : X可以是1 2 3 4.。。。不同型號(hào)的單片機(jī)數(shù)目不同

3,外設(shè)中斷標(biāo)志寄存器 PIRX 注: X可以是1 2 3 4.。。。不同型號(hào)的單片機(jī)數(shù)目不同

INTCON 中斷控制寄存器講解:

1開啟或關(guān)閉 全體的中斷功能(GIE)

2開啟或關(guān)閉全體外設(shè)的中斷功能(PEIE)外設(shè)就是在外設(shè)中斷允許/標(biāo)志寄存器里面所寫的設(shè)備。

3開啟一些中斷事件。

PIEX 與 PIRX 是相互對(duì)應(yīng)的如:當(dāng)把PIE1的TMR1IE設(shè)置為1 定時(shí)器timr1將開啟中斷。等到TMR1定時(shí)器溢出后,則會(huì)在PIR1的TMRIF將為1,并且執(zhí)行中斷程序。

實(shí)例講解:

我們把上一講的《PIC單片機(jī)之定時(shí)器》中的實(shí)例修改成中斷方式 實(shí)現(xiàn) 每隔 50MS亮起LED,每隔50MS滅掉LED。

/*開發(fā)環(huán)境MPLAB X IDE 芯片型號(hào)PIC16LF1823*/

#include

__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON

&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//這個(gè)要放到上一行去

__CONFIG(PLLEN_OFF&LVP_OFF) ;

#define LED LATA5

void init_fosc(void)

{

OSCCON= 0x68;

}

void init_gpio(void)

{

PORTA = 0;

LATA = 0;

ANSELA = 0;

TRISAbits.TRISA5=0;

}

void init_timer0(void)

{

OPTION_REG=0x87;

}

void interrupt isr(void)//中斷程序,interrupt是個(gè)關(guān)鍵字說明該函數(shù),是中斷函數(shù)。

{

LED = ~LED;//改變LED的狀態(tài)

INTCONbits.TMR0IF=0;//清零中斷標(biāo)志位 如果在離開中斷程序前沒有清零,程序?qū)⒉煌5闹袛唷?/p>

TMR0=61;//給TMR0付初始值61 ,開始下一個(gè)50ms計(jì)時(shí)做準(zhǔn)備。

//中斷函數(shù)結(jié)束 返回主函數(shù)。哪里來回 回那里去,也就是回到主函數(shù)的while(1);處

}

int main(int argc, char** argv)

{

init_fosc();

init_gpio();

init_timer0();

INTCONbits.GIE=1; //開啟總中斷

INTCONbits.TMR0IF=0;//清零TMR0溢出中斷標(biāo)志位

INTCONbits.TMR0IE=1;//開啟TMR0溢出中斷

TMR0=61;

while(1);//主函數(shù) 在此什么都沒做一直在死循環(huán)。但等到50ms時(shí)間到了TMR0將會(huì)溢出,程序就會(huì)跳到void interrupt isr(void)處執(zhí)行。

}

理清下中斷初始設(shè)置大致的步驟

1 ,開啟總中斷,開啟外設(shè)中斷。INTCONbits.GIE=1; INTCONbits.PEIE=1;其實(shí)即使沒用到外設(shè)開啟也無妨。

2 ,清楚相應(yīng)中斷的標(biāo)志位。如INTCONbits.TMR0IF=0;

3 ,開啟相應(yīng)中斷。如INTCONbits.TMR0IE=1;

中斷函數(shù)/程序 中要注意的就是 清零相應(yīng)的中斷標(biāo)志位 如INTCONbits.TMR0IF=0; 否則單片機(jī)會(huì)認(rèn)為中斷未被執(zhí)行 則一直中斷。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 中斷程序
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    8717
  • 控制寄存器
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    11505

原文標(biāo)題:pic單片機(jī)之中斷程序(附實(shí)例)

文章出處:【微信號(hào):changxuemcu,微信公眾號(hào):暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F407 外部中斷配置步驟

    介紹STM32F407外部中斷配置步驟,以按鍵為例,實(shí)現(xiàn)外部中斷配置,使用按鍵觸發(fā)中斷進(jìn)行LED燈控制。
    的頭像 發(fā)表于 07-06 14:31 ?2035次閱讀
    STM32F407 外部<b class='flag-5'>中斷</b>配置<b class='flag-5'>步驟</b>

    RISC-V的中斷處理 中斷操作三個(gè)步驟

    中斷操作三個(gè)步驟: 1、中斷初始化 2、trap處理 3、用戶中斷處理
    的頭像 發(fā)表于 05-20 16:38 ?1311次閱讀

    中斷程序設(shè)計(jì)

    實(shí) 驗(yàn) 五  軟中斷程序設(shè)計(jì) 一、實(shí)驗(yàn)?zāi)康?nbsp;   通過對(duì)軟中斷程序的編寫和調(diào)試,掌握IBM-PC系列機(jī)的軟
    發(fā)表于 09-28 23:26 ?2739次閱讀
    軟<b class='flag-5'>中斷</b><b class='flag-5'>程序</b>設(shè)計(jì)

    vxworks中斷服務(wù)程序

    中斷服務(wù)程序用來處理來自硬件的中斷,是設(shè)備驅(qū)動(dòng)程序的重要組成部分。為及時(shí)響應(yīng)外部中斷,防止中斷
    發(fā)表于 06-27 11:09 ?1431次閱讀

    中斷是什么?STM32中斷系統(tǒng)介紹和中斷配置步驟資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是中斷是什么?STM32中斷系統(tǒng)介紹和中斷配置步驟資料免費(fèi)下載。
    發(fā)表于 10-11 08:00 ?5次下載
    <b class='flag-5'>中斷</b>是什么?STM32<b class='flag-5'>中斷</b>系統(tǒng)介紹和<b class='flag-5'>中斷</b>配置<b class='flag-5'>步驟</b>資料免費(fèi)下載

    STM32單片機(jī)實(shí)現(xiàn)外部中斷步驟及方法

    和配置NVIC一樣,這也是EXTI配置的一般步驟:清除相應(yīng)中斷線標(biāo)志位(這個(gè)很重要,剛開始一直沒找到這個(gè)問題),聯(lián)結(jié)端口與中斷線(也可以在GPIO初始化時(shí)配置),選擇中斷線,設(shè)置
    發(fā)表于 11-20 15:46 ?2.4w次閱讀
    STM32單片機(jī)<b class='flag-5'>實(shí)現(xiàn)</b>外部<b class='flag-5'>中斷</b>的<b class='flag-5'>步驟</b>及方法

    了解linux的中斷機(jī)制?

    中斷是指在CPU正常運(yùn)行期間,由于內(nèi)外部事件或由程序預(yù)先安排的事件引起的CPU暫時(shí)停止正在運(yùn)行的程序,轉(zhuǎn)而為該內(nèi)部或外部事件或預(yù)先安排的事件服務(wù)的程序中去,服務(wù)完畢后再返回去繼續(xù)運(yùn)行被
    發(fā)表于 05-05 15:30 ?732次閱讀

    中斷時(shí)間間隔的中斷服務(wù)程序實(shí)現(xiàn)免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是中斷時(shí)間間隔的中斷服務(wù)程序實(shí)現(xiàn)免費(fèi)下載。
    發(fā)表于 08-06 17:34 ?1次下載
    <b class='flag-5'>中斷</b>時(shí)間間隔的<b class='flag-5'>中斷</b>服務(wù)<b class='flag-5'>程序</b><b class='flag-5'>實(shí)現(xiàn)</b>免費(fèi)下載

    中斷系統(tǒng)詳解、外部中斷

    圖:允許中斷:配置中斷方式:編寫中斷處理函數(shù):5個(gè)中斷源的中斷入口及中斷級(jí)別:
    發(fā)表于 11-22 12:51 ?14次下載
    <b class='flag-5'>中斷</b>系統(tǒng)詳解、外部<b class='flag-5'>中斷</b>

    定時(shí)器中斷實(shí)現(xiàn)步驟及實(shí)例筆記

    定時(shí)器中斷實(shí)現(xiàn)步驟使能定時(shí)器時(shí)鐘。 RCC_APB1PeriphClockCmd();初始化定時(shí)器,配置ARR,PSC。 TIM_TimeBaseInit();開啟定時(shí)器
    發(fā)表于 11-23 18:06 ?13次下載
    定時(shí)器<b class='flag-5'>中斷</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>步驟</b>及實(shí)例筆記

    中斷指令及程序的講解

    首先要理解中斷,必須知道PLC程序的三大構(gòu)體,主程序、子程序、中斷程序,其中
    的頭像 發(fā)表于 05-22 14:35 ?5069次閱讀
    <b class='flag-5'>中斷</b>指令及<b class='flag-5'>程序</b>的講解

    arm中斷是怎么實(shí)現(xiàn)

    arm中斷是怎么實(shí)現(xiàn)的? 首先,了解什么是中斷。中斷是指在CPU執(zhí)行某個(gè)程序時(shí),突然發(fā)生的一些事
    的頭像 發(fā)表于 09-05 16:22 ?1114次閱讀

    ARM中的異常中斷是如何實(shí)現(xiàn)進(jìn)入中斷程序的?如何進(jìn)入呢?

    ARM中的異常中斷是如何實(shí)現(xiàn)進(jìn)入中斷程序的?如何進(jìn)入呢? 在計(jì)算機(jī)系統(tǒng)中,異常和中斷是兩個(gè)常見的概念。 在ARM中,異常和
    的頭像 發(fā)表于 10-19 16:36 ?1074次閱讀

    STM32如何配置外部中斷?STM32外部中斷配置步驟

    STM32如何配置外部中斷?STM32外部中斷配置步驟? 作為一款現(xiàn)代化的微控制器,STM32系列芯片在各種應(yīng)用場(chǎng)合中廣泛應(yīng)用。其中最常見的應(yīng)用是外部中斷。本文將詳細(xì)介紹如何在STM3
    的頭像 發(fā)表于 10-26 17:47 ?3756次閱讀

    CPU中斷程序:從硬件看什么是中斷?

    CPU響應(yīng)中斷轉(zhuǎn)去執(zhí)行中斷服務(wù)程序前,需要把被中斷程序的現(xiàn)場(chǎng)信息保存起來,以便執(zhí)行完中斷服務(wù)
    發(fā)表于 03-26 11:36 ?4070次閱讀
    CPU<b class='flag-5'>中斷</b><b class='flag-5'>程序</b>:從硬件看什么是<b class='flag-5'>中斷</b>?