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

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

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

如何為一個(gè)PIC單片機(jī)編寫中斷服務(wù)程序

麥辣雞腿堡 ? 來源:Microchip微芯 ? 作者:Microchip微芯 ? 2023-01-22 15:16 ? 次閱讀

問:我應(yīng)該如何為一個(gè)PIC單片機(jī)編寫中斷服務(wù)程序?

答:僅僅是用一個(gè)'interrupt'關(guān)鍵詞聲明一個(gè)函數(shù)就好了。編譯器會把它放到合適的位置,并且會注意所有的寄存器保護(hù)和恢復(fù)。

這里有一個(gè)中檔PIC單片機(jī)使用中斷的例子;

#include

/*

  • Interrupt demo for PIC; wait for button press on RB0/INT,
    
  • turn on a relay on another port bit for a period of time.
    
  • For simplicity here, literal constants are used, usually these
    
  • should be calculated with compile-time arithmetic.
    

*/

static bit RELAY @ (unsigned)&PORTB*8+7;// 使用這個(gè)位來驅(qū)動一個(gè)繼電器

static unsigned int relay_timer; //繼電器驅(qū)動器的定時(shí)值

void

main(void)

{

RELAY = 1; // 確保繼電器在使能前是關(guān)閉的

TRISB = 0x3F; // Port B的第7、6位是輸出

T0CS = 0; // 定時(shí)器是以指令周期累加

T0IE = 1; // 使能TMR0溢出中斷

INTEDG = 0; // INT中斷是下降沿觸發(fā)

INTE = 1; // 使能INT中斷

GIE = 1; // 全局中斷使能

for(;;)

CLRWDT(); // 閑時(shí)喂一下狗

}

static void interrupt

isr(void) // 這里是中斷服務(wù)函數(shù)

// isr是函數(shù)名,并不重要,可任意命名

{

if(T0IF) { //如果是定時(shí)器0中斷

TMR0 -= 250; //重載定時(shí)器,每250uS中斷一次

T0IF = 0; //清中斷標(biāo)志位

if(relay_timer != 0) //繼電器定時(shí)到了嗎?

relay_timer--; //定時(shí)值減一

if(relay_timer == 0) //如果定時(shí)時(shí)間到了

RELAY = 1; //關(guān)閉繼電器

PORTB ^= 0x40;//翻轉(zhuǎn)一個(gè)端口來指示程序還是在正常工作的

}

if(INTF) { //有沒有一個(gè)按鍵按下?

RELAY = 0; //打開繼電器

relay_timer = 4000;//啟動定時(shí)器-4000個(gè)時(shí)間片=約1秒鐘

INTF = 0; //清中斷標(biāo)志位

}

}

(譯者注:建議在if條件中,同時(shí)檢查中斷標(biāo)志位和中斷使能位,如:if(T0IF && T0IE)。)

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

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635408
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49134
收藏 人收藏

    評論

    相關(guān)推薦

    如何與PIC單片機(jī)建立PICKit3程序編寫電路?

     在本文中,主要解釋如何與PIC單片機(jī)建立PICKit3程序編寫電路,以下圖電路為例,組裝在試驗(yàn)板上的程序
    的頭像 發(fā)表于 07-10 11:19 ?2633次閱讀
    如何與<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>建立PICKit3<b class='flag-5'>程序</b><b class='flag-5'>編寫</b>電路?

    pic單片機(jī)匯編程序實(shí)例

    以下是個(gè)簡單的PIC單片機(jī)匯編程序示例,這個(gè)程序將實(shí)現(xiàn)
    的頭像 發(fā)表于 12-14 11:01 ?1913次閱讀

    小白求助,求個(gè)PIC單片機(jī)中斷服務(wù)程序

    小白求助,求個(gè)PIC單片機(jī)中斷服務(wù)程序
    發(fā)表于 10-19 06:51

    PIC單片機(jī)引腳中斷程序的設(shè)計(jì)技巧

    PIC單片機(jī)引腳中斷程序的設(shè)計(jì)技巧   所有的中檔系列PIC單片機(jī),PORTB端口最
    發(fā)表于 10-30 08:07 ?1521次閱讀

    PIC單片機(jī)中斷總結(jié)

    PIC單片機(jī)中斷總結(jié) 與51或者其他系列的單片機(jī)相比,PIC單片機(jī)
    發(fā)表于 10-30 08:15 ?2813次閱讀

    PIC單片機(jī)程序設(shè)計(jì)基礎(chǔ)格式

    PIC單片機(jī)程序設(shè)計(jì)基礎(chǔ)格式 為了快速掌握PIC單片機(jī)程序的基本結(jié)構(gòu),這里給出
    發(fā)表于 05-17 09:07 ?952次閱讀

    PIC單片機(jī)循環(huán)程序實(shí)例

    在這里介紹種定時(shí)程序,說明循環(huán)程序PIC單片機(jī)上的應(yīng)用。筆者仍以PIC16F84
    發(fā)表于 04-26 10:25 ?3150次閱讀

    PIC8位單片機(jī)程序編寫方法

    PIC系列單片機(jī)的源程序是指PIC的助記符指令編寫程序(匯編語言
    發(fā)表于 06-27 13:43 ?2786次閱讀

    51單片機(jī)有幾個(gè)中斷?單片機(jī)中斷號對應(yīng)的中斷類型說明

    51單片機(jī)通常有5個(gè)中斷,當(dāng)中斷發(fā)生時(shí),程序會跳到相應(yīng)的中斷服務(wù)
    發(fā)表于 08-06 17:34 ?5次下載
    51<b class='flag-5'>單片機(jī)</b>有幾個(gè)<b class='flag-5'>中斷</b>?<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>中斷</b>號對應(yīng)的<b class='flag-5'>中斷</b>類型說明

    PIC單片機(jī)定時(shí)器的外設(shè)中斷的使用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是PIC單片機(jī)定時(shí)器的外設(shè)中斷的使用程序免費(fèi)下載。
    發(fā)表于 07-31 17:35 ?7次下載
    <b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>定時(shí)器的外設(shè)<b class='flag-5'>中斷</b>的使用<b class='flag-5'>程序</b>免費(fèi)下載

    在處理PIC單片機(jī)中斷服務(wù)程序時(shí)需要注意哪些問題

    PIC與51系列單片機(jī)個(gè)顯著的區(qū)別就是:PIC只有個(gè)中斷
    發(fā)表于 10-28 16:45 ?2658次閱讀
    在處理<b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>中斷</b><b class='flag-5'>服務(wù)</b><b class='flag-5'>程序</b>時(shí)需要注意哪些問題

    單片機(jī)程序如何編寫

    設(shè)計(jì)編寫單片機(jī)程序個(gè)漸進(jìn)的過程不可蹴而就,畢竟單片機(jī)
    的頭像 發(fā)表于 02-12 14:38 ?3.8w次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b>如何<b class='flag-5'>編寫</b>

    pic單片機(jī)程序

    個(gè)pic單片機(jī)c語言程序,同時(shí)用了串口接收中斷和定時(shí)中斷
    發(fā)表于 11-16 11:36 ?4次下載
    <b class='flag-5'>pic</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b>

    用C語言編寫PIC單片機(jī)適用程序

    單片機(jī)c語言的程序,最重要的點(diǎn)就是考慮到單片機(jī)的運(yùn)行內(nèi)存和實(shí)時(shí)性,因?yàn)?b class='flag-5'>單片機(jī)內(nèi)存小,且要求程序
    發(fā)表于 11-16 12:06 ?8次下載
    用C語言<b class='flag-5'>編寫</b><b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b>適用<b class='flag-5'>程序</b>

    PIC單片機(jī) 按鍵檢測識別

    目錄按鍵和PIC單片機(jī)、按鍵二、按鍵的物理連接與檢測三、PIC16F18854單片機(jī)按鍵檢測及顯示實(shí)驗(yàn)按鍵排布預(yù)期效果總體流程
    發(fā)表于 11-16 12:36 ?12次下載
    <b class='flag-5'>PIC</b><b class='flag-5'>單片機(jī)</b> 按鍵檢測識別