衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在PIC16F877A微控制器中使用中斷

科技觀察員 ? 來源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2023-01-25 15:32 ? 次閱讀

在本教程中,我們將學習如何 PIC微控制器中使用外部中斷 ,以及為什么/在哪里需要它們。

所需材料:

  1. PIC16F877A 性能板
  2. 16x2 液晶顯示屏
  3. 按鈕
  4. 連接線
  5. 面包板
  6. 圖片套件 3

什么是中斷以及在哪里使用它們:

在介紹如何對PIC微控制器中斷進行編程之前,讓我們了解中斷實際上是什么以及我們需要在哪里使用它們。此外,微控制器中有很多類型的中斷,PIC16F877A大約有15種中斷。讓我們暫時不要將它們全部混淆到我們的腦海中。

所以!什么是微控制器中的中斷?

眾所周知,微控制器用于執行一組預定義(編程)激活,根據輸入觸發必要的輸出。但是,當您的微控制器忙于執行一段代碼時,可能會出現需要立即關注另一段代碼的緊急情況。另一段需要立即注意的代碼應被視為中斷。

例如:讓我們考慮您正在手機上玩自己喜歡的游戲,而手機內的控制器(假設)正忙于拋出您享受游戲所需的所有圖形。但是,突然你的女朋友撥打了你的號碼。現在,最糟糕的事情是您的手機控制器忽略了您的女朋友電話,因為您正忙于玩游戲。為了防止這種噩夢的發生,我們使用了一種稱為中斷的東西。

這些中斷將始終處于活動狀態,列出某些特定操作的發生,當它們發生時,它們執行一段代碼,然后返回正常功能。這段代碼稱為 中斷服務例程 (ISR)。 一個必須中斷的實際項目是“使用PIC微控制器的數字車速表和里程表電路

在微控制器中,有兩種主要 類型的中斷 。它們是外部中斷和內部中斷。內部中斷發生在微型控制器內部,用于執行任務,例如定時器中斷、ADC 中斷等。這些中斷由軟件觸發,分別完成定時器操作或ADC操作。

外部中斷是可以由用戶觸發的中斷。在這個程序中,我們將學習如何通過使用按鈕觸發中斷來 使用外部中斷 。我們將使用 LCD 顯示從 0 到 1000 遞增的數字,當觸發中斷時,我們應該從中斷服務例程 **ISR **通知它,然后繼續返回到遞增數字。

電路圖及說明:

1.png

使用PIC16F877中斷的電路圖如上圖所示。您只需將LCD連接到PIC,就像我們在接口LCD教程中所做的那樣。

現在要連接中斷引腳,我們應該查看數據表,以了解PIC的哪個引腳用于外部中斷。在我們的例子中,PIC16F877A 33^RD^引腳 RBO/INT 用于外部中斷。您不能使用此引腳以外的任何其他引腳。此電路圖的引腳連接如下表所示。

S.No: 引腳編號 引腳名稱 已連接到
1 21 RD2 液晶顯示器的 RS
2 22 RD3 液晶顯示器的E
3 27 RD4 液晶屏D4
4 28 RD5 液晶屏D5
5 29 太平洋地區技術 液晶屏D6
6 30 RD7 液晶屏D7
7 33 RBO/INT 按鈕

我們在端口 B 上啟用了內部上拉電阻,因此我們可以通過按鈕將 RB0 引腳直接接地。因此,每當該引腳變為低電平時,就會觸發中斷。

可以在面包板上進行連接,如下所示。

PIC 微控制器 PIC16F877A 中斷試驗板連接

如果您一直在學習我們的教程,您應該已經熟悉我在這里使用的這個 Perf 板。如果沒有,你不需要考慮太多,只需按照電路圖,你就會讓事情正常。

PIC微控制器中的中斷仿真

該項目的模擬是使用Proteus進行的。

1.png

模擬項目時,您應該會在LCD顯示屏上看到一系列數字遞增。這發生在主回路內,每當按下按鈕時,LCD都應顯示它已進入ISR。您可以在代碼中進行修改并嘗試在此處進行測試。

代碼說明:

可以在本教程末尾找到此項目的完整代碼。但是,該程序被分成重要的塊,并在下面解釋,以便您更好地理解。

像所有程序一樣,我們必須通過定義程序中使用的引腳的引腳配置來開始代碼。同樣在這里,我們需要定義我們使用RB0 / INT作為外部中斷引腳,而不是輸入或輸出引腳。下面的代碼行使能端口B上的內部上拉電阻,方法是使7^千^位為 0。

OPTION_REG = 0b00000000;

選項注冊

然后我們啟用全局/外設中斷,并聲明我們使用RB0作為外部中斷引腳。

GIE=1;          //Enable Global Interrupt

    PEIE=1;         //Enable the Peripheral Interrupt

    INTE = 1;       //Enable RB0 as external Interrupt pin

一旦RB0引腳被定義為外部中斷引腳,每次它變低時,外部中斷標志INTF將變為1,并且void中斷函數中的代碼將被執行,因為將調用中斷服務例程(ISR)。

void interrupt ISR_example()

{

        if (INTF==1) //External Interrupt detected

        {

            Lcd_Clear();

            Lcd_Set_Cursor(1,1);

            Lcd_Print_String("  Entered ISR");

           INTF = 0;          // clear the interrupt flag after done with it

           __delay_ms(2000);

            Lcd_Clear();

        }

}

如您所見,我將中斷函數命名為 ISR_example。您可以根據自己的意愿命名。在中斷函數中,我們將檢查 INTF 標志是否為高并執行所需的操作。完成例程后清除中斷標志非常重要。只有這樣,程序才會返回到 void 主函數。這種清算必須通過使用生產線的軟件來完成

INTF = 0;          // clear the interrupt flag after done with it

在主功能中,我們只需每 500 毫秒增加一個數字并將其顯示在 LCD 屏幕上。我們沒有任何特定的線路來檢查RB0引腳的狀態。中斷將始終保持活動狀態,每當按下按鈕時,它都會跳出空主線并執行 ISR 中的行。

Lcd_Set_Cursor(2,1);

        Lcd_Print_String("Inside Main Loop");

        Lcd_Set_Cursor(1,1);

        Lcd_Print_String("Number: ");

        Lcd_Print_Char(ch1+'0');

        Lcd_Print_Char(ch2+'0');

        Lcd_Print_Char(ch3+'0');

        Lcd_Print_Char(ch4+'0');

       

        __delay_ms(500);

        number++;

PIC16F877A 的工作中斷:

一旦您了解了 中斷的工作原理 ,您就可以在硬件上嘗試并擺弄它。這里給出的這個程序是一個非?;镜耐獠恐袛嗍纠皇窃?a target="_blank">檢測到中斷時改變LCD屏幕的顯示。

PIC16F877A 中斷的工作

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PIC16F877A
    +關注

    關注

    2

    文章

    43

    瀏覽量

    21864
  • PIC微控制器
    +關注

    關注

    0

    文章

    17

    瀏覽量

    7430
  • 外部中斷
    +關注

    關注

    1

    文章

    132

    瀏覽量

    15886
收藏 人收藏

    評論

    相關推薦

    將繼電器與PIC微控制器PIC16F877A連接的教程

    在本項目中,我們將繼電器與PIC微控制器PIC16F877A連接。繼電器是一種機械設備,用于從較低的電壓電平控制高電壓、大電流電器的“ON”或“OFF”。繼電器在兩個電壓電平之間提供隔
    的頭像 發表于 11-14 16:20 ?3508次閱讀
    將繼電器與<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b><b class='flag-5'>PIC16F877A</b>連接的教程

    如何使用PIC微控制器旋轉步進電機

    在本教程中,我們將步進電機與PIC微控制器PIC16F877A連接。
    發表于 11-15 17:25 ?1527次閱讀
    如何使用<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>旋轉步進電機

    如何使用PIC微控制器構建一個線路跟隨機器人

    線路跟隨機器人是一個簡單而迷人的機器人,適合大多數學生/業余愛好者建造。在本教程中,我們將學習線路跟隨機器人的工作原理以及如何使用 PIC 微控制器 PIC16F877A 構建一個。PIC16
    發表于 11-30 17:17 ?1656次閱讀
    如何使用<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>構建一個線路跟隨機器人

    PIC16F877A中斷優先級問題

    現在我需要通過串口來接收指令控制PIC16F877A的捕獲脈沖行為,可以做到的是:接收到開捕獲指令后,能正常開始捕獲脈沖,但是再發送關閉指令卻不能讓它停下來,通過KIT3發現,在捕獲的時候,串口不能
    發表于 06-06 21:18

    pic16f877a中文資料pdf

    pic16f877a中文資料
    發表于 07-15 13:20 ?4548次下載
    <b class='flag-5'>pic16f877a</b>中文資料pdf

    基于PIC16F877A的太陽能與市電互補照明系統控制器的設

    基于PIC16F877A的太陽能與市電互補照明系統控制器的設計 介紹了一款以單片機PIC16F877A控制核心的太陽能與市電互補照明系統控制器
    發表于 04-10 22:06 ?1374次閱讀
    基于<b class='flag-5'>PIC16F877A</b>的太陽能與市電互補照明系統<b class='flag-5'>控制器</b>的設

    PIC16F877A串口發送查詢方式

    PIC16F877A串口發送,查詢方式,就為了調出這個費了我一天時間,原來是串口芯片電壓問題,現總結如下
    發表于 09-01 11:03 ?10次下載
    <b class='flag-5'>PIC16F877A</b>串口發送查詢方式

    PIC16F877A串口芯片電壓問題

    PIC16F877A串口發送,查詢方式,就為了調出這個費了我一天時間,原來是串口芯片電壓問題,現總結如下
    發表于 09-01 11:15 ?9次下載
    <b class='flag-5'>PIC16F877A</b>串口芯片電壓問題

    PIC16F877A的T0定時制作的電子鐘程序

    經過努力,利用PIC16F877A的T0定時制作的電子鐘實驗成功!
    發表于 05-15 09:42 ?1942次閱讀

    PIC16F877A開發板 數碼管動態掃描實驗

    //****************電子園PIC16F877A開發板 數碼管動態掃描實驗****************//////mcu: PIC16F877A 4MHz //2010年12月
    發表于 11-16 19:51 ?13次下載
    <b class='flag-5'>PIC16F877A</b>開發板 數碼管動態掃描實驗

    PIC16F877A開發板 普通IO驅動74595實驗

    //*****************電子園PIC16F877A開發板 普通IO驅動74595實驗***************////PIC16F877A 實驗板////mcu
    發表于 11-16 19:51 ?13次下載
    <b class='flag-5'>PIC16F877A</b>開發板 普通IO驅動74595實驗

    PIC16F877A 看門狗定時實驗

    //*******************PIC16F877A 看門狗定時實驗******************* // //PORTA,PORTB,PORTC,PORTD,PORTE
    發表于 11-16 20:06 ?8次下載
    <b class='flag-5'>PIC16F877A</b> 看門狗定時<b class='flag-5'>器</b>實驗

    使用熱敏打印機連接PIC16F877A并使用輕觸開關實現打印的教程

    在本教程中,我們將熱敏打印機 CSN A1 與廣泛使用的 PIC 微控制器 PIC16F877A 連接。在本項目中,熱敏打印機連接在PIC16F87
    的頭像 發表于 11-04 15:10 ?2948次閱讀
    使用熱敏打印機連接<b class='flag-5'>PIC16F877A</b>并使用輕觸開關實現打印的教程

    何在PIC16F877A微控制器中使用EEPROM保存數據

    在本教程中,我們將了解使用 **PIC16F877A 微控制器中的 EEPROM** 保存數據是多么容易。在大多數實時項目中,我們可能必須保存一些數據,即使關閉電源也不應刪除這些數據。這聽起來像是一
    的頭像 發表于 01-25 15:39 ?2753次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>PIC16F877A</b><b class='flag-5'>微控制器</b><b class='flag-5'>中使</b>用EEPROM保存數據

    PIC16F877A開發板原理圖

    PIC16F877A開發板原理圖免費下載。
    發表于 03-21 15:47 ?12次下載
    真钱百家乐官网开户试玩| 博彩百家乐官网字谜总汇二丹东| 百家乐棋牌作弊器| 太阳城开户网| G3百家乐官网的玩法技巧和规则 | 威尼斯人娱乐城送| 百家乐官网赌博规律| 澳门百家乐单注下注| 百家乐官网视频游戏中心| 博必发百家乐的玩法技巧和规则 | 做生意适合放什么花招财| 富二代百家乐的玩法技巧和规则| 澳门百家乐官网娱乐城注册| 百家乐规| 百家乐官网tt赌场娱乐网规则 | 棋牌室转让| 任我赢百家乐官网软件| 大发888赌场网址| 百家乐投注玩多少钱| 永泰县| 赌百家乐容易的原| 百家乐官网玩法最多的娱乐城| 威尼斯人娱乐城真人赌博| 上海百家乐官网的玩法技巧和规则| 棋牌网| 澳门百家乐职业赌客| 百家乐官网台布兄弟| 威尼斯人娱乐城真钱赌博| 财神百家乐官网的玩法技巧和规则 | 百家乐官网在线赌场| 大发888线上投注| 百家乐两头压注| 网络百家乐赌场| 星期8百家乐的玩法技巧和规则| 百家乐官网vshow| 现金游戏网| 赌神网百家乐的玩法技巧和规则| 网络百家乐官网金海岸破解软件| 1737棋牌游戏中心| 正规百家乐游戏下载| 二代百家乐官网破解|