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

2021-01-19 電子發燒友
單片機中提高作業效率的「中斷功能」解讀

麵包板社區 發表於 2021-01-15 14:52:04

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

提高作業效率的「中斷功能」指的是什麼?

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

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

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

圖1:中斷與輪詢

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

單片機中的中斷處理

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

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

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

圖2:中斷處理流程

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

還可使用資料庫嘗試編寫複雜的中斷程序!

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

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

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

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

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

以上為圖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

打開APP閱讀更多精彩內容

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

相關焦點

  • 51單片機教程:單片機的中斷系統
    有關單片機中斷系統的概念:什麼是中斷,我們從一個生活中的例程引入。這就是生活中的「中斷」的現象,就是正常的工作過程被外部的事件打斷了。仔細研究一下生活中的中斷,對於我們學習單片機的中斷也很有好處。
  • 單片機與程序設計(上)
    在這個例子中,「一直盯著時鐘看」就相當於前一節中所介紹的「等待經過循環處理所指定的時間」,所以在處理結束之前不能去做其它事情。同時,廚房定時器的警報就相當於中斷功能。在中斷發生前還可以去做其它事情。單片機的外設功能中有各種各樣的定時器,這些定時器在經過指定的時間或處理結束時向CPU發送中斷信號。不僅是定時器,很多外設功能都會在「產生變化」、「處理開始/結束」時將中斷信息傳送給CPU。
  • 51單片機(二):單片機內部定時/計數器和中斷系統
    這一講將介紹單片機內部非常重要的兩個資源——定時/ 計數器和中斷系統。通過該講,讀者可以掌握定時器的工作原理和單片機的中斷系統。在本實驗套件中採用的是11.0592M 的晶振,故每接收一個輸入脈衝的時間約為1.085μs。實現精確定時在實際項目應用中非常重要,因為往往需要用到精確定時一段時間,然後定時時間到的時刻做相應的任務。那如何編程實現定時時間呢?首先先簡單介紹下本實驗板上單片機(STC89C52)內的定時器資源。STC89C52 內有三個定時/ 計數器, 分別為T0、T1 和T2。
  • 單片機在微波功率控制技術中的應用方案
    為達到無極紫外燈在微波的激發作用下,能夠產生連續可變的光源,並且能夠較好地克服技術性與經濟性的矛盾,提高性價比,本文論述單片機微波功率控制技術。2 晶片簡介系統使用的pic16f873,採用靜態設計技術、高性能的哈佛結構cpu和risc指令集,實現了低功耗和寬工作電壓範圍,提高了cpu的工作速度和效率。包含4k×14的程序快閃記憶體,192位元組的數據隨機存儲器和128位元組數據eeprom存儲器。
  • 最全51單片機寄存器功能一覽表,不看後悔~
    特殊功能寄存器(52系列是26個)不連續地分布在128個字節的SFR存儲空間中,地址空間為80H-FFH,在這片SFR空間中,包含有128個位地址空間,地址也是80H-FFH,但只有83個有效位地址,可對11個特殊功能寄存器的某些位作位尋址操作(這裡介紹一個技巧:其地址能被8整除的都可以位尋址)。
  • 單片機原理|定時器/計數器的工作原理及應用作業
    一.單選題(共41題,94.3分)18051單片機計數初值的計算中,若設最大計數值為M,對於方式1下的M值為( )。我的答案:D 得分: 2.3分 27MCS-51單片機在同一優先級的中斷源同時申請中斷時
  • 學習單片機不可缺少的八大步驟
    在C語言中(極少量的彙編)掌握各種功能的初始化,啟動與停止,實現各種功能函數的編寫與調試。本文引用地址:http://www.eepw.com.cn/article/221348.htm  第一步:數字I/O的應用  在大多數的單片機實驗中,跑馬燈實驗正是數字I/O的典型應用,也是跑馬燈的實驗被安排第一個的原因。
  • 基於BU65170與單片機系統的RT設計與實現
    對這三種數傳模式的靈活運用不但能保證指令和數據收發的實時性,還支持大量的數據低誤碼率的快速傳輸;提供對消息的非法檢測功能。對於來自總線上的消息,協議控制器根據非法指令表初始化的內容對其進行判斷,響應合法的消息,對無用的消息加以非法屏蔽。這樣可大大的提高系統的工作效率。BU65170通過中斷接口邏輯的控制可產生多種可屏蔽中斷。晶片內部集成的中斷控制寄存器和中斷狀態寄存器。
  • 基於單片機80C196KC的靜電除塵電源三相交流調壓控制系統
    一般來說,靜電極板電壓越高,對帶電離子的吸附能力就越強,除塵效率越高。但電壓越高,電場內會出現頻繁的火花閃爍,甚至產生電弧,放電過程難以控制,除塵效率明顯降低,這種情況應該避免。如果能夠控制極板電壓長時間維持在臨界放電狀態,就可以獲得最佳的除塵效果並有效節約電力資源。實驗證明,基於單片機80C196KC的靜電除塵電源三相交流調壓控制系統能夠很好實現這一功能。
  • 51單片機---定時器 計數器
    8051系列單片機有兩個定時器:T0和T1,分別稱為定時器和定時器T1,這兩個定時器都是16位的定時器/計數器;8052系列單片機增加了第三個定時器/計數器T2;它們都有定時或事件計數功能,常用於時間控制、延時、對外部時間計數和檢測等場合
  • 基於STC單片機的智能燈控系統設計
    人體紅外熱釋傳感器和可見光照度傳感器採集的數據,通過單片機處理後向照明燈驅動電路發送相應信號,控制照明燈的開關和亮度。本系統具有成本低、運行穩定及智能化的特點。對提高用電效率、節能環保有很大幫助,應用前景廣闊。
  • AVR單片機在無線自動報靶系統中的應用
    目前,在野外射擊訓練考核中,大部分還是通過人工報靶的方法,帶有很多人為因素(如報靶人員的主觀性、情緒等),影響報靶的結果,使得射手不能正確了解自己的成績,不利於打靶水平的提高。
  • 單片機系統中日曆時鐘自動校準及調整
    我們設計的思路是:利用小型收音機中接收部分電路接收中央人民廣播電臺播出的中心頻率為106.1MHz的調頻信號,並解調出音頻信號,將音頻信號輸入兩個鎖相環路。這兩個鎖相環路分別跟蹤800Hz和1600Hz的報時信號。當接收到報時信號時,為單片機提供外部中斷,通過執行中斷程序即可完成對日曆時鐘的自動校準。
  • 基於單片機的多功能電子萬年曆設計(一)
    本系統程序由主程序、中斷服務函數和多個子函數構成。主函數主要完成各子函數和中斷函數的初始化。定時中斷函數主要完成時鐘晶片的定時掃描及鍵盤掃描。時鐘晶片的讀寫函數主要是將時間、日曆信息讀出來,並把要修改具體值寫入時鐘晶片內部。
  • PIC單片機、AVR、51系列三類單片機優缺點分析
    pic單片機在日常中使用頻率較高,與pic單片機具備同等地位的還包含AVR、51系列單片機。那麼pic單片機與另外二者有何區別呢?相比較而言,pic單片機又擁有何特點?一起看看這篇關於pic單片機、AVR和51系列單片的對比分析吧。
  • 基於單片機的GPS/電子羅盤測姿定位系統
    該系統利用單片機C8051F021作為中央處理器,功耗極低的iTrax03-02作為GPS接收機,數字電子羅盤HMR3300提供姿態信息,通過串口通信實現了實時測姿定位功能。RXD0為GPS接收機發送到單片機的數據;RXD1為電子羅盤發送到單片機的數據;TXD0為單片機發送到MAX3232的數據;P(2~3)為單片機發送到LCD進行顯示的數據。
  • 製作機器人常用的單片機性能特點及使用經驗
    本文嘗試用一種通俗易懂的方法解讀上述問題,並設計了一種有深度的單片機控制機器人的實例,希望能起到拋磚引玉的作用。我與大家分享我使用單片機的一些經驗,希望能讓初學者少些迷茫,讓已經入門的朋友思維開闊。寫本文時我僅有3年單片機實踐經驗,比較了解51系列和AVR系列單片機,因此著重討論了AVR單片機,我經驗有限,有錯誤在所難免,希望朋友們批評指正!
  • linux中斷處理原理分析
    最近有時間了,於是試著整理一下linux的中斷處理機制,目的是起碼從原理上能夠說得通。  一、最簡單的中斷機制  最簡單的中斷機制就是像晶片手冊上講的那樣,在中斷向量表中填入跳轉到對應處理函數的指令,然後在處理函數中實現需要的功能。類似下圖:
  • 《單片機原理與應用》習題集(上)
    1-8 新型8位單片機主要在哪些方面有所發展?給應用系統帶來什麼好處?第二章 單片機系統組成原理2-1 什麼是單片機?它與一般的微型計算機在結構上有何區別?2-2 MSC-51單片機內部有哪些主要的邏輯部件?2-3 MSC-51單片機程序存儲器和數據存儲器各有什麼功用?其內部RAM區功能結構如何分配?
  • 單片機實驗報告與心得體會
    學習單片機這門課程(教學中選用 inter公司的mcs-51),要掌握單片機指令系統中彙編語言各種基本語句的意義及彙編語言程序設計的基本知識和方法,以及單片機與其他設備相連接的輸入輸出中斷等接口技術。使學生從硬體軟體的結合上理論聯繫實際,提高動手能力,從而全面掌握單片機的應用。