91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

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

科技觀察員 ? 來(lái)源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2023-01-25 15:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

所需材料:

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

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

在介紹如何對(duì)PIC微控制器中斷進(jìn)行編程之前,讓我們了解中斷實(shí)際上是什么以及我們需要在哪里使用它們。此外,微控制器中有很多類型的中斷,PIC16F877A大約有15種中斷。讓我們暫時(shí)不要將它們?nèi)炕煜轿覀兊哪X海中。

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

眾所周知,微控制器用于執(zhí)行一組預(yù)定義(編程)激活,根據(jù)輸入觸發(fā)必要的輸出。但是,當(dāng)您的微控制器忙于執(zhí)行一段代碼時(shí),可能會(huì)出現(xiàn)需要立即關(guān)注另一段代碼的緊急情況。另一段需要立即注意的代碼應(yīng)被視為中斷。

例如:讓我們考慮您正在手機(jī)上玩自己喜歡的游戲,而手機(jī)內(nèi)的控制器(假設(shè))正忙于拋出您享受游戲所需的所有圖形。但是,突然你的女朋友撥打了你的號(hào)碼?,F(xiàn)在,最糟糕的事情是您的手機(jī)控制器忽略了您的女朋友電話,因?yàn)槟τ谕嬗螒?。為了防止這種噩夢(mèng)的發(fā)生,我們使用了一種稱為中斷的東西。

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

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

外部中斷是可以由用戶觸發(fā)的中斷。在這個(gè)程序中,我們將學(xué)習(xí)如何通過(guò)使用按鈕觸發(fā)中斷來(lái) 使用外部中斷 。我們將使用 LCD 顯示從 0 到 1000 遞增的數(shù)字,當(dāng)觸發(fā)中斷時(shí),我們應(yīng)該從中斷服務(wù)例程 **ISR **通知它,然后繼續(xù)返回到遞增數(shù)字。

電路圖及說(shuō)明:

1.png

使用PIC16F877中斷的電路圖如上圖所示。您只需將LCD連接到PIC,就像我們?cè)?a href="http://m.makelele.cn/outside?redirect=https://circuitdigest.com/microcontroller-projects/16x2-lcd-interfacing-with-pic-microcontroller" target="_blank">接口LCD教程中所做的那樣。

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

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

我們?cè)?a target="_blank">端口 B 上啟用了內(nèi)部上拉電阻,因此我們可以通過(guò)按鈕將 RB0 引腳直接接地。因此,每當(dāng)該引腳變?yōu)榈碗娖綍r(shí),就會(huì)觸發(fā)中斷。

可以在面包板上進(jìn)行連接,如下所示。

PIC 微控制器 PIC16F877A 中斷試驗(yàn)板連接

如果您一直在學(xué)習(xí)我們的教程,您應(yīng)該已經(jīng)熟悉我在這里使用的這個(gè) Perf 板。如果沒(méi)有,你不需要考慮太多,只需按照電路圖,你就會(huì)讓事情正常。

PIC微控制器中的中斷仿真

該項(xiàng)目的模擬是使用Proteus進(jìn)行的。

1.png

模擬項(xiàng)目時(shí),您應(yīng)該會(huì)在LCD顯示屏上看到一系列數(shù)字遞增。這發(fā)生在主回路內(nèi),每當(dāng)按下按鈕時(shí),LCD都應(yīng)顯示它已進(jìn)入ISR。您可以在代碼中進(jìn)行修改并嘗試在此處進(jìn)行測(cè)試。

代碼說(shuō)明:

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

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

OPTION_REG = 0b00000000;

選項(xiàng)注冊(cè)

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

GIE=1;          //Enable Global Interrupt

    PEIE=1;         //Enable the Peripheral Interrupt

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

一旦RB0引腳被定義為外部中斷引腳,每次它變低時(shí),外部中斷標(biāo)志INTF將變?yōu)?,并且void中斷函數(shù)中的代碼將被執(zhí)行,因?yàn)閷⒄{(diào)用中斷服務(wù)例程(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();

        }

}

如您所見(jiàn),我將中斷函數(shù)命名為 ISR_example。您可以根據(jù)自己的意愿命名。在中斷函數(shù)中,我們將檢查 INTF 標(biāo)志是否為高并執(zhí)行所需的操作。完成例程后清除中斷標(biāo)志非常重要。只有這樣,程序才會(huì)返回到 void 主函數(shù)。這種清算必須通過(guò)使用生產(chǎn)線的軟件來(lái)完成

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

在主功能中,我們只需每 500 毫秒增加一個(gè)數(shù)字并將其顯示在 LCD 屏幕上。我們沒(méi)有任何特定的線路來(lái)檢查RB0引腳的狀態(tài)。中斷將始終保持活動(dòng)狀態(tài),每當(dāng)按下按鈕時(shí),它都會(huì)跳出空主線并執(zhí)行 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 的工作中斷:

一旦您了解了 中斷的工作原理 ,您就可以在硬件上嘗試并擺弄它。這里給出的這個(gè)程序是一個(gè)非?;镜耐獠恐袛嗍纠?,它只是在檢測(cè)到中斷時(shí)改變LCD屏幕的顯示。

PIC16F877A 中斷的工作

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

    關(guān)注

    2

    文章

    43

    瀏覽量

    22384
  • PIC微控制器
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7684
  • 外部中斷
    +關(guān)注

    關(guān)注

    1

    文章

    135

    瀏覽量

    16605
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

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

    如何使用PIC微控制器旋轉(zhuǎn)步進(jìn)電機(jī)

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

    如何使用PIC微控制器構(gòu)建一個(gè)線路跟隨機(jī)器人

    線路跟隨機(jī)器人是一個(gè)簡(jiǎn)單而迷人的機(jī)器人,適合大多數(shù)學(xué)生/業(yè)余愛(ài)好者建造。在本教程中,我們將學(xué)習(xí)線路跟隨機(jī)器人的工作原理以及如何使用 PIC 微控制器 PIC16F877A 構(gòu)建一個(gè)。PIC16
    發(fā)表于 11-30 17:17 ?2299次閱讀
    如何使用<b class='flag-5'>PIC</b><b class='flag-5'>微控制器</b>構(gòu)建一個(gè)線路跟隨機(jī)器人

    PIC16F877A中斷優(yōu)先級(jí)問(wèn)題

    現(xiàn)在我需要通過(guò)串口來(lái)接收指令控制PIC16F877A的捕獲脈沖行為,可以做到的是:接收到開(kāi)捕獲指令后,能正常開(kāi)始捕獲脈沖,但是再發(fā)送關(guān)閉指令卻不能讓它停下來(lái),通過(guò)KIT3發(fā)現(xiàn),在捕獲的時(shí)候,串口不能
    發(fā)表于 06-06 21:18

    pic16f877a中文資料pdf

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

    基于PIC16F877A的太陽(yáng)能與市電互補(bǔ)照明系統(tǒng)控制器的設(shè)

    基于PIC16F877A的太陽(yáng)能與市電互補(bǔ)照明系統(tǒng)控制器的設(shè)計(jì) 介紹了一款以單片機(jī)PIC16F877A控制核心的太陽(yáng)能與市電互補(bǔ)照明系統(tǒng)控制器
    發(fā)表于 04-10 22:06 ?1500次閱讀
    基于<b class='flag-5'>PIC16F877A</b>的太陽(yáng)能與市電互補(bǔ)照明系統(tǒng)<b class='flag-5'>控制器</b>的設(shè)

    PIC16F877A串口發(fā)送查詢方式

    PIC16F877A串口發(fā)送,查詢方式,就為了調(diào)出這個(gè)費(fèi)了我一天時(shí)間,原來(lái)是串口芯片電壓?jiǎn)栴},現(xiàn)總結(jié)如下
    發(fā)表于 09-01 11:03 ?10次下載
    <b class='flag-5'>PIC16F877A</b>串口發(fā)送查詢方式

    PIC16F877A串口芯片電壓?jiǎn)栴}

    PIC16F877A串口發(fā)送,查詢方式,就為了調(diào)出這個(gè)費(fèi)了我一天時(shí)間,原來(lái)是串口芯片電壓?jiǎn)栴},現(xiàn)總結(jié)如下
    發(fā)表于 09-01 11:15 ?9次下載
    <b class='flag-5'>PIC16F877A</b>串口芯片電壓?jiǎn)栴}

    PIC16F877A的T0定時(shí)制作的電子鐘程序

    經(jīng)過(guò)努力,利用PIC16F877A的T0定時(shí)制作的電子鐘實(shí)驗(yàn)成功!
    發(fā)表于 05-15 09:42 ?2260次閱讀

    PIC16F877A開(kāi)發(fā)板 數(shù)碼管動(dòng)態(tài)掃描實(shí)驗(yàn)

    //****************電子園PIC16F877A開(kāi)發(fā)板 數(shù)碼管動(dòng)態(tài)掃描實(shí)驗(yàn)****************//////mcu: PIC16F877A 4MHz //2010年12月
    發(fā)表于 11-16 19:51 ?13次下載
    <b class='flag-5'>PIC16F877A</b>開(kāi)發(fā)板 數(shù)碼管動(dòng)態(tài)掃描實(shí)驗(yàn)

    PIC16F877A開(kāi)發(fā)板 普通IO驅(qū)動(dòng)74595實(shí)驗(yàn)

    //*****************電子園PIC16F877A開(kāi)發(fā)板 普通IO驅(qū)動(dòng)74595實(shí)驗(yàn)***************////PIC16F877A 實(shí)驗(yàn)板////mcu
    發(fā)表于 11-16 19:51 ?14次下載
    <b class='flag-5'>PIC16F877A</b>開(kāi)發(fā)板 普通IO驅(qū)動(dòng)74595實(shí)驗(yàn)

    PIC16F877A 看門狗定時(shí)實(shí)驗(yàn)

    //*******************PIC16F877A 看門狗定時(shí)實(shí)驗(yàn)******************* // //PORTA,PORTB,PORTC,PORTD,PORTE
    發(fā)表于 11-16 20:06 ?9次下載
    <b class='flag-5'>PIC16F877A</b> 看門狗定時(shí)<b class='flag-5'>器</b>實(shí)驗(yàn)

    使用熱敏打印機(jī)連接PIC16F877A并使用輕觸開(kāi)關(guān)實(shí)現(xiàn)打印的教程

    在本教程中,我們將熱敏打印機(jī) CSN A1 與廣泛使用的 PIC 微控制器 PIC16F877A 連接。在本項(xiàng)目中,熱敏打印機(jī)連接在PIC16F87
    的頭像 發(fā)表于 11-04 15:10 ?4654次閱讀
    使用熱敏打印機(jī)連接<b class='flag-5'>PIC16F877A</b>并使用輕觸開(kāi)關(guān)實(shí)現(xiàn)打印的教程

    何在PIC16F877A微控制器中使用EEPROM保存數(shù)據(jù)

    在本教程中,我們將了解使用 **PIC16F877A 微控制器中的 EEPROM** 保存數(shù)據(jù)是多么容易。在大多數(shù)實(shí)時(shí)項(xiàng)目中,我們可能必須保存一些數(shù)據(jù),即使關(guān)閉電源也不應(yīng)刪除這些數(shù)據(jù)。這聽(tīng)起來(lái)像是一
    的頭像 發(fā)表于 01-25 15:39 ?4242次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>PIC16F877A</b><b class='flag-5'>微控制器</b><b class='flag-5'>中使</b>用EEPROM保存數(shù)據(jù)

    PIC16F877A開(kāi)發(fā)板原理圖

    PIC16F877A開(kāi)發(fā)板原理圖免費(fèi)下載。
    發(fā)表于 03-21 15:47 ?16次下載