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

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

3天內不再提示

單片機中提高作業效率的“中斷功能”解讀

電子設計 ? 來源:面包板社區 ? 作者:面包板社區 ? 2021-01-15 14:52 ? 次閱讀

我們已經介紹了應用單片機的外設功能的結構和使用方法。本期我們介紹更有效地應用單片機而必須的外設功能——“中斷功能”。

提高作業效率的“中斷功能”指的是什么?

我們回顧一下本系列第二期的“定時器”篇中簡單介紹過的“中斷功能”概念。任何人都有過這樣的經驗,就是“將雞蛋放進沸騰的熱水中,直到雞蛋煮熟的10分鐘內要確認好幾次時鐘”的經歷。在單片機的世界中也同樣,在等待某種狀態達成時,具有對對象進行定期檢查的方法。例如,在等待向GPIO(通用I/O端口)的輸入從0變為1時,程序可以一定的間隔來檢查GPIO的狀態。這種處理被稱為“輪詢”。

輪詢雖然是一種了解狀態變化的簡單方法,但是如果檢查的頻度低(間隔長)就會錯過變化,如果頻度過高(間隔短),即使查也查不到變化“空耗”。由于輪詢通過簡單的程序便能完成處理,所以在掌握對象的變化頻度時是有效的。但是,進行多次檢查也會給單片機帶來負荷,對功耗不利。

因此就要用到本期介紹的“中斷功能”。產生中斷時,CPU會暫時停止正在執行的任務,轉而進行別的任務。也就是有別的任務“穿插”進來的意思(圖1) 。當中途穿插進來的任務結束后,CPU再返回處理原來的任務。

pIYBAGABOryAbCP_AAEXevBfszs377.png

圖1:中斷與輪詢

設想一下你在工作的同時煮雞蛋的情況。 由于你不想停下手中的工作,所以把雞蛋放入熱水中后就設置定時器并繼續工作,10分鐘后定時器一響就把雞蛋從熱水中撈起。這時,定時器的鳴叫就是中斷 ,而“把雞蛋從熱水中撈起”就是穿插進來的工作。大家可以通過這種方式來了解中斷功能。

單片機中的中斷處理

中斷產生于單片機內部和外部的各種設備。于開關和感應器等單片機外部的中斷稱為外部引腳中斷,來自這些機器的中斷信號由名為“IRQ”的引腳接收,再向中斷控制器(在RX63N中稱被稱為“ICUb”)發出通知。IRQ為“Interrupt ReQuest”的略稱,意思為“中斷請求”。另外,來自單 片機內部的定時器和GPIO、串行通信設備UART等外設機器的中斷被稱為外部設備中斷,中斷信號直接從各外部設備通知中斷控制器。

在中斷控制器中,各種設備的中斷信號按照先來后到的順序,以適當的順序被傳送到CPU。而且,中斷被設為無效的設備的中斷信號將不會被傳送到CPU,也就意味著可以忽視(屏蔽)這些信號。CPU按照從中斷控制器接收到的指示來執行對應的程序(中斷處理)。

CPU一旦接收到中斷控制器的中斷信號,首先將終止執行中的程序。然而,會自動保存“從何處重啟”的出棧(POP)信息,這被稱為“進棧(PUSH)”。進棧結束后,將開始由中斷執行的程序。該程序結束時,進棧信息將回 送到CPU,這種現象被稱為“出?!保▓D2)。由于進棧和出棧都由CPU自動執行,因此程序設計者不必因順序問題而費心。

pIYBAGABOseAOjorAAEjKHERa6k753.png

圖2:中斷處理流程

例如,通過UART執行串行通信時,經常監視字節是否被接收了而導致效率不佳。所以,多數情況下都對程序進行如下編程,即在信息送達 時就會產生中斷并進行適當的處理,另外,使定時器產生中斷的情況也不在少數。進行“經過了一定時間后該做什么”這類處理時,應進行如下編程,即通過來自定時器的信號開始進行處理。如上所述,在有效利用單片機方面,中斷功能發揮了很大的作用。

還可使用數據庫嘗試編寫復雜的中斷程序!

為了編寫與中斷相關的程序,就需要了解單片機的運行。由于需要深入了解,所以不能僅是進行簡單的嘗試。幸好還有本系列中介紹過的GR-SAKURA數據庫,可在GR-SAKURA數據庫中進行與外部引腳中斷相關的處理,所以請嘗試使用GR-SAKURA數據庫來進行編程。

為了向GR-SAKURA提供外部引腳中斷,還需要做些工作。在GR-SAKURA中,從IO30引腳到IO35引腳接收來自外部的中斷信號。這次是將定時器輸出引導到IO0引腳,再將它傳送到IO31引腳作為中斷信號。因此,要從IO30引腳到GND的部分設置引腳接口,由底板用的電線將IO0和IO31連接起來(圖3)。

o4YBAGABOtKAaDK_AANd8Q_WHAs204.png

圖3:GR-SAKURA的準備(引腳設置)

在示例程序(圖4)中預先準備了如下功能,即當GR- SAKURA的外部中斷信號引腳(從IO30到IO35中的一個)的輸入從L電平變為H電平時,LED燈將啟動。而且是在檢測到相當于上述所說明的“外部引腳中斷”的中斷信號后才會變化。從IO0引腳進行定時器輸出,并將之與中斷輸入引腳即IO31引腳連接,通過這樣的方式便可以與一定的時間間隔發生中斷。

※即使 已對該程序進行了匯編,在沒有將上述的IO0和IO31引腳進行連接的GR-SAKURA中也無法運行。

93l3ap6v100016964-56723-supp.png

以上為圖4的程序

※圖4程序結束

※圖4:用于外部引腳中斷的示例程序

在此數據庫中,可對分別與前述中斷信號輸入引腳對應的處理。本次所示的是根據向IO31引腳輸入的變化(從L電平變為H電平)來產生中斷的情況。第48行的attachInterrupt()定義了在某個輸入引腳出現某種變化時該調用什么函數。因此,設定為根據輸入IO31引腳的中斷信號來啟動irq3()。這樣的設定只需在setup()中定義一次便能在整個程序中有效。除此以外,在setup()中還記述了定時器的定義、定時器輸出引腳的設定、LED輸出的設定等初始條件。

沒有通過loop()函數進行的處理。取而代之的是由irq3()這個函數進行處理。從這個函數來看是看不出它是從程序中調用的。但是,正是由于這個函數,才能使中斷信號進入IO31引腳時使LED的光發生變化。在函數irq3()中,四盞LED中只有一盞亮燈,這個函數一旦被調用,亮燈的LED就發生一次變化。為了讓人看得到這個“變化”,在case標簽的部分,通過來自GPIO的輸出來滅燈且使旁邊的LED亮燈(邊緣的LED燈亮燈時,相反側的邊緣的LED亮燈或滅燈)。

為了應對不知何時會發生的意外,中斷就是非常有效的應對方法。而且,中斷還可以減少程序的不必要運行,從而可降低功耗。也可以說,為了真正有效地利用單片機,這是一項不可缺少的技術。
編輯:hfy

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

    關注

    6008

    文章

    44087

    瀏覽量

    623082
  • 定時器
    +關注

    關注

    23

    文章

    3154

    瀏覽量

    112450
  • uart
    +關注

    關注

    22

    文章

    1163

    瀏覽量

    100238
  • 中斷處理
    +關注

    關注

    0

    文章

    94

    瀏覽量

    10901
  • 中斷控制器
    +關注

    關注

    0

    文章

    59

    瀏覽量

    9388
收藏 人收藏

    評論

    相關推薦

    單片機中斷功能及其應用

    單片機中斷功能及其應用? 單片機中斷是指在程序執行過程中,根據特定的條件或事件自動暫時中斷當前程
    的頭像 發表于 01-30 14:45 ?1683次閱讀

    單片機外部中斷和定時器中斷的區別和用法

    單片機外部中斷和定時器中斷在觸發來源、應用場景以及功能特點上存在明顯差異** **。
    的頭像 發表于 01-28 17:35 ?1682次閱讀

    如何提升單片機開發技術?

    單片機開發是現代電子技術中的重要分支,其在各個領域都有著廣泛的應用。單片機開發技術的提升不僅可以提高工作效率,還可以提高工作質量和創新能力。那么,如何提升
    發表于 01-05 10:14

    51單片機中斷程序和WIFI功能怎么編譯?

    51單片機中斷程序和WIFI功能怎么編譯
    發表于 11-01 07:51

    單片機外部中斷的好處

    外部中斷單片機實時地處理外部事件的一種內部機制。當外部事件發生時,單片機中斷系統將迫使CPU暫停正在執行的程序,轉而去進行中斷事件的處理
    的頭像 發表于 10-31 15:58 ?1425次閱讀
    <b class='flag-5'>單片機</b>外部<b class='flag-5'>中斷</b>的好處

    單片機中斷優先級應用案例

    單片機同時接收到幾個中斷請求時,單片機中斷請求的響應順序是如何確定的?實際上,單片機是通過中斷
    發表于 10-31 14:42 ?759次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>中斷</b>優先級應用案例

    單片機驅動LCD如果提高效率?

    單片機驅動LCD如果提高效率
    發表于 10-23 07:44

    單片機編程中怎么讓效率提高,代碼也簡潔?

    單片機編程中怎么讓效率提高,代碼也簡潔
    發表于 10-20 06:19

    單片機用按鈕中斷函數

    單片機用按鈕中斷函數? 單片機中斷是一種能夠使單片機響應外部信號的機制,這種機制允許單片機在處理
    的頭像 發表于 09-01 10:17 ?1116次閱讀

    中斷的概念與作用、中斷源與中斷系統的功能(3)#單片機

    單片機中斷
    未來加油dz
    發布于 :2023年08月08日 21:01:40

    中斷的概念與作用、中斷源與中斷系統的功能(2)#單片機

    單片機中斷
    未來加油dz
    發布于 :2023年08月08日 21:00:56

    中斷的概念與作用、中斷源與中斷系統的功能(1)#單片機

    單片機中斷
    未來加油dz
    發布于 :2023年08月08日 21:00:08

    中斷源與中斷入口、中斷的控制(3)#單片機

    單片機中斷
    未來加油dz
    發布于 :2023年08月08日 20:56:06

    中斷源與中斷入口、中斷的控制(2)#單片機

    單片機中斷
    未來加油dz
    發布于 :2023年08月08日 20:55:26

    一文詳解51單片機中斷系統

    中斷是為單片機具有對外部或者內部隨機發生的事件實時處理而設置的。中斷功能的存在,很大程度上提高單片機
    發表于 06-23 14:59 ?2839次閱讀
    一文詳解51<b class='flag-5'>單片機</b><b class='flag-5'>中斷</b>系統
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>