欧美激情久久久久久,人妻久久精品天天中文字幕,国产精品无码色一区二区三区按摩 ,日韩中文无码有码免费视频

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

中斷

單片機CPU在處理某一事情A時(shí),發(fā)作了另一事情B懇求CPU敏捷去處理(中斷發(fā)作);CPU暫時(shí)中斷當時(shí)的作業(yè),轉去處理事情B(中斷呼應和中斷效勞);待CPU將事情B處理完畢后,再回到本來(lái)事情A被中斷的當地持續處理事情A(中斷回來(lái)),這一進(jìn)程稱(chēng)為中斷。

例如

當你正在洗衣時(shí),俄然手機響了(中斷發(fā)作),你暫時(shí)中斷洗衣的作業(yè),轉去接電話(huà)(中斷呼應和中斷效勞),待你接完后,再回來(lái)持續洗衣(中斷回來(lái)),這一進(jìn)程就是中斷。

單片機中斷分為內部中斷和外部中斷兩大類(lèi),外部中斷由單片機外部設備發(fā)生,中斷發(fā)生后經(jīng)過(guò)單片機的外部管腳傳遞給單片機,傳遞這個(gè)中斷信號最簡(jiǎn)略的辦法就是規則單片機的管腳在什么狀況下有外部中斷發(fā)生,這樣單片機一般是有一個(gè)或多個(gè)IO口當在輸入狀況時(shí)能夠用來(lái)檢測外部中斷信號。有外部中斷發(fā)生的條件一般也就是這五種:IO口輸入為高、IO口輸入為低、IO口輸入由高變?yōu)榈?、IO口輸入由低變?yōu)楦?、IO口輸入由高變低或許由低變高。

一個(gè)銜接到單片機的外部設備,如果想要運用單片機的外部中斷,就有必要在自己懇求單片機中斷呼應的時(shí)分給單片機供給單片機在這五種信號中所支撐的類(lèi)型來(lái)觸發(fā)單片機中斷。程序作業(yè)中,一個(gè)中斷不是只發(fā)生一次,一般都會(huì )距離持續發(fā)生,這五種外部中斷觸發(fā)信號前四種都有一個(gè)問(wèn)題,就是程控直流電源外設發(fā)出懇求中斷信號后如果信號懇求線(xiàn)狀況不改動(dòng),程控直流電源外設會(huì )無(wú)法向單片機供給下一次中斷懇求信號。讓我們來(lái)看看以單片機和外部設備選用負跳變觸發(fā)中斷為例的觸發(fā)狀況。

外部設備以負跳變觸發(fā)單片機中斷,第一次中斷懇求外部設備的中斷懇求輸出腳能夠從高變低,觸發(fā)單片機中斷,第一次中斷懇求發(fā)作后中斷懇求腳保持輸出低,外部設備無(wú)法發(fā)生第2次中斷的觸發(fā)負跳變信號。

 程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖1  程控直流電源外設只能發(fā)生一次中斷懇求信號暗示圖

 

將外部設備的中斷懇求信號做出修正,本來(lái)為需求中斷時(shí)僅僅輸出從高到低改動(dòng),現在改為輸出先從高變到低,經(jīng)過(guò)一小段時(shí)刻后自己從低變回高,這樣就能夠每次需求中斷時(shí)都能向單片機輸出負跳變觸發(fā)信號。

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖2  程控直流電源外設可接連發(fā)生中斷懇求信號暗示圖一

 

或許是由外部設備供給某種接口,單片機經(jīng)過(guò)該接口能夠對外部設備進(jìn)行中斷鏟除操作,中斷鏟除操作能夠讓外部設備的中斷懇求輸出腳康復到高。

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖3  程控直流電源外設可接連發(fā)生中斷懇求信號暗示圖二

 

外部中斷觸發(fā)還有一些特殊辦法,比方外部脈沖寬度丈量、外部脈沖計數等,這些辦法都是在前面幾種基本觸發(fā)辦法上進(jìn)行功用擴展得來(lái)的,外部脈沖寬度丈量就是當中斷信號線(xiàn)跳變時(shí)會(huì )發(fā)動(dòng)內部一個(gè)計時(shí)器,到下一次中斷信號線(xiàn)跳變時(shí)經(jīng)過(guò)計時(shí)器得到脈沖寬度并重新發(fā)動(dòng)計時(shí)器,這些辦法很少會(huì )運用到,不做詳述。


內部中斷是指單片機內部的功用模塊發(fā)生中斷信號,只需是單片機內部在CPU外圍能獨立作業(yè)的功用模塊都會(huì )供給中斷功用,常見(jiàn)的內部中斷類(lèi)型有時(shí)鐘Timer、串口UART、模數變換ADC等。內部中斷的作業(yè)流程和外部中斷沒(méi)太多差異,僅僅中斷懇求信號是在單片機內部進(jìn)行傳輸,中斷信號不是管腳上的電平狀況,而是一個(gè)寄存器里邊的相應標志位,一般當某個(gè)內部中斷發(fā)生中斷懇求時(shí)就會(huì )將相應標志方位為1,CPU呼應中斷時(shí)將這個(gè)標志位清0。

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖4  內部中斷觸發(fā)暗示圖

 

單片機對中斷標志位的處理辦法沒(méi)有統一標準,具體的約好辦法要看單片機文檔。大部分是標志位為1有中斷發(fā)生,但有少量單片機是標志位為0有中斷發(fā)生;有的單片機對中斷標志位是CPU寫(xiě)入什么就是給改寫(xiě)成什么,有的則是規則有必要經(jīng)過(guò)寫(xiě)1或寫(xiě)0來(lái)實(shí)現鏟除操作,還有少量只需讀一下中斷標志位就會(huì )主動(dòng)鏟除掉該標志位。


如果單片機不想被外部中斷觸發(fā),大不了將用于銜接外部中斷觸發(fā)信號的管腳接成不會(huì )觸發(fā)中斷的電壓狀況就能夠,但內部中斷無(wú)法去改動(dòng)內部連線(xiàn),所以單片機為了能夠挑選中斷是否能夠被除法,在其內部會(huì )有相關(guān)的寄存器來(lái)進(jìn)行挑選,經(jīng)過(guò)里邊的操控標志位開(kāi)發(fā)人員能夠根據實(shí)踐狀況決議是否運用中斷。一般單片機里邊有一個(gè)總操控位,這個(gè)位能夠操控一切中斷的開(kāi)與關(guān),然后每一種中斷自己還有一個(gè)獨立的操控位決議自己的開(kāi)與關(guān),如果想運用某個(gè)中斷,就需求將總中斷開(kāi)關(guān)和對應中斷的開(kāi)關(guān)都翻開(kāi)。

當單片機有中斷信號發(fā)生時(shí),就會(huì )觸發(fā)對應中斷,不同的中斷源會(huì )需求不同的呼應辦法,也就是說(shuō)不同的中斷發(fā)生的時(shí)分,需求單片機程序按照不同的中斷源做出不同的呼應,這就是中斷效勞程序。如果是UART收到新數據發(fā)生中斷,應該是UART中斷效勞程序將數據讀回來(lái)并做處理,如果是ADC變換完結發(fā)生的中斷,需求的則是ADC中斷效勞程序將數據讀回來(lái)并做處理。如果需求清中斷標志位動(dòng)作,一般都是在中斷效勞程序里邊完結。

不同的中斷源需求與之對應的中斷效勞程序,實(shí)踐開(kāi)發(fā)中并不是一切的中斷都會(huì )被用到,開(kāi)發(fā)人員為了節約程序代碼空間會(huì )只寫(xiě)出自己要運用到的中斷效勞程序,也就是說(shuō)會(huì )有一些中斷沒(méi)有與之對應的中斷效勞程序,如果觸發(fā)了這樣的中斷,單片機程序會(huì )運轉犯錯,前面中斷各自獨立的操控位就排上用場(chǎng),將這些操控位關(guān)掉,相應中斷就不會(huì )被觸發(fā)。

單片機開(kāi)端上電的時(shí)分,如果操控中斷是否被翻開(kāi)的寄存器操控標志位被翻開(kāi),可能會(huì )呈現中斷被誤觸發(fā)的狀況,而這個(gè)中斷如果沒(méi)有與之相對應的中斷效勞程序的話(huà)程序就會(huì )跑飛,所以單片機上電的時(shí)分一般會(huì )主動(dòng)將這些寄存器里邊的標志位都關(guān)掉,避免誤觸發(fā)。

中斷效勞程序是單片機程序的一部分,具體內容由開(kāi)發(fā)人員決議,這樣中斷效勞程序的巨細在單片機程序中的方位就不固定,當單片機的中斷被觸發(fā)后,單片機需求知道中斷效勞程序在什么方位才干履行它,單片機經(jīng)過(guò)中斷跳轉表(中斷向量表)來(lái)處理這個(gè)問(wèn)題。

盡管中斷效勞程序的巨細和在整個(gè)程序中的方位會(huì )不固定,但程序只需被燒進(jìn)單片機體系,關(guān)于這個(gè)程序來(lái)說(shuō)其中斷效勞程序的巨細和在整個(gè)程序中的方位就會(huì )被固定下來(lái),如果對單片機程序空間分配我們做出一些約好,將一個(gè)肯定固定地址專(zhuān)門(mén)分配給中斷運用,程序編譯時(shí)會(huì )將中斷效勞程序的開(kāi)端地址(或許是跳轉到中斷效勞程序的指令)填到這個(gè)肯定固定地址地點(diǎn)的空間,當中斷發(fā)生時(shí)分,單片機先將肯定固定地址地點(diǎn)方位里邊的內容讀出,根據所讀內容就能夠跳轉到中斷效勞程序。

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖5  中斷呼應暗示圖

 

簡(jiǎn)略的單片機所供給的中斷品種有限,為了簡(jiǎn)化程序,會(huì )給每一個(gè)中斷分配一個(gè)用來(lái)存放中斷效勞程序地址的地址空間,這種辦法其實(shí)沒(méi)什么不好的當地,僅僅單片機技能發(fā)展到現在遇到了瓶頸,高端單片機越來(lái)越雜亂,所以一些專(zhuān)業(yè)廠(chǎng)商開(kāi)端合作共享技能資源,例如ARM公司利用他們在CPU架構體系上的技能優(yōu)勢專(zhuān)門(mén)給別的的廠(chǎng)商供給CPU內核,別的的廠(chǎng)商在A(yíng)RM內核的CPU外圍添加功用模塊,這些功用模塊大都支撐中斷。

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖6 ARM內核單片機架構圖

 

不同廠(chǎng)家在相同CPU內核基礎上規劃出來(lái)的單片機外圍的功用模塊會(huì )各不相同,從而中斷的品種和個(gè)數也各不相同,而CPU處理中斷的辦法是一樣的,如果延續簡(jiǎn)略的單片機給每個(gè)中斷都分配一個(gè)地址空間的做法顯然有問(wèn)題,CPU無(wú)法知道到底有多少種中斷需求支撐,這些中斷又分別對應什么模塊,所以選用別的一種中斷處理辦法,將一切中斷地址都指向同一個(gè),并將一切中斷順次編號,中斷發(fā)生時(shí)分CPU會(huì )通知中斷效勞程序當時(shí)中斷編號是多少,然后中斷效勞程序根據中斷編號做出相應呼應。

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖7  共用中斷進(jìn)口中斷呼應流程圖

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖8  獨立中斷進(jìn)口中斷呼應流程圖

 

一切中斷運用同一個(gè)中斷向量地址然后經(jīng)過(guò)中斷號判斷中斷類(lèi)別的辦法盡管處理了通用CPU內核中斷不能直接對應中斷向量地址的問(wèn)題,但把它中斷處理的流程和具有獨立中斷向量表的單片機比較就會(huì )發(fā)現中斷的呼應速度會(huì )變慢。具有獨立中斷向量表的單片機只需一條跳轉指令就能夠直接進(jìn)入中斷程序,而沒(méi)有獨立中斷向量表的單片機需求先跳轉到中斷公共進(jìn)口,然后經(jīng)過(guò)代碼斷定中斷類(lèi)別,斷定中斷類(lèi)別后才跳轉到真實(shí)的中斷程序中去。C言語(yǔ)的代碼會(huì )讓這種狀況愈加惡化,所以如果是沒(méi)有獨立中斷向量表的單片機一般選用匯編查表的辦法加速中斷呼應速度。

 

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖9  匯編中斷快速跳轉表

 

中斷程序履行完畢后回回來(lái)持續履行主程序,這樣就要求中斷不改動(dòng)主程序的運轉狀況,所以中斷呼應時(shí)需求將程序當時(shí)運轉的狀況信息保存起來(lái),比方程序運轉到什么方位、當時(shí)CPU狀況寄存器的狀況等信息。當中斷程序履行完畢,能夠經(jīng)過(guò)這些信息將CPU狀況寄存器康復本來(lái)狀況,并能回來(lái)原程序持續履行。不同的單片機對此的處理辦法也會(huì )有不同,一種是完全由硬件來(lái)完結,并不需求程序來(lái)進(jìn)行辦理;別的一種是將狀況信息用相應指令保存在特定方位,回來(lái)時(shí)再用相應指令康復本來(lái)狀況。

單片機中斷還有中斷優(yōu)先級和中斷嵌套的概念,但不是一切的單片機都會(huì )支撐這兩種功用。中斷優(yōu)先級是不同的中斷會(huì )有不同的優(yōu)先級別,如果一起有兩個(gè)中斷發(fā)生,單片時(shí)機先呼應優(yōu)先級高的中斷。中斷嵌套是指在中斷呼應當中又有新的中斷發(fā)生,單片機能夠暫停當時(shí)的中斷程序履行去呼應新的中斷,新中斷程序履行完今后在接著(zhù)履行當時(shí)中斷程序。一般中斷嵌套是高優(yōu)先級的中斷能夠刺進(jìn)低優(yōu)先級中斷呼應程序,同級或低級的中斷不能刺進(jìn)當時(shí)中斷呼應程序。

程控直流電源工程師說(shuō)不懂中斷就別玩單片機,你信嗎?

圖10 中斷嵌套暗示圖

中斷過(guò)程闡明:

過(guò)程①保存主程序現場(chǎng),履行中斷1效勞程序

過(guò)程②保存中斷1效勞程序現場(chǎng),履行中斷2效勞程序

過(guò)程③康復中斷1效勞程序現場(chǎng),持續履行中斷1效勞程序

過(guò)程④康復主程序現場(chǎng),預備持續履行主程序,有新中斷不能持續履行主程序

過(guò)程⑤保存主程序現場(chǎng),履行中斷3效勞程序

過(guò)程⑥康復主程序現場(chǎng),預備持續履行主程序,有新中斷不能持續履行主程序

過(guò)程⑦保存主程序現場(chǎng),履行中斷4效勞程序

過(guò)程⑧康復主程序現場(chǎng),無(wú)中斷發(fā)生持續履行主程序

有的單片機一進(jìn)入中斷函數就會(huì )主動(dòng)將中斷的總操控位關(guān)掉,需求程控直流電源工程師在中斷程序頂用程序再次翻開(kāi),否則一次中斷后一切的中斷就不能持續運用。關(guān)于中斷標志位,在寫(xiě)單片機程序的時(shí)分要根據單片機文檔進(jìn)行鏟除標志為操作,否則有可能會(huì )一旦發(fā)生某個(gè)中斷就會(huì )接連不斷的重復呼應這個(gè)中斷,導致主程序不能持續運轉。

圖片加載中...

在線(xiàn)留言

◎歡迎您的留言,您也可以通過(guò)以下方式聯(lián)系我們:

◎客戶(hù)服務(wù)熱線(xiàn):021-51095123

◎郵箱:xin021@126.com

展開(kāi)