資料介紹
我們已經(jīng)介紹了應(yīng)用單片機的外設(shè)功能的結(jié)構(gòu)和使用方法。本期我們介紹更有效地應(yīng)用單片機而必須的外設(shè)功能——“中斷功能”。
提高作業(yè)效率的“中斷功能”指的是什么?
我們回顧一下本系列第二期的“定時器”篇中簡單介紹過的“中斷功能”概念。任何人都有過這樣的經(jīng)驗,就是“將雞蛋放進沸騰的熱水中,直到雞蛋煮熟的10分鐘內(nèi)要確認好幾次時鐘”的經(jīng)歷。在單片機的世界中也同樣,在等待某種狀態(tài)達成時,具有對對象進行定期檢查的方法。例如,在等待向GPIO(通用I/O端口)的輸入從0變?yōu)?時,程序可以一定的間隔來檢查GPIO的狀??。這種處理被稱為“輪詢”。
輪詢雖然是一種了解狀態(tài)變化的簡單方法,但是如果檢查的頻度低(間隔長)就會錯過變化,如果頻度過高(間隔短),即使查也查不到變化“空耗”。由于輪詢通過簡單的程序便能完成處理,所以在掌握對象的變化頻度時是有效的。但是,進行多次檢查也會給單片機帶來負荷,對功耗不利。
因此就要用到本期介紹的“中斷功能”??產(chǎn)生中斷時,CPU會暫時停止正在執(zhí)行的任務(wù),轉(zhuǎn)而進行別的任務(wù)。也就是有別的任務(wù)“穿插”進來的意思(圖1) 。當中途穿插進來的任務(wù)結(jié)束后,CPU再返回處理原來的任務(wù)。
圖1:中斷與輪詢
設(shè)想一下你在工作的同時煮雞蛋的情況。 由于你不想停下手中的工作,所以把雞蛋放入熱水中后就設(shè)置定時器并繼續(xù)工作,10分鐘后定時器一響就把雞蛋從熱水中撈起。這時,定時器的鳴叫就是中斷 ,而“把雞蛋從熱水中撈起”就是穿插進來的工作。大家可以通過這種方式來了解中斷功能。
單片機中的中斷處理
中斷產(chǎn)生于單片機內(nèi)部和外部的各種設(shè)備。于開關(guān)和感應(yīng)器等單片機外部的中斷稱為外部引腳中斷,來自這些機器的中斷信號由名為“IRQ”的引腳接收,再向中斷控制器(在RX63N中稱被稱為“ICUb”)發(fā)出通知。IRQ為“Interrupt ReQuest”的略稱,意思為“中斷請求”。另外,來自單 片機內(nèi)部的定時器和GPIO、串行通信設(shè)備UART等外設(shè)機器的中斷被稱為外部設(shè)備中斷,中斷信號直接從各外部設(shè)備通知中斷控制器。
在中斷控制器中,各種設(shè)備的中斷信號按照先來后到的順序,以適當?shù)捻樞虮粋魉偷紺PU。而且,中斷被設(shè)為無效的設(shè)備的中斷信號將不會被傳送到CPU,也就意味著可以忽視(屏蔽)這些信號。CPU按照從中斷控制器接收到的指示來執(zhí)行對應(yīng)的程序(中斷處理)。
CPU一旦接收到中斷控制器的中斷信號,首先將終止執(zhí)行中的程序。然而,會自動保存“從何處重啟”的出棧(POP)信息,這被稱為“進棧(PUSH)”。進棧結(jié)束后,將開始由中斷執(zhí)行的程序。該程序結(jié)束時,進棧信息將回 送到CPU,這種現(xiàn)象被稱為“出棧”(圖2)。由于進棧和出棧都由CPU自動執(zhí)行,因此程序設(shè)計者不必因順序問題而費心。
圖2:中斷處理流程
例如,通過UART執(zhí)行串行通信時,經(jīng)常監(jiān)視字節(jié)是否被接收了而導致效率不佳。所以,多數(shù)情況下都對程序進行如下編程,即在信息送達 時就會產(chǎn)生中斷并進行適當?shù)奶幚恚硗猓苟〞r器產(chǎn)生中斷的情況也不在少數(shù)。進行“經(jīng)過了一定時間后該做什么”這類處理時,應(yīng)進行如下編程,即通過來自定時器的信號開始進行處理。如上所述,在有效利用單片機方面,中斷功能發(fā)揮了很大的作用。
還可使用數(shù)據(jù)庫嘗試編寫復雜的中斷程序!
為了編寫與中斷相關(guān)的程序,就需要了解單片機的運行。由于需要深入了解,所以不能僅是進行簡單的嘗試。幸好還有本系列中介紹過的GR-SAKURA數(shù)據(jù)庫,可在GR-SAKURA數(shù)據(jù)庫中進行與外部引腳中斷相關(guān)的處理,所以請嘗試使用GR-SAKURA數(shù)據(jù)庫來進行編程。
為了向GR-SAKURA提供外部引腳中斷,還需要做些工作。在GR-SAKURA中,從IO30引腳到IO35引腳接收來自外部的中斷信號。這次是將定時器輸出引導到IO0引腳,再將它傳送到IO31引腳作為中斷信號。因此,要從IO30引腳到GND的部分設(shè)置引腳接口,由底板用的電線將IO0和IO31連接起來(圖3)。
圖3:GR-SAKURA的準備(引腳設(shè)置)
在示例程序(圖4)中預先準備了如下功能,即當GR- SAKURA的外部中斷信號引腳(從IO30到IO35中的一個)的輸入從L電平變?yōu)镠電平時,LED燈將啟動。而且是在檢測到相當于上述所說明的“外部引腳中斷”的中斷信號后才會變化。從IO0引腳進行定時器輸出,并將之與中斷輸入引腳即IO31引腳連接,通過這樣的方式便可以與一定的時間間隔發(fā)生中斷。
※即使 已對該程序進行了匯編,在沒有將上述的IO0和IO31引腳進行連接的GR-SAKURA中也無法運行。
以上為圖4的程序
※圖4程序結(jié)束
※圖4:用于外部引腳中斷的示例程序
在此數(shù)據(jù)庫中,可對分別與前述中斷信號輸入引腳對應(yīng)的處理。本次所示的是根據(jù)向IO31引腳輸入的變化(從L電平變?yōu)镠電平)來產(chǎn)生中斷的情況。第48行的attachInterrupt()定義了在某個輸入引腳出現(xiàn)某種變化時該調(diào)用什么函數(shù)。因此,設(shè)定為根據(jù)輸入IO31引腳的中斷信號來啟動irq3()。這樣的設(shè)定只需在setup()中定義一次便能在整個程序中有效。除此以外,在setup()中還記述了定時器的定義、定時器輸出引腳的設(shè)定、LED輸出的設(shè)定等初始條件。
沒有通過loop()函數(shù)進行的處理。取而代之的是由irq3()這個函數(shù)進行處理。從這個函數(shù)來看是看不出它是從程序中調(diào)用的。但是,正是由于這個函數(shù),才能使中斷信號進入IO31引腳時使LED的光發(fā)生變化。在函數(shù)irq3()中,四盞LED中只有一盞亮燈,這個函數(shù)一旦被調(diào)用,亮燈的LED就發(fā)生一次變化。為了讓人看得到這個“變化”,在case標簽的部分,通過來自GPIO的輸出來滅燈且使旁邊的LED亮燈(邊緣的LED燈亮燈時,相反側(cè)的邊緣的LED亮燈或滅燈)。
為了應(yīng)對不知何時會發(fā)生的意外,中斷就是非常有效的應(yīng)對方法。而且,中斷還可以減少程序的不必要運行,從而可降低功耗。也可以說,為了真正有效地利用單片機,這是一項不可缺少的技術(shù)。?
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 51單片機中斷程序示例 0次下載
- PIC16F1933單片機示例程序資料免費下載 20次下載
- 使用單片機實現(xiàn)應(yīng)用例程的資料和程序合集免費下載
- 單片機中斷的應(yīng)用實例程序和實物圖免費下載
- 使用51單片機的INT 0及INT 1中斷計數(shù)的資料和程序免費下載
- 51單片機的中斷程序免費下載
- 51單片機串口通訊需要注意的寄存器及51單片機使用PRINTF的示例程序
- 使用PIC單片機進行匯編語言的學習資料和實例程序免費下載
- 使用單片機的中斷及定時器實現(xiàn)時鐘功能的程序和資料免費下載
- 51單片機的中斷系統(tǒng)學習資料和使用程序免費下載
- 使用51單片機進行秒表的程序示例免費下載
- 使用單片機進行中斷的應(yīng)用資料和程序免費下載
- 51單片機的中斷程序資料免費下載 22次下載
- 51單片機外部中斷實例的程序資料說明免費下載 9次下載
- 使用單片機實現(xiàn)串口超聲波的示例程序詳細資料免費下載 6次下載
- 什么是中斷?單片機中斷處理過程詳解 5144次閱讀
- 單片機外部中斷的好處 2338次閱讀
- AT89S51單片機功能及特點 5789次閱讀
- 一文解析51單片機的中斷功能 8365次閱讀
- 單片機的中斷程序如何運行 1.1w次閱讀
- 單片機的主程序和中斷程序是怎么樣運行的 1.4w次閱讀
- 在處理PIC單片機的中斷服務(wù)程序時需要注意哪些問題 2688次閱讀
- 8031單片機中斷系統(tǒng)的基本結(jié)構(gòu)介紹 4447次閱讀
- 一文看懂單片機與PLC程序設(shè)計的區(qū)別 7527次閱讀
- 關(guān)于單片機的中斷系統(tǒng)的詳細介紹 3.2w次閱讀
- ch340g單片機下載程序電路原理 7.9w次閱讀
- 單片機中斷系統(tǒng)介紹_51單片機中斷系統(tǒng)結(jié)構(gòu) 1.2w次閱讀
- 51單片機的擴展中斷方法 1241次閱讀
- 單片機與程序設(shè)計(上) 3889次閱讀
- 單片機必須了解的外設(shè)功能——定時器/中斷功能 7399次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設(shè)計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論