單片機(jī)主中斷原理概念_第1頁
單片機(jī)主中斷原理概念_第2頁
單片機(jī)主中斷原理概念_第3頁
單片機(jī)主中斷原理概念_第4頁
單片機(jī)主中斷原理概念_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Evaluation Warning: The document was created with Spire.Doc for .NET.單片機(jī)主中斷原理有關(guān)中斷的的概念什么么是中斷斷,我們們從一個(gè)個(gè)生活中中的例子子引入。你你正在家家中看書書,突然然電話鈴鈴響了,你你放下書書本,去去接電話話,和來來電話的的人交談?wù)?,然后后放下電電話,回回來繼續(xù)續(xù)看你的的書。這這就是生生活中的的“中斷斷”的現(xiàn)現(xiàn)象,就就是正常常的工作作過程被被外部的的事件打打斷了。仔細(xì)研研究一下下生活中中的中斷斷,對于于我們學(xué)學(xué)習(xí)單片片機(jī)的中中斷也很很有好處處。第一一、什么么可經(jīng)引引起中斷斷,生活活中很多多事件可可以引起起中斷:

2、有人按按了門鈴鈴了,電電話鈴響響了,你你的鬧鐘鐘鬧響了了,你燒燒的水開開了.等等諸諸如此類類的事件件,我們們把可以以引起中中斷的稱稱之為中中斷源,單單片機(jī)中中也有一一些可以以引起中中斷的事事件,880311中一共共有5個(gè)個(gè):兩個(gè)個(gè)外部中中斷,兩兩個(gè)計(jì)數(shù)數(shù)/定時(shí)時(shí)器中斷斷,一個(gè)個(gè)串行口口中斷。 第二、中中斷的嵌嵌套與優(yōu)優(yōu)先級處處理:設(shè)設(shè)想一下下,我們們正在看看書,電電話鈴響響了,同同時(shí)又有有人按了了門鈴,你你該先做做那樣呢呢?如果果你正是是在等一一個(gè)很重重要的電電話,你你一般不不會去理理會門鈴鈴的,而而反之,你你正在等等一個(gè)重重要的客客人,則則可能就就不會去去理會電電話了。如如果不是是這兩者者(

3、即不不等電話話,也不不是等人人上門),你你可能會會按你通通常的習(xí)習(xí)慣去處處理??偪傊@里里存在一一個(gè)優(yōu)先先級的問問題,單單片機(jī)中中也是如如此,也也有優(yōu)先先級的問問題。優(yōu)優(yōu)先級的的問題不不僅僅發(fā)發(fā)生在兩兩個(gè)中斷斷同時(shí)產(chǎn)產(chǎn)生的情情況,也也發(fā)生在在一個(gè)中中斷已產(chǎn)產(chǎn)生,又又有一個(gè)個(gè)中斷產(chǎn)產(chǎn)生的情情況,比比如你正正接電話話,有人人按門鈴鈴的情況況,或你你正開門門與人交交談,又又有電話話響了情情況??伎紤]一下下我們會會怎么辦辦吧。第三、中中斷的響響應(yīng)過程程:當(dāng)有有事件產(chǎn)產(chǎn)生,進(jìn)進(jìn)入中斷斷之前我我們必須須先記住住現(xiàn)在看看書的第第幾頁了了,或拿拿一個(gè)書書簽放在在當(dāng)前頁頁的位置置,然后后去處理理不同的的事情(因

4、因?yàn)樘幚砝硗炅耍椅覀冞€要要回來繼繼續(xù)看書書):電電話鈴響響我們要要到放電電話的地地方去,門門鈴響我我們要到到門那邊邊去,也也說是不不同的中中斷,我我們要在在不同的的地點(diǎn)處處理,而而這個(gè)地地點(diǎn)通常常還是固固定的。計(jì)計(jì)算機(jī)中中也是采采用的這這種方法法,五個(gè)個(gè)中斷源源,每個(gè)個(gè)中斷產(chǎn)產(chǎn)生后都都到一個(gè)個(gè)固定的的地方去去找處理理這個(gè)中中斷的程程序,當(dāng)當(dāng)然在去去之前首首先要保保存下面面將執(zhí)行行的指令令的地址址,以便便處理完完中斷后后回到原原來的地地方繼續(xù)續(xù)往下執(zhí)執(zhí)行程序序。具體體地說,中中斷響應(yīng)應(yīng)可以分分為以下下幾個(gè)步步驟:11、保護(hù)護(hù)斷點(diǎn),即即保存下下一將要要執(zhí)行的的指令的的地址,就就是把這這個(gè)地址址送

5、入堆堆棧。22、尋找找中斷入入口,根根據(jù)5個(gè)個(gè)不同的的中斷源源所產(chǎn)生生的中斷斷,查找找5個(gè)不不同的入入口地址址。以上上工作是是由計(jì)算算機(jī)自動動完成的的,與編編程者無無關(guān)。在在這5個(gè)個(gè)入口地地址處存存放有中中斷處理理程序(這這是程序序編寫時(shí)時(shí)放在那那兒的,如如果沒把把中斷程程序放在在那兒,就就錯(cuò)了,中中斷程序序就不能能被執(zhí)行行到)。33、執(zhí)行行中斷處處理程序序。4、中中斷返回回:執(zhí)行行完中斷斷指令后后,就從從中斷處處返回到到主程序序,繼續(xù)續(xù)執(zhí)行。究竟單片機(jī)機(jī)是怎么么樣找到到中斷程程序所在在位置,又又怎么返返回的呢呢?我們們稍后再再談. MCS-551中斷斷系統(tǒng)的的結(jié)構(gòu):由與中中斷有關(guān)關(guān)的特殊殊功

6、能寄寄存器、中中斷入口口、順序序查詢邏邏輯電路路等組成成,包括括5個(gè)中中斷請求求源,44個(gè)用于于中斷控控制的寄寄存器IIE、IIP、EECONN和SCCON來來控制中中斷 類類弄、中中斷的開開、關(guān)和和各種中中斷源的的優(yōu)先級級確定。中斷請求源源:(1)外外部中斷斷請求源源:即外外中斷00和1,經(jīng)經(jīng)由外部部引腳引引入的,在在單片機(jī)機(jī)上有兩兩個(gè)引腳腳,名稱稱為INNT0、IINT11,也就就是P33.2、PP3.33這兩個(gè)個(gè)引腳。在在內(nèi)部的的TCOON中有有四位是是與外中中斷有關(guān)關(guān)的。IIT0:INTT0觸發(fā)發(fā)方式控控制位,可可由軟件件進(jìn)和置置位和復(fù)復(fù)位,IIT0=0,IINT00為低電電平觸發(fā)發(fā)方

7、式,IIT0=1,IINT00為負(fù)跳跳變觸發(fā)發(fā)方式。這這兩種方方式的差差異將在在以后再再談。IIE0:INTT0中斷斷請求標(biāo)標(biāo)志位。當(dāng)當(dāng)有外部部的中斷斷請求時(shí)時(shí),這位位就會置置1(這這由硬件件來完成成),在在CPUU響應(yīng)中中斷后,由由硬件將將IE00清0。IT1、IE1的用途和IT0、IE0相同。(2)內(nèi)內(nèi)部中斷斷請求源源TF00:定時(shí)時(shí)器T00的溢出出中斷標(biāo)標(biāo)記,當(dāng)當(dāng)T0計(jì)計(jì)數(shù)產(chǎn)生生溢出時(shí)時(shí),由硬硬件置位位TF00。當(dāng)CCPU響響應(yīng)中斷斷后,再再由硬件件將TFF0清00。TF1:與與TF00類似。TI、RII:串行行口發(fā)送送、接收收中斷,在在串口中中再講解解。2、中斷允允許寄存存器IEE在M

8、CS51中中斷系統(tǒng)統(tǒng)中,中中斷的允允許或禁禁止是由由片內(nèi)可可進(jìn)行位位尋址的的8位中中斷允許許寄存器器IE來來控制的的。見下下表 EAxxESET1EX1ET0EX0 其中EA是是總開關(guān)關(guān),如果果它等于于0,則則所有中中斷都不不允許。ES串行行口中斷斷允許ET1定定時(shí)器11中斷允允許EX1外外中斷11中斷允允許。ET0定定時(shí)器00中斷允允許EX0外外中斷00中斷允允許。如果我們要要設(shè)置允允許外中中斷1,定定時(shí)器11中斷允允許,其其它不允允許,則則IE可可以是 EAxxESET1EX1ET0EX0 10001100即8CH,當(dāng)當(dāng)然,我我們也可可以用位位操作指指令SETB EASSETBB ETT1

9、SETB EX11來實(shí)現(xiàn)它。3、五個(gè)中中斷源的的自然優(yōu)優(yōu)先級與與中斷服服務(wù)入口口地址外中斷0:00003H定時(shí)器0:0000BH外中斷1:00113H定時(shí)器1:0011BH串口 :000233H它們的自然然優(yōu)先級級由高到到低排列列。寫到這里,大大家應(yīng)當(dāng)當(dāng)明白,為為什么前前面有一一些程序序一始我我們這樣樣寫:ORG 000000HLJMP STAARTORG 000300HSTARTT:。這樣樣寫的目目的,就就是為了了讓出中中斷源所所占用的的向量地地址。當(dāng)當(dāng)然,在在程序中中沒用中中斷時(shí),直直接從000000H開始始寫程序序,在原原理上并并沒有錯(cuò)錯(cuò),但在在實(shí)際工工作中最最好不這這樣做。優(yōu)先級級:單

10、片片機(jī)采用用了自然然優(yōu)先級級和人工工設(shè)置高高、低優(yōu)優(yōu)先級的的策略,即即可以由由程序員員設(shè)定那那些中斷斷是高優(yōu)優(yōu)先級、哪哪些中斷斷是低優(yōu)優(yōu)先級,由由于只有有兩級,必必有一些些中斷處處于同一一級別,處處于同一一級別的的,就由由自然優(yōu)優(yōu)先級確確定。開開機(jī)時(shí),每每個(gè)中斷斷都處于于低優(yōu)先先級,我我們可以以用指令令對優(yōu)先先級進(jìn)行行設(shè)置??纯幢?中中斷優(yōu)先先級中由由中斷優(yōu)優(yōu)先級寄寄存器IIP來高高置的,IIP中某某位設(shè)為為1,相相應(yīng)的中中斷就是是高優(yōu)先先級,否否則就是是低優(yōu)先先級。 xxxPSPT1PX1PT0PX0 例:設(shè)有如如下要求求,將TT0、外外中斷11設(shè)為高高優(yōu)先級級,其它它為低優(yōu)優(yōu)先級,求求IP

11、的的值。IP的首33位沒用用,可任任意取值值,設(shè)為為0000,后面面根據(jù)要要求寫就就可以了了 xxxPSPT1PX1PT0PX0 00000110因此,最終終,IPP的值就就是066H。例例:在上上例中,如如果5個(gè)個(gè)中斷請請求同時(shí)時(shí)發(fā)生,求求中斷響響應(yīng)的次次序。響響應(yīng)次序序?yàn)椋憾ǘ〞r(shí)器00外外中斷11外外中斷00實(shí)實(shí)時(shí)器11串串行中斷斷。MCS551的中中斷響應(yīng)應(yīng)過程:11、中斷斷響應(yīng)的的條件:講到這這兒,我我們依然然對于計(jì)計(jì)算機(jī)響響應(yīng)中斷斷感到神神奇,我我們?nèi)丝煽梢皂憫?yīng)應(yīng)外界的的事件,是是因?yàn)槲椅覀冇卸喽喾N“傳傳感器“眼、耳耳可以接接受不同同的信息息,計(jì)算算機(jī)是如如何做到到這點(diǎn)的的呢?其其實(shí)

12、說穿穿了,一一點(diǎn)都不不希奇,MMCS551工作作時(shí),在在每個(gè)機(jī)機(jī)器周期期中都會會去查詢詢一下各各個(gè)中斷斷標(biāo)記,看看他們是是否是“11“,如如果是11,就說說明有中中斷請求求了,所所以所謂謂中斷,其其實(shí)也是是查詢,不不過是每每個(gè)周期期都查一一下而已已。這要要換成人人來說,就就相當(dāng)于于你在看看書的時(shí)時(shí)候,每每一秒鐘鐘都會抬抬起頭來來看一看看,查問問一下,是是不是有有人按門門鈴,是是否有電電話。很很蠢,不不是嗎?可計(jì)算算機(jī)本來來就是這這樣,它它根本沒沒人聰明明。了解解了上述述中斷的的過程,就就不難解解中斷響響應(yīng)的條條件了。在在下列三三種情況況之一時(shí)時(shí),CPPU將封封鎖對中中斷的響響應(yīng):CPU正在在處

13、理一一個(gè)同級級或更高高級別的的中斷請請求?,F(xiàn)行的的機(jī)器周周期不是是當(dāng)前正正執(zhí)行指指令的最最后一個(gè)個(gè)周期。我我們知道道,單片片機(jī)有單單周期、雙雙周期、三三周期指指令,當(dāng)當(dāng)前執(zhí)行行指令是是單字節(jié)節(jié)沒有關(guān)關(guān)系,如如果是雙雙字節(jié)或或四字節(jié)節(jié)的,就就要等整整條指令令都執(zhí)行行完了,才才能響應(yīng)應(yīng)中斷(因因?yàn)橹袛鄶嗖樵兪鞘窃诿總€(gè)個(gè)機(jī)器周周期都可可能查到到的)。當(dāng)當(dāng)前正執(zhí)執(zhí)行的指指令是返返回批令令(REETI)或或訪問IIP、IIE寄存存器的指指令,則則CPUU至少再再執(zhí)行一一條指令令才應(yīng)中中斷。這這些都是是與中斷斷有關(guān)的的,如果果正訪問問IP、IIE則可可能會開開、關(guān)中中斷或改改變中斷斷的優(yōu)先先級,而而中斷返

14、返回指令令則說明明本次中中斷還沒沒有處理理完,所所以都要要等本指指令處理理結(jié)束,再再執(zhí)行一一條指令令才可以以響應(yīng)中中斷。 2、中中斷響應(yīng)應(yīng)過程CPUU響應(yīng)中中斷時(shí),首首先把當(dāng)當(dāng)前指令令的下一一條指令令(就是是中斷返返回后將將要執(zhí)行行的指令令)的地地址送入入堆棧,然然后根據(jù)據(jù)中斷標(biāo)標(biāo)記,將將相應(yīng)的的中斷入入口地址址送入PPC,PPC是程程序指針針,CPPU取指指令就根根據(jù)PCC中的值值,PCC中是什什么值,就就會到什什么地方方去取指指令,所所以程序序就會轉(zhuǎn)轉(zhuǎn)到中斷斷入口處處繼續(xù)執(zhí)執(zhí)行。這這些工作作都是由由硬件來來完成的的,不必必我們?nèi)トタ紤]。這這里還有有個(gè)問題題,大家家是否注注意到,每每個(gè)中斷斷向量地地址只間間隔了88個(gè)單元元,如0000330000B,在在如此少少的空間間中如何何完成中中斷程序序呢?很很簡單,你你在中斷斷處安排排一個(gè)LLJMPP指令,不不就可以以把中斷斷程序跳跳轉(zhuǎn)到任任何地方方了嗎? 一個(gè)個(gè)完整的的主程序序看起來來應(yīng)該是是這樣的的:ORG 000000HLJMP STAARTORG 000033HLJMP INTT0 ;轉(zhuǎn)外中中斷0ORG 0000BBH。 RETTI ;沒有用用定時(shí)器器0中斷,在此放放一條RRETII,萬一一 “不小小心“產(chǎn)生了了中斷,也不會會有太大大的后果果。中斷程程序完成成后,一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論