第6章 中斷系統(tǒng)_第1頁(yè)
第6章 中斷系統(tǒng)_第2頁(yè)
第6章 中斷系統(tǒng)_第3頁(yè)
第6章 中斷系統(tǒng)_第4頁(yè)
第6章 中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第6 6章章 中斷系統(tǒng)中斷系統(tǒng)本章主要內(nèi)容6.1 中斷的概念6.2 MCS-51的中斷系統(tǒng)6.3 中斷處理過(guò)程6.4 中斷服務(wù)程序的設(shè)計(jì)6.5 外部中斷擴(kuò)展技術(shù)6.1 6.1 中斷的概念、作用中斷的概念、作用n 中斷是指中央處理器中斷是指中央處理器CPUCPU正在執(zhí)行程序,處理某件事情的時(shí)候,外部發(fā)生正在執(zhí)行程序,處理某件事情的時(shí)候,外部發(fā)生了某一事件請(qǐng)求了某一事件請(qǐng)求CPUCPU馬上處理,馬上處理,CPUCPU暫時(shí)中斷當(dāng)前的工作轉(zhuǎn)入處理所發(fā)生的暫時(shí)中斷當(dāng)前的工作轉(zhuǎn)入處理所發(fā)生的事件,處理完以后,再返回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的工作。事件,處理完以后,再返回到原來(lái)被中斷的地方,繼續(xù)原來(lái)的

2、工作。n 中斷機(jī)制常用于計(jì)算機(jī)與外部數(shù)據(jù)的傳送,以解決高速運(yùn)行的中斷機(jī)制常用于計(jì)算機(jī)與外部數(shù)據(jù)的傳送,以解決高速運(yùn)行的CPUCPU與低速與低速外設(shè)之間的矛盾;利用中斷機(jī)制可較好地實(shí)現(xiàn)外設(shè)之間的矛盾;利用中斷機(jī)制可較好地實(shí)現(xiàn)CPUCPU與外部設(shè)備的同步工作,與外部設(shè)備的同步工作,進(jìn)行實(shí)時(shí)處理。進(jìn)行實(shí)時(shí)處理。n 能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng)。能夠?qū)崿F(xiàn)中斷處理功能的部件稱為中斷系統(tǒng)。n 向向CPU CPU 提出中斷請(qǐng)求的來(lái)源稱為中斷源。提出中斷請(qǐng)求的來(lái)源稱為中斷源。n 中斷源向中斷源向CPU CPU 提出的處理請(qǐng)求,稱為中斷請(qǐng)求或中斷申請(qǐng)。提出的處理請(qǐng)求,稱為中斷請(qǐng)求或中斷申請(qǐng)。n CPU

3、 CPU 同意處理該請(qǐng)求稱為中斷響應(yīng),處理中斷請(qǐng)求的程序稱為中斷服務(wù)子同意處理該請(qǐng)求稱為中斷響應(yīng),處理中斷請(qǐng)求的程序稱為中斷服務(wù)子程序。程序。n 當(dāng)當(dāng)CPUCPU暫時(shí)終止正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)子程暫時(shí)終止正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)子程序時(shí),除了硬件自動(dòng)把斷點(diǎn)序時(shí),除了硬件自動(dòng)把斷點(diǎn)PCPC值(即下一條應(yīng)執(zhí)行的指令值(即下一條應(yīng)執(zhí)行的指令地址地址) )壓入堆棧之外,用戶應(yīng)注意保護(hù)有關(guān)的工作寄存器壓入堆棧之外,用戶應(yīng)注意保護(hù)有關(guān)的工作寄存器、累加器、標(biāo)志位等信息,這稱為保護(hù)現(xiàn)場(chǎng)。、累加器、標(biāo)志位等信息,這稱為保護(hù)現(xiàn)場(chǎng)。n 在完成中斷服務(wù)子程序后,恢復(fù)有關(guān)的工作寄存器、累加在完成中斷

4、服務(wù)子程序后,恢復(fù)有關(guān)的工作寄存器、累加器、標(biāo)志位的內(nèi)容,稱為恢復(fù)現(xiàn)場(chǎng);器、標(biāo)志位的內(nèi)容,稱為恢復(fù)現(xiàn)場(chǎng);n 最后執(zhí)行中斷返回指令最后執(zhí)行中斷返回指令RETIRETI,從堆棧中自動(dòng)彈出斷點(diǎn)地址,從堆棧中自動(dòng)彈出斷點(diǎn)地址PCPC,繼續(xù)執(zhí)行被中斷的程序,稱為中斷返回。,繼續(xù)執(zhí)行被中斷的程序,稱為中斷返回。n 優(yōu)先權(quán):給各中斷源規(guī)定一個(gè)優(yōu)先級(jí)別,稱為優(yōu)先權(quán)。當(dāng)兩個(gè)或者優(yōu)先權(quán):給各中斷源規(guī)定一個(gè)優(yōu)先級(jí)別,稱為優(yōu)先權(quán)。當(dāng)兩個(gè)或者兩個(gè)以上的中斷源同時(shí)提出中斷請(qǐng)求時(shí),計(jì)算機(jī)首先為優(yōu)先權(quán)最高兩個(gè)以上的中斷源同時(shí)提出中斷請(qǐng)求時(shí),計(jì)算機(jī)首先為優(yōu)先權(quán)最高的中斷源服務(wù),服務(wù)結(jié)束后再響應(yīng)級(jí)別較低的中斷源。計(jì)算機(jī)按中的中斷

5、源服務(wù),服務(wù)結(jié)束后再響應(yīng)級(jí)別較低的中斷源。計(jì)算機(jī)按中斷源級(jí)別高低逐次響應(yīng)的過(guò)程稱優(yōu)先權(quán)排隊(duì)。這個(gè)過(guò)程可以通過(guò)硬斷源級(jí)別高低逐次響應(yīng)的過(guò)程稱優(yōu)先權(quán)排隊(duì)。這個(gè)過(guò)程可以通過(guò)硬件電路來(lái)實(shí)現(xiàn),也可以通過(guò)程序查詢來(lái)實(shí)現(xiàn)。件電路來(lái)實(shí)現(xiàn),也可以通過(guò)程序查詢來(lái)實(shí)現(xiàn)。 n 中斷嵌套:中斷嵌套: 當(dāng)當(dāng)CPUCPU響應(yīng)某一中斷的請(qǐng)求而進(jìn)行中斷處理時(shí),若有優(yōu)響應(yīng)某一中斷的請(qǐng)求而進(jìn)行中斷處理時(shí),若有優(yōu)先權(quán)級(jí)別更高的中斷源發(fā)出中斷申請(qǐng),先權(quán)級(jí)別更高的中斷源發(fā)出中斷申請(qǐng),CPUCPU則中斷正在進(jìn)行的中斷服則中斷正在進(jìn)行的中斷服務(wù)程序,并保留這個(gè)程序的斷點(diǎn),響應(yīng)高級(jí)中斷,在高級(jí)中斷處理務(wù)程序,并保留這個(gè)程序的斷點(diǎn),響應(yīng)高級(jí)中斷

6、,在高級(jí)中斷處理完以后,再繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序(如圖完以后,再繼續(xù)執(zhí)行被中斷的中斷服務(wù)程序(如圖5-1(b)5-1(b)所示)。所示)。中斷申請(qǐng)的中斷源的優(yōu)先權(quán)級(jí)別與正在處理的中斷源同級(jí)或更低時(shí),中斷申請(qǐng)的中斷源的優(yōu)先權(quán)級(jí)別與正在處理的中斷源同級(jí)或更低時(shí),CPUCPU暫時(shí)不響應(yīng)這個(gè)中斷申請(qǐng),直至正在處理的中斷服務(wù)程序執(zhí)行完暫時(shí)不響應(yīng)這個(gè)中斷申請(qǐng),直至正在處理的中斷服務(wù)程序執(zhí)行完以后才去處理新的中斷申請(qǐng)。以后才去處理新的中斷申請(qǐng)。中斷處理示意圖主程序繼續(xù)執(zhí)行主程序執(zhí)行中斷服務(wù)程序主程序繼續(xù)執(zhí)行主程序高級(jí)中斷低級(jí)中斷中斷中斷返回返回(a)中斷響應(yīng)過(guò)程(b)中斷嵌套過(guò)程RETI6.2 MCS

7、-516.2 MCS-51中斷系統(tǒng)中斷系統(tǒng)n MCS-51 MCS-51 單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)隨型號(hào)的不同而不同,包單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)隨型號(hào)的不同而不同,包括中斷源數(shù)目,中斷優(yōu)先級(jí)、中斷控制寄存器都有差異。括中斷源數(shù)目,中斷優(yōu)先級(jí)、中斷控制寄存器都有差異。n 典型的典型的80518051單片機(jī)有單片機(jī)有5 5個(gè)中斷源,具有個(gè)中斷源,具有2 2個(gè)中斷優(yōu)先級(jí),可個(gè)中斷優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷嵌套。每一個(gè)中斷源可以設(shè)置為高優(yōu)先級(jí)以實(shí)現(xiàn)二級(jí)中斷嵌套。每一個(gè)中斷源可以設(shè)置為高優(yōu)先級(jí)或低優(yōu)先級(jí)中斷,允許或禁止向或低優(yōu)先級(jí)中斷,允許或禁止向CPUCPU申請(qǐng)中斷。申請(qǐng)中斷。01IT001IT0IE0IE0E

8、X0ET0EX1ET1ES0INTTF0TF11INTR ITIPX0PT0PX1PT1PS高 級(jí) 中 斷 請(qǐng) 求低 級(jí) 中 斷 請(qǐng) 求中 斷 查 詢 順 序EAIE寄 存 器IP寄 存 器6.2.1 MCS-516.2.1 MCS-51中斷源中斷源 8051 8051有有5 5個(gè)中斷源:個(gè)中斷源:2 2個(gè)是引腳個(gè)是引腳P3.2P3.2、P3.3P3.3入的外部中斷源;入的外部中斷源;3 3個(gè)是內(nèi)部中斷源,它們是定時(shí)器個(gè)是內(nèi)部中斷源,它們是定時(shí)器T0T0、T1T1和串行口的中和串行口的中斷請(qǐng)求。斷請(qǐng)求。(1)(1) 外部中斷外部中斷TCONTCON寄存器的格式如下:寄存器的格式如下:IE1:外

9、部中斷:外部中斷1請(qǐng)求源(請(qǐng)求源(/INT1,P3.3)標(biāo)志。)標(biāo)志。IE11表明外部中斷表明外部中斷1正在向正在向CPU申請(qǐng)中斷。當(dāng)申請(qǐng)中斷。當(dāng)CPU響應(yīng)該中斷時(shí)由硬件清響應(yīng)該中斷時(shí)由硬件清“0” (邊沿觸發(fā)(邊沿觸發(fā)方式)。方式)。IT1:外部中斷:外部中斷1觸發(fā)方式控制位。觸發(fā)方式控制位。 若若IT10,外部中斷,外部中斷1為電平觸發(fā)方式。這種方式下,為電平觸發(fā)方式。這種方式下,/INT1 端輸入端輸入低電平時(shí),置位低電平時(shí),置位IE1,CPU在每個(gè)周期都采樣在每個(gè)周期都采樣/INT1引腳的輸入電平,引腳的輸入電平,當(dāng)采樣到低電平時(shí),置當(dāng)采樣到低電平時(shí),置“1” IE1,采樣到高電平時(shí)清

10、,采樣到高電平時(shí)清“0”IE1。采用電。采用電平觸發(fā)方式時(shí),外部中斷源信號(hào)必須保持低電平信號(hào)有效,直到該中平觸發(fā)方式時(shí),外部中斷源信號(hào)必須保持低電平信號(hào)有效,直到該中斷被斷被CPU響應(yīng),同時(shí)在該中斷服務(wù)程序執(zhí)行完之前,外部中斷源必須響應(yīng),同時(shí)在該中斷服務(wù)程序執(zhí)行完之前,外部中斷源必須被清除,否則將產(chǎn)生另一次中斷。被清除,否則將產(chǎn)生另一次中斷。 IT1 IT11 1,外部中斷,外部中斷1 1控制為邊沿(先高后低的負(fù)跳變)觸發(fā)方式。控制為邊沿(先高后低的負(fù)跳變)觸發(fā)方式。這種方式這種方式CPUCPU在每一個(gè)周期采樣引腳的輸入電平。如果相繼的兩次采樣,在每一個(gè)周期采樣引腳的輸入電平。如果相繼的兩次采

11、樣,前一個(gè)周期采樣到前一個(gè)周期采樣到INT1INT1為高電平,后一個(gè)周期采樣到為高電平,后一個(gè)周期采樣到INT1INT1為低電平,為低電平,則置則置“1”IE11”IE1 IE1=1 IE1=1表示外部中斷表示外部中斷1 1正在向正在向CPUCPU申請(qǐng)中斷,直到該中斷申請(qǐng)中斷,直到該中斷CPUCPU響應(yīng)時(shí),響應(yīng)時(shí),才由硬件清才由硬件清“0”IE10”IE1。因?yàn)槊總€(gè)機(jī)器周期采樣一次外部中斷輸入電平,。因?yàn)槊總€(gè)機(jī)器周期采樣一次外部中斷輸入電平,因此采用邊沿觸發(fā)方式時(shí),外部中斷源輸入的高電平和低電平的時(shí)間因此采用邊沿觸發(fā)方式時(shí),外部中斷源輸入的高電平和低電平的時(shí)間必須保持必須保持1212個(gè)時(shí)鐘周期

12、以上,才能保證被個(gè)時(shí)鐘周期以上,才能保證被CPUCPU檢測(cè)到從高到低的跳變。檢測(cè)到從高到低的跳變。IE0IE0:外部中斷:外部中斷0 0請(qǐng)求源(請(qǐng)求源(/INT0/INT0,P3.2P3.2)標(biāo)志。)標(biāo)志。IE0=1IE0=1外部中斷外部中斷0 0向向CPUCPU請(qǐng)請(qǐng)求中斷當(dāng)求中斷當(dāng)CPU,CPU,響應(yīng)該中斷時(shí)由硬件清響應(yīng)該中斷時(shí)由硬件清“0”IE00”IE0(邊沿觸發(fā)方式)。(邊沿觸發(fā)方式)。IT0:IT0:外部中斷外部中斷0 0觸發(fā)方式控制,其控制方式與外部中斷觸發(fā)方式控制,其控制方式與外部中斷1 1類似。類似。IT0=0IT0=0:外部中斷:外部中斷0 0為電平觸發(fā)方式。為電平觸發(fā)方式。

13、IT0=1IT0=1:外部中斷:外部中斷0 0為邊沿觸發(fā)方式。為邊沿觸發(fā)方式。(2)定時(shí)器)定時(shí)器T0、T1中斷中斷 TF1和和TF0分別為定時(shí)器分別為定時(shí)器T1和和T0的溢出標(biāo)志。的溢出標(biāo)志。 TF1:T1溢出中斷標(biāo)志。溢出中斷標(biāo)志。T1被啟動(dòng)計(jì)數(shù)后,從初值開始加被啟動(dòng)計(jì)數(shù)后,從初值開始加1計(jì)數(shù),直計(jì)數(shù),直至計(jì)滿溢出后,由硬件使至計(jì)滿溢出后,由硬件使TF1l,向,向CPU請(qǐng)求中斷,此標(biāo)志一直保持到請(qǐng)求中斷,此標(biāo)志一直保持到CPU響應(yīng)中斷后,才由硬件自動(dòng)清響應(yīng)中斷后,才由硬件自動(dòng)清“0”。也可用軟件查詢?cè)摌?biāo)志,并由。也可用軟件查詢?cè)摌?biāo)志,并由軟件清軟件清“0”。 TF0:T0溢出中斷標(biāo)志。其操

14、作功能類似于溢出中斷標(biāo)志。其操作功能類似于TF1。(3 3)串行口中斷請(qǐng)求源)串行口中斷請(qǐng)求源 SCON SCON 為串行口控制寄存器,其低為串行口控制寄存器,其低2 2位鎖定串行口的發(fā)送中斷和接收中斷的位鎖定串行口的發(fā)送中斷和接收中斷的中斷請(qǐng)求標(biāo)志中斷請(qǐng)求標(biāo)志TITI和和RI RI TI TI:串行發(fā)送中斷標(biāo)志。:串行發(fā)送中斷標(biāo)志。CPUCPU將一個(gè)字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器將一個(gè)字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器SBUFSBUF后啟動(dòng)發(fā)后啟動(dòng)發(fā)送,每發(fā)送完一個(gè)串行幀,硬件置位送,每發(fā)送完一個(gè)串行幀,硬件置位TITI。TITI標(biāo)志由軟件清除。標(biāo)志由軟件清除。 RIRI:串行接收中斷標(biāo)志。在串行口允許接收時(shí),

15、每接收完一個(gè)串行幀,硬:串行接收中斷標(biāo)志。在串行口允許接收時(shí),每接收完一個(gè)串行幀,硬件置位件置位RIRI。RIRI標(biāo)志由軟件清除。標(biāo)志由軟件清除。 SCON SCON格式如下:格式如下:6.2.2 6.2.2 中斷控制中斷控制1中斷允許寄存器中斷允許寄存器IE (某位某位“1”允許,允許,“0”禁止)禁止)EA:中斷總允許:中斷總允許ES:串行口中斷允許位:串行口中斷允許位ET1:定時(shí):定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1的溢出中斷允許位。的溢出中斷允許位。EX1:外部中斷:外部中斷1中斷允許位中斷允許位ET0:定時(shí):定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0 的溢出中斷允許位。的溢出中斷允許位。EX0:中斷:中斷0中斷允許位

16、。中斷允許位。 IE 格式如下:格式如下:2 2中斷優(yōu)先級(jí)寄存器中斷優(yōu)先級(jí)寄存器IPIPMCS-51 MCS-51 單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),對(duì)于每一個(gè)中斷請(qǐng)求源可編程為高優(yōu)先級(jí)單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),對(duì)于每一個(gè)中斷請(qǐng)求源可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。專用寄存器中斷或低優(yōu)先級(jí)中斷。專用寄存器IPIP統(tǒng)一管理中斷優(yōu)先級(jí),它具有兩個(gè)中統(tǒng)一管理中斷優(yōu)先級(jí),它具有兩個(gè)中斷優(yōu)先級(jí),由軟件設(shè)置每個(gè)中斷源為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,并可斷優(yōu)先級(jí),由軟件設(shè)置每個(gè)中斷源為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,并可實(shí)現(xiàn)兩級(jí)中斷嵌套。高優(yōu)先級(jí)中斷源可以中斷正在執(zhí)行的低優(yōu)先級(jí)中斷服實(shí)現(xiàn)兩級(jí)中斷嵌套。高優(yōu)先級(jí)中斷源可以中斷

17、正在執(zhí)行的低優(yōu)先級(jí)中斷服務(wù)程序,除非在執(zhí)行低優(yōu)先級(jí)中斷服務(wù)程序時(shí)設(shè)置了務(wù)程序,除非在執(zhí)行低優(yōu)先級(jí)中斷服務(wù)程序時(shí)設(shè)置了CPUCPU關(guān)中斷或禁止某關(guān)中斷或禁止某些高優(yōu)先級(jí)中斷源的中斷。同級(jí)或低優(yōu)先級(jí)的中斷源不能中斷正在執(zhí)行的些高優(yōu)先級(jí)中斷源的中斷。同級(jí)或低優(yōu)先級(jí)的中斷源不能中斷正在執(zhí)行的中斷服務(wù)程序。如果中斷服務(wù)程序。如果IPIP中優(yōu)先級(jí)別相同,中優(yōu)先級(jí)別相同,CPUCPU將采用默認(rèn)優(yōu)先級(jí)處理中斷。將采用默認(rèn)優(yōu)先級(jí)處理中斷。中斷優(yōu)先級(jí)寄存器中斷優(yōu)先級(jí)寄存器IP IP 各位的功能(某位為各位的功能(某位為1 1,設(shè)置為高優(yōu)先級(jí)),設(shè)置為高優(yōu)先級(jí)) PS:串行口中斷優(yōu)先級(jí)控制位:串行口中斷優(yōu)先級(jí)控制位

18、PT1:定時(shí):定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1中斷優(yōu)先級(jí)控制位中斷優(yōu)先級(jí)控制位PX1:外部中斷:外部中斷1中斷優(yōu)先級(jí)控制位中斷優(yōu)先級(jí)控制位PT0:定時(shí)器:定時(shí)器T0中斷優(yōu)先級(jí)控制位中斷優(yōu)先級(jí)控制位PX0:外部中斷:外部中斷0 中斷優(yōu)先級(jí)控制位中斷優(yōu)先級(jí)控制位 默認(rèn)優(yōu)先級(jí)由硬件形成,排列次序如下:默認(rèn)優(yōu)先級(jí)由硬件形成,排列次序如下: 中斷源中斷源 同優(yōu)先級(jí)中的優(yōu)先輪詢順序同優(yōu)先級(jí)中的優(yōu)先輪詢順序外部中斷外部中斷0 0 最高級(jí)最高級(jí)定時(shí)器定時(shí)器T0 T0 外部中斷外部中斷1 1 定時(shí)器定時(shí)器T1T1串行口中斷串行口中斷 最低級(jí)最低級(jí)當(dāng)重新設(shè)置優(yōu)先級(jí)時(shí),則順序查詢邏輯電路將會(huì)改變相應(yīng)排隊(duì)順序。當(dāng)重新設(shè)置優(yōu)先級(jí)

19、時(shí),則順序查詢邏輯電路將會(huì)改變相應(yīng)排隊(duì)順序。例如,給中斷優(yōu)先級(jí)寄存器例如,給中斷優(yōu)先級(jí)寄存器IPIP中設(shè)置的優(yōu)先級(jí)控制字為中設(shè)置的優(yōu)先級(jí)控制字為11H11H,則,則PSPS和和PX0PX0均為高優(yōu)先級(jí)中斷。當(dāng)這兩個(gè)中斷源同時(shí)發(fā)出中斷申請(qǐng)時(shí),均為高優(yōu)先級(jí)中斷。當(dāng)這兩個(gè)中斷源同時(shí)發(fā)出中斷申請(qǐng)時(shí),CPUCPU將先將先響應(yīng)自然優(yōu)先級(jí)高的響應(yīng)自然優(yōu)先級(jí)高的PX0PX0的中斷申請(qǐng),而后響應(yīng)自然優(yōu)先級(jí)低的的中斷申請(qǐng),而后響應(yīng)自然優(yōu)先級(jí)低的PSPS的的中斷申請(qǐng)。中斷申請(qǐng)。 6. 3 6. 3 中斷處理過(guò)程中斷處理過(guò)程一、中斷響應(yīng)條件一、中斷響應(yīng)條件CPU CPU 在每一個(gè)機(jī)器周期順序檢查每一個(gè)中斷源。并按優(yōu)先

20、級(jí)處理每個(gè)被在每一個(gè)機(jī)器周期順序檢查每一個(gè)中斷源。并按優(yōu)先級(jí)處理每個(gè)被激活的中斷請(qǐng)求,如果沒(méi)有被下述條件所阻止,將在下一個(gè)機(jī)器周期激活的中斷請(qǐng)求,如果沒(méi)有被下述條件所阻止,將在下一個(gè)機(jī)器周期響應(yīng)激活了的最高級(jí)中斷請(qǐng)求。響應(yīng)激活了的最高級(jí)中斷請(qǐng)求。(1 1)CPU CPU 正在處理相同的或更高優(yōu)先級(jí)的中斷;正在處理相同的或更高優(yōu)先級(jí)的中斷;(2 2)現(xiàn)行的機(jī)器周期不是所執(zhí)行指令的最后)現(xiàn)行的機(jī)器周期不是所執(zhí)行指令的最后個(gè)機(jī)器周期;個(gè)機(jī)器周期;(3 3)正在執(zhí)行的指令是)正在執(zhí)行的指令是RETI RETI 或是訪問(wèn)或是訪問(wèn)IEIE或或IPIP的指令(的指令(CPU CPU 在執(zhí)行在執(zhí)行RETI R

21、ETI 或訪問(wèn)或訪問(wèn)IEIE、IP IP 的指令后,至少需要再執(zhí)行一條指令才會(huì)響應(yīng)新的中的指令后,至少需要再執(zhí)行一條指令才會(huì)響應(yīng)新的中斷請(qǐng)求)。斷請(qǐng)求)。如果上述條件中有一個(gè)存在,如果上述條件中有一個(gè)存在,CPUCPU將丟棄中斷查詢結(jié)果;若一個(gè)條件都將丟棄中斷查詢結(jié)果;若一個(gè)條件都不存在,將在緊接著的下一個(gè)周期執(zhí)行中斷查詢結(jié)果。不存在,將在緊接著的下一個(gè)周期執(zhí)行中斷查詢結(jié)果。二、中斷響應(yīng)過(guò)程二、中斷響應(yīng)過(guò)程(1)CPU(1)CPU響應(yīng)中斷時(shí),先置位相應(yīng)的中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器(該觸發(fā)器指響應(yīng)中斷時(shí),先置位相應(yīng)的中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器(該觸發(fā)器指出出CPUCPU開始處理中斷的級(jí)別),然后執(zhí)行一條硬件

22、子程序調(diào)用,使控開始處理中斷的級(jí)別),然后執(zhí)行一條硬件子程序調(diào)用,使控制轉(zhuǎn)移到相應(yīng)的中斷入口,清制轉(zhuǎn)移到相應(yīng)的中斷入口,清“0”0”中斷請(qǐng)求源申請(qǐng)標(biāo)志(中斷請(qǐng)求源申請(qǐng)標(biāo)志(TITI、RIRI除除外)。外)。(2)(2)接著把接著把PCPC值壓入堆棧,保護(hù)斷點(diǎn)值壓入堆棧,保護(hù)斷點(diǎn)(3)(3)將被響應(yīng)的中斷服務(wù)程序的入口地址送入將被響應(yīng)的中斷服務(wù)程序的入口地址送入PCPC。MCS-51MCS-51系列單片機(jī)系列單片機(jī)5 5個(gè)個(gè)中斷服務(wù)程序有固定的入口地址,由于中斷服務(wù)程序有固定的入口地址,由于5 5個(gè)地址之間僅隔個(gè)地址之間僅隔8 8個(gè)單元,用個(gè)單元,用于存放中斷服務(wù)程序往往不夠用,因此通常也在這里

23、放一條絕對(duì)轉(zhuǎn)移于存放中斷服務(wù)程序往往不夠用,因此通常也在這里放一條絕對(duì)轉(zhuǎn)移指令,轉(zhuǎn)到真正的中斷服務(wù)程序。指令,轉(zhuǎn)到真正的中斷服務(wù)程序。 (4) CPU(4) CPU執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序(5) (5) 中斷返回。中斷服務(wù)程序中以中斷返回。中斷服務(wù)程序中以RETIRETI指令結(jié)束。指令結(jié)束。CPUCPU執(zhí)行完這條指令后,執(zhí)行完這條指令后,清清“0”0”響應(yīng)中斷時(shí)所設(shè)置的優(yōu)先級(jí)觸發(fā)器,然后從堆棧中彈出棧頂響應(yīng)中斷時(shí)所設(shè)置的優(yōu)先級(jí)觸發(fā)器,然后從堆棧中彈出棧頂?shù)膬蓚€(gè)字節(jié)到的兩個(gè)字節(jié)到PCPC,CPUCPU從原來(lái)被中斷處繼續(xù)執(zhí)行被中斷的程序。由此從原來(lái)被中斷處繼續(xù)執(zhí)行被中斷的程序。由此可見(jiàn),用

24、戶的中斷服務(wù)程序必須加上返回指令可見(jiàn),用戶的中斷服務(wù)程序必須加上返回指令RETIRETI指令,指令,CPUCPU的現(xiàn)場(chǎng)的現(xiàn)場(chǎng)保護(hù)和恢復(fù)必須由用戶中斷服務(wù)程序處理。保護(hù)和恢復(fù)必須由用戶中斷服務(wù)程序處理。中斷入口地址如下:中斷入口地址如下:注意:CPU響應(yīng)某中斷請(qǐng)求后,在中斷返回前,應(yīng)該撤消該中斷請(qǐng)求標(biāo)志,否則會(huì)引起另一次中斷。(1)定時(shí)器0或1溢出中斷,CPU在響應(yīng)中斷后,中斷請(qǐng)求由硬 件自動(dòng)撤除。(2)邊沿激活的外部中斷,CPU在響應(yīng)中斷后,硬件自動(dòng)清除有關(guān)的中斷請(qǐng)求。(3)串行口中斷,CPU響應(yīng)中斷后,靠軟件來(lái)清除相應(yīng)的標(biāo)志。(4)電平觸發(fā)的外部中斷撤除。在電平觸發(fā)方式下,外部中斷標(biāo)志IE0

25、或IE1是依靠CPU檢測(cè) 或 上的低電平置位的。盡管CPU在響應(yīng)中斷時(shí)能由硬件自動(dòng)復(fù)位IE0或IE1,但若外部中斷源不能及時(shí)撤除或上的低電平,就會(huì)使已經(jīng)復(fù)位的IE0或IE1再次置位,這是絕對(duì)不允許的。因此電平觸發(fā)型外部中斷請(qǐng)求的撤除必須使或隨著其中斷的響應(yīng)而變?yōu)楦唠娖?。下圖是撤除電平觸發(fā)中斷的可行的方案。0INT1INT圖中觸發(fā)器的作用是鎖存外部中斷請(qǐng)求的低電平信號(hào),并由Q端輸出到供CPU檢測(cè)。D觸發(fā)器的異步置位端接單片機(jī)的P1.0,此端口平時(shí)為“1”,對(duì)D觸發(fā)器輸出無(wú)影響。當(dāng)中斷響應(yīng)后,為了撤除中斷請(qǐng)求,只要在P1.0上輸出一個(gè)負(fù)脈沖,使觸發(fā)器置“1”,就可以撤除低電平的中斷請(qǐng)求。負(fù)脈沖信號(hào)

26、可以用下面兩條指令實(shí)現(xiàn)。ANL Pl,# 0FEHORL P1,# 01H執(zhí)行第一條指令使P1.0輸出為“0”,其持續(xù)時(shí)間為2個(gè)機(jī)器周期,足以使D觸發(fā)器置位,從而撤除中斷請(qǐng)求。執(zhí)行第二條指令使P1.0變?yōu)椤?”,否則D觸發(fā)器的S端始終有效,INT0端始終為“1”,無(wú)法再次申請(qǐng)中斷。QDSDCPP1.00INT中斷請(qǐng)求(外部中斷請(qǐng)求)6.4 6.4 中斷服務(wù)程序的設(shè)計(jì)中斷服務(wù)程序的設(shè)計(jì)中斷程序一般包含中斷控制程序(即中斷初始化程序)和中斷服務(wù)程序中斷程序一般包含中斷控制程序(即中斷初始化程序)和中斷服務(wù)程序兩部分。兩部分。 (1 1)中斷初始化程序)中斷初始化程序 中斷初始化程序?qū)嵸|(zhì)上就是對(duì)中斷

27、初始化程序?qū)嵸|(zhì)上就是對(duì)TCONTCON、SCONSCON、IEIE和和IPIP寄存器的管理和寄存器的管理和控制。只要這些寄存器的相應(yīng)位按照要求進(jìn)行了狀態(tài)預(yù)置,控制。只要這些寄存器的相應(yīng)位按照要求進(jìn)行了狀態(tài)預(yù)置,CPUCPU就會(huì)就會(huì)按照用戶的意圖對(duì)中斷源進(jìn)行管理和控制。中斷初始化程序一般不按照用戶的意圖對(duì)中斷源進(jìn)行管理和控制。中斷初始化程序一般不獨(dú)立編寫,而是包含在主程序中,根據(jù)需要進(jìn)行編寫。獨(dú)立編寫,而是包含在主程序中,根據(jù)需要進(jìn)行編寫。 中斷初始化程序需完成以下操作:中斷初始化程序需完成以下操作:開中斷;開中斷;某一中斷源中斷請(qǐng)求的允許與禁止某一中斷源中斷請(qǐng)求的允許與禁止( (屏蔽屏蔽) )

28、;確定各中斷源的優(yōu)先級(jí)別;確定各中斷源的優(yōu)先級(jí)別;若是外部中斷請(qǐng)求,則要設(shè)定觸發(fā)方式是電平觸發(fā)還是邊沿觸發(fā)。若是外部中斷請(qǐng)求,則要設(shè)定觸發(fā)方式是電平觸發(fā)還是邊沿觸發(fā)。 【例】 假設(shè)規(guī)定外部中斷0為電平觸發(fā)方式,高優(yōu)先級(jí),試寫出有關(guān)的初始化程序。解:可用兩種方法完成。 方法1,用位操作指令完成:SETB EA ;開中斷允許總控制位SETB EX0 ;外中斷0開中斷SETB PX0;外中斷0高優(yōu)先級(jí)CLR IT0;電平觸發(fā) 方法2,用其它指令也可完成同樣功能:MOV IE,#81H;同時(shí)置位EA和EX0ORL IP,#01H;置位PX0ANL TCON,#0FEH ;使IT0為0(2 2)中斷服務(wù)

29、程序)中斷服務(wù)程序 中斷服務(wù)程序是一種為中斷源的特定任務(wù)而編寫的獨(dú)立程序,以中斷返回中斷服務(wù)程序是一種為中斷源的特定任務(wù)而編寫的獨(dú)立程序,以中斷返回指令指令RETIRETI結(jié)束。中斷服務(wù)程序結(jié)束后返回到原來(lái)被中斷的地方結(jié)束。中斷服務(wù)程序結(jié)束后返回到原來(lái)被中斷的地方( (即斷點(diǎn)即斷點(diǎn)) ),繼續(xù)執(zhí)行原來(lái)的程序。繼續(xù)執(zhí)行原來(lái)的程序。中斷服務(wù)程序和子程序一樣,在調(diào)用和返回時(shí),也有一個(gè)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)中斷服務(wù)程序和子程序一樣,在調(diào)用和返回時(shí),也有一個(gè)保護(hù)斷點(diǎn)和現(xiàn)場(chǎng)的問(wèn)題。在中斷響應(yīng)過(guò)程中,斷點(diǎn)的保護(hù)主要由硬件電路自動(dòng)實(shí)現(xiàn)。它的問(wèn)題。在中斷響應(yīng)過(guò)程中,斷點(diǎn)的保護(hù)主要由硬件電路自動(dòng)實(shí)現(xiàn)。它將斷點(diǎn)壓人堆棧,再

30、將中斷服務(wù)程序的入口地址送入程序計(jì)數(shù)器將斷點(diǎn)壓人堆棧,再將中斷服務(wù)程序的入口地址送入程序計(jì)數(shù)器PCPC,使,使程序轉(zhuǎn)向中斷服務(wù)程序。中斷處理時(shí)現(xiàn)場(chǎng)保護(hù)由中斷服務(wù)程序來(lái)完成。程序轉(zhuǎn)向中斷服務(wù)程序。中斷處理時(shí)現(xiàn)場(chǎng)保護(hù)由中斷服務(wù)程序來(lái)完成。現(xiàn)場(chǎng)一般包括累加器現(xiàn)場(chǎng)一般包括累加器A A、工作寄存器、工作寄存器R0R0R7R7以及程序狀態(tài)字以及程序狀態(tài)字PSWPSW等。保護(hù)現(xiàn)等。保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)一般采用場(chǎng)和恢復(fù)現(xiàn)場(chǎng)一般采用 PUSHPUSH和和POPPOP指令來(lái)實(shí)現(xiàn)。指令來(lái)實(shí)現(xiàn)。此外,在編寫中斷服務(wù)程序時(shí)還應(yīng)注意以下三點(diǎn):此外,在編寫中斷服務(wù)程序時(shí)還應(yīng)注意以下三點(diǎn):1 1)各中斷源入口地址之間只相隔)各

31、中斷源入口地址之間只相隔8 8個(gè)字節(jié)。中斷服務(wù)程序放在此處,個(gè)字節(jié)。中斷服務(wù)程序放在此處,一般容量是不夠的。常用的方法是在中斷入口地址單元處,存放一般容量是不夠的。常用的方法是在中斷入口地址單元處,存放條條無(wú)條件轉(zhuǎn)移指令,如無(wú)條件轉(zhuǎn)移指令,如“LJMP Address”LJMP Address”,使程序跳轉(zhuǎn)到用戶安排的中,使程序跳轉(zhuǎn)到用戶安排的中斷服務(wù)程序起始地址去。斷服務(wù)程序起始地址去。 2 2)在執(zhí)行當(dāng)前中斷程序時(shí),為了禁止更高優(yōu)先級(jí)中斷源的中斷請(qǐng)求,)在執(zhí)行當(dāng)前中斷程序時(shí),為了禁止更高優(yōu)先級(jí)中斷源的中斷請(qǐng)求,可先用軟件關(guān)閉可先用軟件關(guān)閉CPUCPU中斷,或屏蔽更高級(jí)中斷源的中斷,在中斷返

32、回前中斷,或屏蔽更高級(jí)中斷源的中斷,在中斷返回前再開放被關(guān)閉或被屏蔽的中斷。再開放被關(guān)閉或被屏蔽的中斷。3 3)在多級(jí)中斷情況下,應(yīng)在保護(hù)現(xiàn)場(chǎng)之前關(guān)掉中斷,在恢復(fù)現(xiàn)場(chǎng)之后)在多級(jí)中斷情況下,應(yīng)在保護(hù)現(xiàn)場(chǎng)之前關(guān)掉中斷,在恢復(fù)現(xiàn)場(chǎng)之后打開中斷。如果在中斷處理時(shí)允許有更高級(jí)的中斷打斷它,則在保護(hù)打開中斷。如果在中斷處理時(shí)允許有更高級(jí)的中斷打斷它,則在保護(hù)現(xiàn)場(chǎng)之后開中斷,恢復(fù)現(xiàn)場(chǎng)之前關(guān)中斷?,F(xiàn)場(chǎng)之后開中斷,恢復(fù)現(xiàn)場(chǎng)之前關(guān)中斷。 【例】設(shè)在主程序中用到了寄存器PSW、ACC、B、DPTR,而在執(zhí)行中斷服務(wù)程序時(shí)需要用到這些寄存器。試編寫程序在中斷服務(wù)程序中對(duì)這些寄存器加以保護(hù)。SERVICE:PUSHP

33、SW;保護(hù)程序狀態(tài)字PUSHACC;保護(hù)累加器APUSHB;保護(hù)寄存器BPUSHDPL;保護(hù)數(shù)據(jù)指針低字節(jié)PUSHDPH;保護(hù)數(shù)據(jù)指針高字節(jié) ;中斷處理POPDPH;恢復(fù)現(xiàn)場(chǎng) POPDPL POP BPOPACCPOPPSWRETI 6.5 6.5 中斷的擴(kuò)展中斷的擴(kuò)展外部中斷源進(jìn)行擴(kuò)展,可采用以下3條解決的途經(jīng): 利用定時(shí)器擴(kuò)展中斷源 中斷與查詢相結(jié)合的方法; 利用優(yōu)先級(jí)編碼器擴(kuò)展外部中斷源。6.5.1 6.5.1 利用定時(shí)器擴(kuò)展中斷源利用定時(shí)器擴(kuò)展中斷源利用MCS-51系列單片機(jī)定時(shí)器計(jì)數(shù)引腳T0或T1的負(fù)跳變產(chǎn)生溢出中斷作為外部中斷請(qǐng)求信號(hào)。定時(shí)器T0、T1有兩個(gè)溢出中斷標(biāo)志和兩個(gè)外部計(jì)

34、數(shù)引腳T0(P3.4)、T1(P3.5),如果將定時(shí)器設(shè)置為計(jì)數(shù)器方式,并將計(jì)數(shù)初值設(shè)為滿量程FFH,當(dāng)外部信號(hào)通過(guò)計(jì)數(shù)引腳產(chǎn)生一個(gè)負(fù)跳變信號(hào)時(shí),計(jì)數(shù)器加1產(chǎn)生溢出中斷。因此外部計(jì)數(shù)引腳T0(P3.4)和T1(P3.5)就成為新的外部中斷源。 6.5.2 6.5.2 中斷與查詢相結(jié)合中斷與查詢相結(jié)合當(dāng)系統(tǒng)需要多個(gè)中斷源時(shí),可把它們按輕重緩急進(jìn)行排隊(duì)。把其中級(jí)別最高的中斷源接到(或)端,其余外部設(shè)備的中斷請(qǐng)求可通過(guò)一定的電路連接到(或)端,同時(shí)每個(gè)外部設(shè)備的中斷請(qǐng)求分別連接到一位I/O口線,如P1口。無(wú)論哪一個(gè)外設(shè)提出中斷請(qǐng)求,都會(huì)使引腳變低,要判斷是哪個(gè)外設(shè)請(qǐng)求中斷,可以通過(guò)程序查詢P1口的邏

35、輯電平獲知。 【例】利用外部中斷請(qǐng)求輸入線擴(kuò)展4個(gè)外部中斷源的應(yīng)用實(shí)例。利用這個(gè)中斷擴(kuò)展電路,MCS-51可把外部中斷源的個(gè)數(shù)擴(kuò)展到五個(gè),即允許有四個(gè)外部設(shè)備通過(guò)/INT0向CPU申請(qǐng)中斷。 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014

36、P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C122PFC222PFC310uFX112MR110kK4K2K3K1U3AND_4參考程序如下: ORG0003HLJMPINT_0 ;轉(zhuǎn)向中斷服務(wù)程序入口ORG0100HINT_0:PUSHPSW ;保護(hù)現(xiàn)場(chǎng)PUSHAJBP3.4,IT1 ;是否外設(shè)1中斷,P3.41則轉(zhuǎn)向IT1執(zhí)行JBP3.5,IT2 ;是否外設(shè)2中斷,P3.51則轉(zhuǎn)向IT2執(zhí)行JBP3.6,IT3 ;是否外設(shè)3中斷,P3.61則轉(zhuǎn)向IT3執(zhí)行JBP3.7,IT4 ;是否外設(shè)4中斷,P3.71則轉(zhuǎn)向IT4執(zhí)行EXIT:POPA ;恢復(fù)現(xiàn)場(chǎng)POPPSWRETIIT

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論