第五章中斷控制系統(tǒng)_第1頁(yè)
第五章中斷控制系統(tǒng)_第2頁(yè)
第五章中斷控制系統(tǒng)_第3頁(yè)
第五章中斷控制系統(tǒng)_第4頁(yè)
第五章中斷控制系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(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、第五章第五章 中斷控制系統(tǒng)中斷控制系統(tǒng)5.1 中中 斷斷 系系 統(tǒng)統(tǒng) 5.1.1 MCS-51的中斷系統(tǒng)的中斷系統(tǒng) 采用查詢方式編程與采用中斷方式編程對(duì)比,效果相同,采用查詢方式編程與采用中斷方式編程對(duì)比,效果相同,但二者有質(zhì)的區(qū)別。前者但二者有質(zhì)的區(qū)別。前者采用查詢法用子程序調(diào)用方式延時(shí),采用查詢法用子程序調(diào)用方式延時(shí),在在1 s延時(shí)期間,延時(shí)期間,CPU只能在延時(shí)子程序中運(yùn)行只能在延時(shí)子程序中運(yùn)行;后者;后者采用中采用中斷方式延時(shí),在斷方式延時(shí),在1 s延時(shí)期間,除定時(shí)器延時(shí)期間,除定時(shí)器1中斷發(fā)生時(shí),中斷發(fā)生時(shí),CPU以以極短的時(shí)間運(yùn)行中斷服務(wù)程序之外,其余時(shí)間均可用來(lái)運(yùn)行極短的時(shí)間運(yùn)行

2、中斷服務(wù)程序之外,其余時(shí)間均可用來(lái)運(yùn)行其它程序其它程序。后者盡管程序較長(zhǎng),但。后者盡管程序較長(zhǎng),但CPU效率明顯提高。效率明顯提高。 1中斷的概念中斷的概念 中斷是通過(guò)硬件來(lái)改變中斷是通過(guò)硬件來(lái)改變CPU的運(yùn)行方向的。計(jì)算機(jī)在的運(yùn)行方向的。計(jì)算機(jī)在執(zhí)行程序的過(guò)程中,當(dāng)出現(xiàn)執(zhí)行程序的過(guò)程中,當(dāng)出現(xiàn)CPU以外的某種情況以外的某種情況時(shí)時(shí),由服,由服務(wù)對(duì)象向務(wù)對(duì)象向CPU發(fā)出中斷請(qǐng)求信號(hào)發(fā)出中斷請(qǐng)求信號(hào)(中斷發(fā)生中斷發(fā)生),要求,要求CPU暫時(shí)中斷當(dāng)前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序暫時(shí)中斷當(dāng)前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序(中斷響應(yīng)和中斷服務(wù)中斷響應(yīng)和中斷服務(wù)) ,待處理程序執(zhí)行完畢后,待處

3、理程序執(zhí)行完畢后,再繼續(xù)執(zhí)行原來(lái)被中斷的程序再繼續(xù)執(zhí)行原來(lái)被中斷的程序(中斷返回中斷返回) 。這種程序。這種程序在執(zhí)行過(guò)程中由于外界的原因而被中間打斷的情況稱為在執(zhí)行過(guò)程中由于外界的原因而被中間打斷的情況稱為“中斷中斷”。 “中斷中斷”之后所執(zhí)行的相應(yīng)的處理程序通常稱之為之后所執(zhí)行的相應(yīng)的處理程序通常稱之為中斷服務(wù)中斷服務(wù)或或中斷處理中斷處理子程序子程序,原來(lái)正常運(yùn)行的程序稱,原來(lái)正常運(yùn)行的程序稱為主程序?yàn)橹鞒绦?。主程序被斷開(kāi)的位置(或地址)。主程序被斷開(kāi)的位置(或地址)稱為稱為“斷點(diǎn)斷點(diǎn)”。引起中斷的原因,或能發(fā)出中斷申請(qǐng)的來(lái)源,稱為。引起中斷的原因,或能發(fā)出中斷申請(qǐng)的來(lái)源,稱為“中斷中斷源

4、源”。中斷源要求服務(wù)的請(qǐng)求稱為。中斷源要求服務(wù)的請(qǐng)求稱為“中斷請(qǐng)求中斷請(qǐng)求”(或中斷申請(qǐng))(或中斷申請(qǐng))。再回到原再回到原來(lái)被中斷的地方(即斷點(diǎn)),稱為來(lái)被中斷的地方(即斷點(diǎn)),稱為中斷返回中斷返回。實(shí)現(xiàn)上述中斷功能的部件稱為。實(shí)現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)中斷系統(tǒng)(中斷機(jī)構(gòu))(中斷機(jī)構(gòu))。 調(diào)用中斷服務(wù)程序的過(guò)程類似于調(diào)用子程序,其區(qū)別調(diào)用中斷服務(wù)程序的過(guò)程類似于調(diào)用子程序,其區(qū)別在于調(diào)用子程序在程序中是事先安排好的,而何時(shí)調(diào)用中在于調(diào)用子程序在程序中是事先安排好的,而何時(shí)調(diào)用中斷服務(wù)程序事先卻無(wú)法確定,因?yàn)閿喾?wù)程序事先卻無(wú)法確定,因?yàn)椤爸袛嘀袛唷钡陌l(fā)生是由外的發(fā)生是由外部因素決定的部

5、因素決定的,程序中無(wú)法事先安排調(diào)用指令程序中無(wú)法事先安排調(diào)用指令,因此,調(diào),因此,調(diào)用中斷服務(wù)程序的過(guò)程是用中斷服務(wù)程序的過(guò)程是由硬件自動(dòng)完成由硬件自動(dòng)完成的。的。 隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷隨著計(jì)算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷技術(shù)不僅解決了快速主機(jī)與慢速技術(shù)不僅解決了快速主機(jī)與慢速I/OI/O設(shè)備的設(shè)備的數(shù)據(jù)傳送問(wèn)題,而且還具有如下優(yōu)點(diǎn):數(shù)據(jù)傳送問(wèn)題,而且還具有如下優(yōu)點(diǎn):分時(shí)操作分時(shí)操作。CPUCPU可以分時(shí)為多個(gè)可以分時(shí)為多個(gè)I/OI/O設(shè)備服設(shè)備服務(wù),提高了計(jì)算機(jī)的利用率;務(wù),提高了計(jì)算機(jī)的利用率;實(shí)時(shí)響應(yīng)實(shí)時(shí)響應(yīng)。CPUCPU能夠及時(shí)處理應(yīng)用系統(tǒng)的隨能夠及時(shí)處理應(yīng)用系統(tǒng)的隨機(jī)事件

6、,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);機(jī)事件,系統(tǒng)的實(shí)時(shí)性大大增強(qiáng);可靠性高可靠性高。CPUCPU具有處理設(shè)備故障及掉電等具有處理設(shè)備故障及掉電等突發(fā)性事件的能力,從而使系統(tǒng)可靠性提高。突發(fā)性事件的能力,從而使系統(tǒng)可靠性提高。 2中斷的特點(diǎn)中斷的特點(diǎn) 1) 分時(shí)操作分時(shí)操作 中斷可以解決快速的中斷可以解決快速的CPU與慢速的外設(shè)之間的矛盾,使與慢速的外設(shè)之間的矛盾,使CPU和外設(shè)同時(shí)工作。和外設(shè)同時(shí)工作。CPU在啟動(dòng)外設(shè)工作后繼續(xù)執(zhí)行主程序,在啟動(dòng)外設(shè)工作后繼續(xù)執(zhí)行主程序,同時(shí)外設(shè)也在工作。同時(shí)外設(shè)也在工作。每當(dāng)外設(shè)做完一件事就發(fā)出中斷申請(qǐng),請(qǐng)每當(dāng)外設(shè)做完一件事就發(fā)出中斷申請(qǐng),請(qǐng)求求CPU中斷它正在執(zhí)行的程

7、序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序(一般中斷它正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序(一般情況是處理輸入情況是處理輸入/輸出數(shù)據(jù))輸出數(shù)據(jù)),中斷處理完之后,中斷處理完之后,CPU恢復(fù)執(zhí)行恢復(fù)執(zhí)行主程序,外設(shè)也繼續(xù)工作。這樣,主程序,外設(shè)也繼續(xù)工作。這樣,CPU可啟動(dòng)多個(gè)外設(shè)同時(shí)工可啟動(dòng)多個(gè)外設(shè)同時(shí)工作作,大大地提高了,大大地提高了CPU的效率。的效率。 2) 實(shí)時(shí)處理實(shí)時(shí)處理 在實(shí)時(shí)控制中,現(xiàn)場(chǎng)的各種在實(shí)時(shí)控制中,現(xiàn)場(chǎng)的各種參數(shù)、信息均隨時(shí)間和現(xiàn)場(chǎng)參數(shù)、信息均隨時(shí)間和現(xiàn)場(chǎng)而變化而變化。這些外界變量可根據(jù)要求隨時(shí)向。這些外界變量可根據(jù)要求隨時(shí)向CPU發(fā)出中斷申請(qǐng),發(fā)出中斷申請(qǐng),請(qǐng)求請(qǐng)求CPU及時(shí)處理中斷請(qǐng)

8、求。如中斷條件滿足,及時(shí)處理中斷請(qǐng)求。如中斷條件滿足,CPU馬上就馬上就會(huì)響應(yīng),進(jìn)行相應(yīng)的處理會(huì)響應(yīng),進(jìn)行相應(yīng)的處理,從而實(shí)現(xiàn)實(shí)時(shí)處理。,從而實(shí)現(xiàn)實(shí)時(shí)處理。 3) 故障處理故障處理 針對(duì)針對(duì)難以預(yù)料難以預(yù)料的情況或故障,如的情況或故障,如掉電、存儲(chǔ)出錯(cuò)、運(yùn)算掉電、存儲(chǔ)出錯(cuò)、運(yùn)算溢出溢出等,可通過(guò)中斷系統(tǒng)由故障源向等,可通過(guò)中斷系統(tǒng)由故障源向CPU發(fā)出中斷請(qǐng)求,再發(fā)出中斷請(qǐng)求,再由由CPU轉(zhuǎn)到相應(yīng)的故障處理程序進(jìn)行處理。轉(zhuǎn)到相應(yīng)的故障處理程序進(jìn)行處理。 3MCS-51中斷系統(tǒng)的結(jié)構(gòu)中斷系統(tǒng)的結(jié)構(gòu)及中斷控制及中斷控制 中斷過(guò)程是在硬件基礎(chǔ)上再配以相應(yīng)的軟件而實(shí)現(xiàn)的,中斷過(guò)程是在硬件基礎(chǔ)上再配以相應(yīng)

9、的軟件而實(shí)現(xiàn)的,不同的計(jì)算機(jī),其硬件結(jié)構(gòu)和軟件指令是不完全相同的,因不同的計(jì)算機(jī),其硬件結(jié)構(gòu)和軟件指令是不完全相同的,因此,中斷系統(tǒng)也是不相同的。此,中斷系統(tǒng)也是不相同的。 MCS-51單片機(jī)中斷系統(tǒng)的組成:?jiǎn)纹瑱C(jī)中斷系統(tǒng)的組成: 由由五個(gè)中斷源、四個(gè)中斷控制寄存器五個(gè)中斷源、四個(gè)中斷控制寄存器構(gòu)成。構(gòu)成。1 1、五個(gè)中斷源、五個(gè)中斷源: :2 2個(gè)外部、個(gè)外部、2 2個(gè)定時(shí)器個(gè)定時(shí)器/ /計(jì)數(shù)器、計(jì)數(shù)器、1 1個(gè)串行通信個(gè)串行通信中斷。中斷。2 2、四個(gè)中斷控制寄存器、四個(gè)中斷控制寄存器(標(biāo)志、允許、優(yōu)先級(jí)標(biāo)志、允許、優(yōu)先級(jí)):): 中斷控制寄存器中斷控制寄存器IEIE、中斷優(yōu)先級(jí)寄存器、中

10、斷優(yōu)先級(jí)寄存器IPIP、定時(shí)器、定時(shí)器/ /計(jì)計(jì)數(shù)器控制寄存器數(shù)器控制寄存器TCONTCON(6 6位)、串行通信寄存器位)、串行通信寄存器SCONSCON(2 2位),位),控制中斷類型、中斷的開(kāi)關(guān)、中斷的優(yōu)先級(jí)控制中斷類型、中斷的開(kāi)關(guān)、中斷的優(yōu)先級(jí), ,其中其中TCON和和SCON又稱中斷源寄存器又稱中斷源寄存器。圖5.2 MCS-51中斷系統(tǒng)內(nèi)部結(jié)構(gòu)示意圖1IT00IT01INT0T0T1TXRXTCONIEEX0EAIPPX01111100000PSPT1PX1PT0SCON中斷標(biāo)志中斷標(biāo)志源允許源允許總允許總允許硬件查詢硬件查詢矢量矢量地址地址矢量矢量地址地址自自然然優(yōu)優(yōu)先先級(jí)級(jí)自自

11、然然優(yōu)優(yōu)先先級(jí)級(jí)IT10IT11INT1IE0TF0IE1TF1TIRIET0EX11ET1ES優(yōu)先級(jí)優(yōu)先級(jí)高高級(jí)級(jí)中中斷斷請(qǐng)請(qǐng)求求PC低低級(jí)中斷請(qǐng)求PC中斷系統(tǒng)有中斷系統(tǒng)有5個(gè)中斷源,個(gè)中斷源,2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷嵌套 。MCS-51MCS-51的中斷源的中斷源 和中斷標(biāo)志和中斷標(biāo)志 通常,計(jì)算機(jī)的中斷源有如下幾種:通常,計(jì)算機(jī)的中斷源有如下幾種: (1) (1) 一般的輸入一般的輸入/ /輸出設(shè)備。如鍵盤、打印機(jī)等,它們通過(guò)輸出設(shè)備。如鍵盤、打印機(jī)等,它們通過(guò)接口電路向接口電路向CPUCPU發(fā)出中斷請(qǐng)求。發(fā)出中斷請(qǐng)求。 (2) (2) 實(shí)時(shí)時(shí)鐘及外界計(jì)數(shù)信

12、號(hào)。如定時(shí)時(shí)間或計(jì)數(shù)次數(shù)一到,實(shí)時(shí)時(shí)鐘及外界計(jì)數(shù)信號(hào)。如定時(shí)時(shí)間或計(jì)數(shù)次數(shù)一到,在中斷允許時(shí),由硬件則向在中斷允許時(shí),由硬件則向CPUCPU發(fā)出中斷請(qǐng)求。發(fā)出中斷請(qǐng)求。 (3) (3) 故障源。當(dāng)采樣或運(yùn)算結(jié)果溢出或系統(tǒng)掉電時(shí),可通過(guò)故障源。當(dāng)采樣或運(yùn)算結(jié)果溢出或系統(tǒng)掉電時(shí),可通過(guò)報(bào)警、掉電等信號(hào)向報(bào)警、掉電等信號(hào)向CPUCPU發(fā)出中斷請(qǐng)求。發(fā)出中斷請(qǐng)求。 (4) (4) 為調(diào)試程序而設(shè)置的中斷源。調(diào)試程序時(shí),為檢查中間為調(diào)試程序而設(shè)置的中斷源。調(diào)試程序時(shí),為檢查中間結(jié)果或?qū)ふ覇?wèn)題所在,往往要求設(shè)置斷點(diǎn)或進(jìn)行單步工作結(jié)果或?qū)ふ覇?wèn)題所在,往往要求設(shè)置斷點(diǎn)或進(jìn)行單步工作(一次執(zhí)行一條指令),這些人

13、為設(shè)置的中斷源的申請(qǐng)與響(一次執(zhí)行一條指令),這些人為設(shè)置的中斷源的申請(qǐng)與響應(yīng)均由中斷系統(tǒng)來(lái)實(shí)現(xiàn)。應(yīng)均由中斷系統(tǒng)來(lái)實(shí)現(xiàn)。 一、一、 MCS-51MCS-51的中斷源的中斷源1、 (P3.2)??捎煽捎蒊T0(TCON.0)IT0(TCON.0)選擇其為低電平有效還選擇其為低電平有效還是下降沿有效。當(dāng)是下降沿有效。當(dāng)CPUCPU檢測(cè)到檢測(cè)到P3.2P3.2引腳上出現(xiàn)有效的中斷信引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志號(hào)時(shí),中斷標(biāo)志IE0(TCON.1)IE0(TCON.1)置置1 1,向,向CPUCPU申請(qǐng)中斷。申請(qǐng)中斷。2、 ( P3.3)。可由可由IT1(TCON.2)IT1(TCON.2)選擇

14、其為低電平有效選擇其為低電平有效還是下降沿有效。當(dāng)還是下降沿有效。當(dāng)CPUCPU檢測(cè)到檢測(cè)到P3.3P3.3引腳上出現(xiàn)有效的中斷引腳上出現(xiàn)有效的中斷信號(hào)時(shí),中斷標(biāo)志信號(hào)時(shí),中斷標(biāo)志IE1(TCON.3)IE1(TCON.3)置置1 1, ,向向CPUCPU申請(qǐng)中斷。申請(qǐng)中斷。3、TF0(TCON.5),片內(nèi)定時(shí)片內(nèi)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0溢出中斷請(qǐng)求標(biāo)溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)志。當(dāng)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0發(fā)生溢出時(shí),置位發(fā)生溢出時(shí),置位TF0TF0,并向,并向CPUCPU申請(qǐng)申請(qǐng)中斷。中斷。4、TF1(TCON.7),片內(nèi)定時(shí)片內(nèi)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1溢出中斷請(qǐng)求標(biāo)溢出中斷

15、請(qǐng)求標(biāo)志。當(dāng)定時(shí)志。當(dāng)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1發(fā)生溢出時(shí),發(fā)生溢出時(shí),置位置位TF1TF1,并向,并向CPUCPU申請(qǐng)申請(qǐng)中斷。中斷。5 5、RIRI(SCON.0SCON.0)或)或TITI(SCON.1SCON.1),串行口中斷請(qǐng)求標(biāo)志。,串行口中斷請(qǐng)求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí)置位當(dāng)串行口接收完一幀串行數(shù)據(jù)時(shí)置位RIRI或當(dāng)串行口發(fā)送完或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時(shí)一幀串行數(shù)據(jù)時(shí)置位置位TITI,向,向CPUCPU申請(qǐng)中斷。申請(qǐng)中斷。 INT0INT1二、中斷請(qǐng)求標(biāo)志二、中斷請(qǐng)求標(biāo)志1、TCON的中斷標(biāo)志的中斷標(biāo)志IT0(TCON.0),外部中斷),外部中斷INT0觸發(fā)方式

16、觸發(fā)方式控制位控制位。當(dāng)當(dāng)IT0=0時(shí),為電平觸發(fā)方式。時(shí),為電平觸發(fā)方式。當(dāng)當(dāng)IT0=1時(shí),為邊沿觸發(fā)方式(下降沿有效)。時(shí),為邊沿觸發(fā)方式(下降沿有效)。IE0(TCON.1),外部中斷),外部中斷INT0中斷中斷請(qǐng)求標(biāo)志位請(qǐng)求標(biāo)志位。IT1(TCON.2),外部中斷),外部中斷INT1觸發(fā)方式觸發(fā)方式控制位控制位。IE1(TCON.3),外部中斷),外部中斷INT1中斷中斷請(qǐng)求標(biāo)志位請(qǐng)求標(biāo)志位。TF0(TCON.5),定時(shí)),定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0溢出中斷溢出中斷請(qǐng)求標(biāo)志位請(qǐng)求標(biāo)志位。TF1(TCON.7),定時(shí)),定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1溢出中斷溢出中斷請(qǐng)求標(biāo)志位請(qǐng)求標(biāo)志位。TR1(TC

17、ON.6)/TR0(TCON.4)為定時(shí)器工作允許位。為定時(shí)器工作允許位。 TCON為為定時(shí)器定時(shí)器0和定時(shí)器和定時(shí)器1的控制寄存器的控制寄存器,同時(shí)也,同時(shí)也鎖存鎖存定時(shí)器定時(shí)器0和定時(shí)器和定時(shí)器1的溢出中斷標(biāo)志的溢出中斷標(biāo)志及及外部中斷外部中斷和和中斷標(biāo)志中斷標(biāo)志等。等。與中斷有關(guān)位如下:與中斷有關(guān)位如下: (1) TCON.7 TF1:定時(shí)器定時(shí)器1的溢出中斷標(biāo)志。的溢出中斷標(biāo)志。T1被啟動(dòng)被啟動(dòng)計(jì)數(shù)后,從初值做加計(jì)數(shù)后,從初值做加1計(jì)數(shù),計(jì)滿溢出后由計(jì)數(shù),計(jì)滿溢出后由硬件置位硬件置位TF1,同時(shí)向同時(shí)向CPU發(fā)出中斷請(qǐng)求,發(fā)出中斷請(qǐng)求,此標(biāo)志一直保持到此標(biāo)志一直保持到CPU響應(yīng)中響應(yīng)中

18、斷后才由硬件自動(dòng)清斷后才由硬件自動(dòng)清0。也可由軟件查詢?cè)摌?biāo)志,并由軟件。也可由軟件查詢?cè)摌?biāo)志,并由軟件清清0。 (2) TCON.5 TF0:定時(shí)器:定時(shí)器0溢出中斷標(biāo)志。其操作功溢出中斷標(biāo)志。其操作功能與能與TF1相同。相同。 (3) TCON.3 IE1:INT1中斷標(biāo)志。中斷標(biāo)志。IE1 = 1,外部中,外部中斷斷1向向CPU申請(qǐng)中斷。申請(qǐng)中斷。 (4) TCON.2 IT1:INT1中斷觸發(fā)方式控制位。當(dāng)中斷觸發(fā)方式控制位。當(dāng)IT1 = 0時(shí),外部中斷時(shí),外部中斷1控制為電平觸發(fā)方式。在這種方式下,控制為電平觸發(fā)方式。在這種方式下,CPU在每個(gè)機(jī)器周期的在每個(gè)機(jī)器周期的S5P2期間對(duì)(

19、期間對(duì)(P3.3)引腳采樣,若)引腳采樣,若為低電平,則認(rèn)為有中斷申請(qǐng),隨即使為低電平,則認(rèn)為有中斷申請(qǐng),隨即使IE1標(biāo)志置位;若標(biāo)志置位;若為高電平,則認(rèn)為無(wú)中斷申請(qǐng),或中斷申請(qǐng)已撤除,隨即為高電平,則認(rèn)為無(wú)中斷申請(qǐng),或中斷申請(qǐng)已撤除,隨即使使IE1標(biāo)志復(fù)位。標(biāo)志復(fù)位。在電平觸發(fā)方式中,在電平觸發(fā)方式中,CPU響應(yīng)中斷后不響應(yīng)中斷后不能由硬件自動(dòng)清除能由硬件自動(dòng)清除IE1標(biāo)志標(biāo)志,也由軟件清除,也由軟件清除IE1標(biāo)志,所以,標(biāo)志,所以,在中斷返回之前必須撤消引腳上的低電平,否則將再次中在中斷返回之前必須撤消引腳上的低電平,否則將再次中斷導(dǎo)致出錯(cuò)。斷導(dǎo)致出錯(cuò)。 (5) TCON.1 IE0:I

20、NT0中斷標(biāo)志。其操作功能與中斷標(biāo)志。其操作功能與IE1相相同。同。 (6) TCON.0 IT0:INT0中斷觸發(fā)方式控制位。其操作功中斷觸發(fā)方式控制位。其操作功能與能與IT1相同。相同。 2、SCON的中斷標(biāo)志的中斷標(biāo)志SCON是串行口控制寄存器,其低兩位是串行口控制寄存器,其低兩位TI和和RI鎖存串行口的發(fā)鎖存串行口的發(fā)送中斷標(biāo)志和接收中斷標(biāo)志。送中斷標(biāo)志和接收中斷標(biāo)志。RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由硬件置位行口接收數(shù)據(jù)時(shí),每接收完一個(gè)串行幀,由硬件置位RI。RI必須由軟件清除必須由軟件清除。T

21、I(SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將將一個(gè)發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時(shí),就啟動(dòng)了發(fā)一個(gè)發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時(shí),就啟動(dòng)了發(fā)送過(guò)程。每發(fā)送完一個(gè)串行幀,由硬件置位送過(guò)程。每發(fā)送完一個(gè)串行幀,由硬件置位TI。CPU響應(yīng)中斷時(shí),不能自動(dòng)清除響應(yīng)中斷時(shí),不能自動(dòng)清除TI,TI必須由軟件清除必須由軟件清除。 MCS-51系統(tǒng)復(fù)位后,系統(tǒng)復(fù)位后,TCON和和SCON均清均清0,應(yīng)用時(shí),應(yīng)用時(shí)要注意各位的初始狀態(tài)。要注意各位的初始狀態(tài)。 IE寄存器中斷的開(kāi)放和禁止標(biāo)志寄存器中斷的開(kāi)放和禁止標(biāo)志 計(jì)算機(jī)中斷系統(tǒng)有計(jì)算機(jī)中斷系統(tǒng)有兩種不同類型的中斷兩種不同類型

22、的中斷:一類稱為:一類稱為非屏非屏蔽中斷蔽中斷,另一類稱為,另一類稱為可屏蔽中斷可屏蔽中斷。對(duì)非屏蔽中斷,用戶不能。對(duì)非屏蔽中斷,用戶不能用軟件的方法加以禁止,一旦有中斷申請(qǐng),用軟件的方法加以禁止,一旦有中斷申請(qǐng),CPU必須予以響必須予以響應(yīng)。對(duì)可屏蔽中斷,用戶可以通過(guò)軟件方法來(lái)控制是否允許應(yīng)。對(duì)可屏蔽中斷,用戶可以通過(guò)軟件方法來(lái)控制是否允許某中斷源的中斷,允許中斷稱某中斷源的中斷,允許中斷稱中斷開(kāi)放中斷開(kāi)放,不允許中斷稱,不允許中斷稱中斷中斷屏蔽屏蔽。MCS-51系列單片機(jī)的系列單片機(jī)的5個(gè)中斷源都是可屏蔽中斷個(gè)中斷源都是可屏蔽中斷,其,其中斷系統(tǒng)內(nèi)部設(shè)有一個(gè)專用寄存器中斷系統(tǒng)內(nèi)部設(shè)有一個(gè)專

23、用寄存器IE,用于控制,用于控制CPU對(duì)各中對(duì)各中斷源的開(kāi)放或屏蔽。斷源的開(kāi)放或屏蔽。IE寄存器各位定義如下:寄存器各位定義如下:三、三、中斷的控制中斷的控制 (一一)、MCS-51中斷允許控制中斷允許控制 CPU對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開(kāi)放和屏蔽是對(duì)中斷系統(tǒng)所有中斷以及某個(gè)中斷源的開(kāi)放和屏蔽是由中斷允許寄存器由中斷允許寄存器IE控制的??刂频?。各位為各位為1時(shí)允許中斷時(shí)允許中斷 ,為,為0時(shí)禁止中斷時(shí)禁止中斷EX0(IE.0),外部中斷,外部中斷0允許位;允許位;ET0(IE.1),定時(shí),定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0中斷允許位;中斷允許位; EX1(IE.2),外部中斷,外部中斷0允許位

24、;允許位;ET1(IE.3),定時(shí),定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1中斷允許位;中斷允許位;ES(IE.4),串行口中斷允許位;,串行口中斷允許位;EA (IE.7), CPU中斷允許(總允許)位。中斷允許(總允許)位。 EA=0,CPU禁止禁止中斷,中斷,EA=1,CPU開(kāi)放中斷開(kāi)放中斷例例5-1 假設(shè)某單片機(jī)系統(tǒng)允許片內(nèi)定時(shí)器假設(shè)某單片機(jī)系統(tǒng)允許片內(nèi)定時(shí)器/計(jì)數(shù)器中斷,禁止其計(jì)數(shù)器中斷,禁止其它的中斷。試設(shè)置它的中斷。試設(shè)置IE的值。的值。法一:用字節(jié)操作指令法一:用字節(jié)操作指令 MOV IE,#8AH ; 10001010B或或 MOV 0A8H,#8AH法二:用位操作指令法二:用位操作指令 SE

25、TB EA SETB ET0 SETB ET1 MCS-51單片機(jī)系統(tǒng)復(fù)位后,單片機(jī)系統(tǒng)復(fù)位后,IE中各中斷允許位均被清中各中斷允許位均被清0,即禁止所有中斷。即禁止所有中斷。 中斷過(guò)程是:首先開(kāi)總中斷:中斷過(guò)程是:首先開(kāi)總中斷:SETB EA ,然后開(kāi),然后開(kāi)T0、T1中斷:中斷: SETB ET1, SETB ET1 ,這,這3條位操作指令也條位操作指令也可合可合并并為為1條字節(jié)指令:條字節(jié)指令:MOV IE,#8AH。(二二)、中斷優(yōu)先級(jí)控制、中斷優(yōu)先級(jí)控制 51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí)單片機(jī)有兩個(gè)中斷優(yōu)先級(jí)(高和低優(yōu)先級(jí)高和低優(yōu)先級(jí)),即可實(shí)現(xiàn),即可實(shí)現(xiàn)二級(jí)二級(jí)中斷服務(wù)嵌套中斷服務(wù)嵌套。

26、每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄。每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器存器IP中的相應(yīng)位的狀態(tài)來(lái)規(guī)定的中的相應(yīng)位的狀態(tài)來(lái)規(guī)定的 。各位為為1時(shí)為高優(yōu)先級(jí)時(shí)為高優(yōu)先級(jí),為為0時(shí)為低優(yōu)先級(jí)時(shí)為低優(yōu)先級(jí)。PX0(IP.0),外部中斷),外部中斷0優(yōu)先級(jí)設(shè)定位;優(yōu)先級(jí)設(shè)定位;PT0(IP.1),定時(shí)),定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T0優(yōu)先級(jí)設(shè)定位;優(yōu)先級(jí)設(shè)定位;PX1(IP.2),外部中斷),外部中斷1優(yōu)先級(jí)設(shè)定位;優(yōu)先級(jí)設(shè)定位;PT1(IP.3),定時(shí)),定時(shí)/計(jì)數(shù)器計(jì)數(shù)器T1優(yōu)先級(jí)設(shè)定位;優(yōu)先級(jí)設(shè)定位;PS (IP.4),串行口優(yōu)先級(jí)設(shè)定位。),串行口優(yōu)先級(jí)設(shè)定位。中斷優(yōu)先級(jí)次序:中斷優(yōu)先級(jí)

27、次序: (1 1)高優(yōu)先級(jí)中斷能夠打斷低優(yōu)先級(jí)中斷服務(wù)程序?qū)崿F(xiàn)中)高優(yōu)先級(jí)中斷能夠打斷低優(yōu)先級(jí)中斷服務(wù)程序?qū)崿F(xiàn)中斷嵌套。斷嵌套。 (2(2)同級(jí)優(yōu)先級(jí)的次序相同優(yōu)先級(jí)中斷不能夠打斷其中斷)同級(jí)優(yōu)先級(jí)的次序相同優(yōu)先級(jí)中斷不能夠打斷其中斷服務(wù)程序?qū)崿F(xiàn)中斷嵌套。服務(wù)程序?qū)崿F(xiàn)中斷嵌套。例例4-2 4-2 假設(shè)某單片機(jī)系統(tǒng)片外中斷為高優(yōu)先級(jí),片假設(shè)某單片機(jī)系統(tǒng)片外中斷為高優(yōu)先級(jí),片內(nèi)中斷為低優(yōu)先級(jí)。試設(shè)置內(nèi)中斷為低優(yōu)先級(jí)。試設(shè)置IPIP的值。的值。方法一:用字節(jié)操作指令方法一:用字節(jié)操作指令 MOV IPMOV IP,#05H #05H ;00000101B00000101B或或 MOV 0B8HMOV

28、 0B8H,#05H#05H方法二:用位操作指令方法二:用位操作指令 SETB PX0SETB PX0 SETB PX1 SETB PX1 CLR PS CLR PS CLR PT0 CLR PT0 CLR PT1 CLR PT1MCS-51MCS-51單片機(jī)的中斷優(yōu)先級(jí)有三條原則單片機(jī)的中斷優(yōu)先級(jí)有三條原則:CPUCPU同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的同時(shí)接收到幾個(gè)中斷時(shí),首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求。中斷請(qǐng)求。正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中正在進(jìn)行的中斷過(guò)程不能被新的同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求所中斷。斷請(qǐng)求所中斷。正在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)正

29、在進(jìn)行的低優(yōu)先級(jí)中斷服務(wù),能被高優(yōu)先級(jí)中斷請(qǐng)求所中斷。求所中斷。 為了實(shí)現(xiàn)上述后兩條原則為了實(shí)現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩中斷系統(tǒng)內(nèi)部設(shè)有兩個(gè)用戶不能尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器個(gè)用戶不能尋址的優(yōu)先級(jí)狀態(tài)觸發(fā)器。其中一個(gè)置其中一個(gè)置1 1,表示正在響應(yīng)高優(yōu)先級(jí)的中斷,它將阻斷后來(lái)所有的表示正在響應(yīng)高優(yōu)先級(jí)的中斷,它將阻斷后來(lái)所有的中斷請(qǐng)求;另一個(gè)置中斷請(qǐng)求;另一個(gè)置1 1,表示正在響應(yīng)低優(yōu)先級(jí)中斷,表示正在響應(yīng)低優(yōu)先級(jí)中斷,它將阻斷后來(lái)所有的低優(yōu)先級(jí)中斷請(qǐng)求。它將阻斷后來(lái)所有的低優(yōu)先級(jí)中斷請(qǐng)求。 5.1.3 中斷處理過(guò)程中斷處理過(guò)程 中斷處理過(guò)程分為三個(gè)階段:響應(yīng)、處理、返回。中斷處理過(guò)程分

30、為三個(gè)階段:響應(yīng)、處理、返回。 1 . 中斷響應(yīng)中斷響應(yīng) 一、中斷響應(yīng)條件(一、中斷響應(yīng)條件(6條)條)(1)有中斷源發(fā)出中斷請(qǐng)求;)有中斷源發(fā)出中斷請(qǐng)求;(2)CPU開(kāi)放中斷,即中斷總允許位開(kāi)放中斷,即中斷總允許位EA = 1;(3)對(duì)應(yīng)的中斷源允許中斷;)對(duì)應(yīng)的中斷源允許中斷; 滿足以上基本條件,滿足以上基本條件,CPU一般會(huì)響應(yīng)中斷,但還得滿足下一般會(huì)響應(yīng)中斷,但還得滿足下列情況,則中斷響應(yīng)。列情況,則中斷響應(yīng)。(4)無(wú)同級(jí)或更高級(jí)中斷正在服務(wù);)無(wú)同級(jí)或更高級(jí)中斷正在服務(wù);(5)當(dāng)前的指令周期已經(jīng)結(jié)束;)當(dāng)前的指令周期已經(jīng)結(jié)束;(6)執(zhí)行了指令)執(zhí)行了指令RETI或訪問(wèn)或訪問(wèn)IE、IP

31、后又執(zhí)行了一條指令。后又執(zhí)行了一條指令。 CPU在每個(gè)機(jī)器周期的在每個(gè)機(jī)器周期的S5P2期間對(duì)個(gè)中斷源采樣。期間對(duì)個(gè)中斷源采樣。 CPU CPU執(zhí)行程序過(guò)程中,在每個(gè)機(jī)器周期的執(zhí)行程序過(guò)程中,在每個(gè)機(jī)器周期的S5P2S5P2期間,中斷系統(tǒng)對(duì)各個(gè)中斷源進(jìn)行采樣期間,中斷系統(tǒng)對(duì)各個(gè)中斷源進(jìn)行采樣。這些采樣值在下一個(gè)機(jī)器周期內(nèi)按優(yōu)先級(jí)和內(nèi)這些采樣值在下一個(gè)機(jī)器周期內(nèi)按優(yōu)先級(jí)和內(nèi)部順序被依次查詢。部順序被依次查詢。 如果某個(gè)中斷標(biāo)志在上一個(gè)機(jī)器周期的如果某個(gè)中斷標(biāo)志在上一個(gè)機(jī)器周期的S5P2S5P2時(shí)被置成了時(shí)被置成了1 1,那么它將于現(xiàn)在的查詢周期,那么它將于現(xiàn)在的查詢周期中及時(shí)被發(fā)現(xiàn)。接著中及時(shí)被

32、發(fā)現(xiàn)。接著CPUCPU便執(zhí)行一條由中斷系統(tǒng)便執(zhí)行一條由中斷系統(tǒng)提供的硬件提供的硬件LCALLLCALL指令,轉(zhuǎn)向被稱作中斷向量的指令,轉(zhuǎn)向被稱作中斷向量的特定地址單元,進(jìn)入相應(yīng)的中斷服務(wù)程序。特定地址單元,進(jìn)入相應(yīng)的中斷服務(wù)程序。 2、中斷響應(yīng)時(shí)間、中斷響應(yīng)時(shí)間某中斷的響應(yīng)時(shí)序如圖:某中斷的響應(yīng)時(shí)序如圖:若若M1M1周期的周期的S5P2S5P2前某前某中斷生效中斷生效,在,在S5P2S5P2期間其中斷期間其中斷請(qǐng)求被鎖存到相應(yīng)的標(biāo)志位中去;請(qǐng)求被鎖存到相應(yīng)的標(biāo)志位中去;M2M2恰逢指令的最恰逢指令的最后一個(gè)機(jī)器周期后一個(gè)機(jī)器周期,且,且該指令不是該指令不是RETIRETI或訪問(wèn)或訪問(wèn)IEIE、

33、IPIP的指令的指令。于是,。于是,M3M3和和M4M4便可以執(zhí)行硬件便可以執(zhí)行硬件LCALLLCALL指令指令,M5M5周期將周期將進(jìn)入進(jìn)入了中斷服務(wù)程序。了中斷服務(wù)程序。5151的中斷響應(yīng)時(shí)間(從標(biāo)志置的中斷響應(yīng)時(shí)間(從標(biāo)志置1 1到進(jìn)入相應(yīng)的中斷服到進(jìn)入相應(yīng)的中斷服務(wù)),至少要?jiǎng)?wù)),至少要3 3個(gè)完整的機(jī)器周期個(gè)完整的機(jī)器周期。 中斷響應(yīng)時(shí)間中斷響應(yīng)時(shí)間(3-83-8個(gè)機(jī)器周期個(gè)機(jī)器周期) 1 1、基本響應(yīng)時(shí)間、基本響應(yīng)時(shí)間(3 3個(gè)機(jī)器周期個(gè)機(jī)器周期)(1 1)查詢中斷標(biāo)志:)查詢中斷標(biāo)志:1 1個(gè)機(jī)器周期;個(gè)機(jī)器周期;(2 2)轉(zhuǎn)去執(zhí)行中斷服務(wù)程序:)轉(zhuǎn)去執(zhí)行中斷服務(wù)程序:2 2個(gè)機(jī)

34、器周期。個(gè)機(jī)器周期。 2 2、額外的處理時(shí)間、額外的處理時(shí)間(0-50-5 個(gè)機(jī)器周期個(gè)機(jī)器周期) RETIRETI指令:指令:2 2個(gè)機(jī)器周期;個(gè)機(jī)器周期; MULMUL或或DIVDIV指令:指令:4 4個(gè)機(jī)器周期。個(gè)機(jī)器周期。3. 中斷處理中斷處理一、含有中斷服務(wù)程序的程序結(jié)構(gòu)一、含有中斷服務(wù)程序的程序結(jié)構(gòu) ORG 0000HSTART:LJMP MAIN LJMP INTEX0 ORG 000BH LJMP INTT0 ORG 0013H LJMP INTEX1 ORG 001BH LJMP INTT1 ORG 0023H LJMP INTS ORG 0030HMAIN: :INTEX0

35、: : :INTT0: : :INTEX1: : :INTT1: : :INTS: : :圖5.9 中斷處理過(guò)程流程圖 中斷源發(fā)中斷申請(qǐng)中斷源發(fā)中斷申請(qǐng)中斷響應(yīng)條件滿足中斷響應(yīng)條件滿足中斷受阻中斷受阻把把PC斷點(diǎn)地址壓入堆棧斷點(diǎn)地址壓入堆棧相應(yīng)中斷源的中斷入口相應(yīng)中斷源的中斷入口地址送入地址送入PC硬件硬件自動(dòng)自動(dòng)完成完成關(guān)中斷關(guān)中斷斷點(diǎn)地址由堆斷點(diǎn)地址由堆棧彈入棧彈入PC中斷返回中斷返回恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)開(kāi)中斷開(kāi)中斷關(guān)中斷關(guān)中斷中斷服務(wù)中斷服務(wù)開(kāi)中斷開(kāi)中斷保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)YNY中斷服務(wù)程序的中斷服務(wù)程序的結(jié)構(gòu)結(jié)構(gòu)(四部分四部分)1、保護(hù)現(xiàn)場(chǎng);、保護(hù)現(xiàn)場(chǎng);2、處理中斷的程、處理中斷的程序;序;3

36、、恢復(fù)現(xiàn)場(chǎng);、恢復(fù)現(xiàn)場(chǎng);4、中斷返回:、中斷返回:RETI編寫中斷服務(wù)程編寫中斷服務(wù)程序序 應(yīng)注意的幾點(diǎn)應(yīng)注意的幾點(diǎn)1、中斷程序入口、中斷程序入口處的處理;處的處理;2、程序中可以禁、程序中可以禁止高級(jí)中斷;止高級(jí)中斷;3、在保護(hù)和恢復(fù)、在保護(hù)和恢復(fù)現(xiàn)場(chǎng)時(shí)可現(xiàn)場(chǎng)時(shí)可關(guān)閉關(guān)閉CPU中斷,中斷,以免造成混亂。以免造成混亂。4 . 中斷返回中斷返回 在中斷服務(wù)子程序的最后必須用在中斷服務(wù)子程序的最后必須用“RETI”指令指令 RETI指令作用有二:指令作用有二:1、子程序返回;、子程序返回;2、清除中斷服務(wù)標(biāo)志,即給、清除中斷服務(wù)標(biāo)志,即給“優(yōu)先級(jí)生效優(yōu)先級(jí)生效”觸發(fā)器清觸發(fā)器清0。 串行口中斷請(qǐng)求

37、的撤除串行口中斷請(qǐng)求的撤除 對(duì)于串行口中斷,對(duì)于串行口中斷,CPU在響應(yīng)中斷后,硬件不能自動(dòng)在響應(yīng)中斷后,硬件不能自動(dòng)清除中斷請(qǐng)求標(biāo)志位清除中斷請(qǐng)求標(biāo)志位TI、RI,必須在中斷服務(wù)程序中用軟,必須在中斷服務(wù)程序中用軟件將其清除。件將其清除。外部中斷請(qǐng)求的撤除外部中斷請(qǐng)求的撤除 外部中斷可分為邊沿觸發(fā)型和電平觸發(fā)型。外部中斷可分為邊沿觸發(fā)型和電平觸發(fā)型。 對(duì)于邊沿觸發(fā)的外部中斷對(duì)于邊沿觸發(fā)的外部中斷0或或1,CPU在響應(yīng)中斷后由在響應(yīng)中斷后由硬件自動(dòng)清除其中斷標(biāo)志位硬件自動(dòng)清除其中斷標(biāo)志位IE0或或IE1,無(wú)需采取其它措施。,無(wú)需采取其它措施。 對(duì)于電平觸發(fā)的對(duì)于電平觸發(fā)的外部中斷外部中斷,其中

38、斷請(qǐng)求撤除方法較復(fù),其中斷請(qǐng)求撤除方法較復(fù)雜。因?yàn)閷?duì)于電平觸發(fā)外中斷,雜。因?yàn)閷?duì)于電平觸發(fā)外中斷,CPU在響應(yīng)中斷后,硬件在響應(yīng)中斷后,硬件不會(huì)自動(dòng)清除其中斷請(qǐng)求標(biāo)志位不會(huì)自動(dòng)清除其中斷請(qǐng)求標(biāo)志位IE0或或IE1,同時(shí),同時(shí),也不能也不能用軟件將其清除用軟件將其清除,所以,在,所以,在CPU響應(yīng)中斷后,應(yīng)響應(yīng)中斷后,應(yīng)立即撤除立即撤除或引腳上的低電平或引腳上的低電平。否則,就會(huì)引起重復(fù)中斷而導(dǎo)致錯(cuò)誤。否則,就會(huì)引起重復(fù)中斷而導(dǎo)致錯(cuò)誤。而而CPU又不能控制或引腳的信號(hào),因此,只有通過(guò)硬件再又不能控制或引腳的信號(hào),因此,只有通過(guò)硬件再配合相應(yīng)軟件才能解決這個(gè)問(wèn)題。圖配合相應(yīng)軟件才能解決這個(gè)問(wèn)題。圖

39、5.10是可行方案之一。是可行方案之一。 圖5.10 撤除外部中斷請(qǐng)求的電路DSDCLK外中斷0請(qǐng)求信號(hào)8031P1.0INT0Q 由圖可知,外部中斷請(qǐng)求信號(hào)不直接加由圖可知,外部中斷請(qǐng)求信號(hào)不直接加 或或 引腳上,而是加在引腳上,而是加在D觸發(fā)器的觸發(fā)器的CLK端。由于端。由于D端接地,當(dāng)外端接地,當(dāng)外部中斷請(qǐng)求的正脈沖信號(hào)出現(xiàn)在部中斷請(qǐng)求的正脈沖信號(hào)出現(xiàn)在CLK端時(shí),端時(shí),Q端輸出為端輸出為0, 或或 為低,外部中斷向單片機(jī)發(fā)出中斷請(qǐng)求。利用為低,外部中斷向單片機(jī)發(fā)出中斷請(qǐng)求。利用P1口的口的P1.0作為應(yīng)答線作為應(yīng)答線,當(dāng),當(dāng)CPU響應(yīng)中斷后,可在中斷服務(wù)響應(yīng)中斷后,可在中斷服務(wù)程序中采

40、用兩條指令:程序中采用兩條指令: ANL P1,#0FEH ORLP1,#01H0INT1INT0INT1INT 來(lái)撤除外部中斷請(qǐng)求。第一條指令使來(lái)撤除外部中斷請(qǐng)求。第一條指令使P1.0為為0,因因P1.0與與D觸發(fā)器的異步置觸發(fā)器的異步置1端端SD相連相連,Q端輸出為端輸出為1,從而撤除中,從而撤除中斷請(qǐng)求。第二條指令使斷請(qǐng)求。第二條指令使P1.0變?yōu)樽優(yōu)?, = 1,Q繼續(xù)受繼續(xù)受CLK控制,控制,即新的外部中斷請(qǐng)求信號(hào)又能向單片機(jī)申請(qǐng)中斷。第二條指即新的外部中斷請(qǐng)求信號(hào)又能向單片機(jī)申請(qǐng)中斷。第二條指令是必不可少的,否則,將無(wú)法再次形成新的外部中斷。令是必不可少的,否則,將無(wú)法再次形成新的

41、外部中斷。Q 5.1.4 外部中斷源的擴(kuò)展外部中斷源的擴(kuò)展 8051單片機(jī)僅有兩個(gè)外部中斷請(qǐng)求輸入端和,在實(shí)際應(yīng)單片機(jī)僅有兩個(gè)外部中斷請(qǐng)求輸入端和,在實(shí)際應(yīng)用中,若外部中斷源超過(guò)兩個(gè),則需擴(kuò)充外部中斷源,這里介用中,若外部中斷源超過(guò)兩個(gè),則需擴(kuò)充外部中斷源,這里介紹三種可行的方法。紹三種可行的方法。 1用定時(shí)器作外部中斷源用定時(shí)器作外部中斷源 MCS-51單片機(jī)有兩個(gè)定時(shí)器,具有兩個(gè)內(nèi)中斷標(biāo)志和外單片機(jī)有兩個(gè)定時(shí)器,具有兩個(gè)內(nèi)中斷標(biāo)志和外計(jì)數(shù)引腳,如在某些應(yīng)用中不被使用,則它們的中斷可作為外計(jì)數(shù)引腳,如在某些應(yīng)用中不被使用,則它們的中斷可作為外部中斷請(qǐng)求使用。此時(shí),可將定時(shí)器設(shè)置成計(jì)數(shù)方式,計(jì)

42、數(shù)初部中斷請(qǐng)求使用。此時(shí),可將定時(shí)器設(shè)置成計(jì)數(shù)方式,計(jì)數(shù)初值可設(shè)為滿量程,值可設(shè)為滿量程,則它們的計(jì)數(shù)輸入端則它們的計(jì)數(shù)輸入端T0(P3.4)或)或T1(P3.5)引腳上發(fā)生負(fù)跳變引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加時(shí),計(jì)數(shù)器加1便產(chǎn)生溢出中斷。利用此特便產(chǎn)生溢出中斷。利用此特性,可把性,可把T0腳或腳或T1腳作為外部中斷請(qǐng)求輸入線,而計(jì)數(shù)器的腳作為外部中斷請(qǐng)求輸入線,而計(jì)數(shù)器的溢出中斷作為外部中斷請(qǐng)求標(biāo)志。溢出中斷作為外部中斷請(qǐng)求標(biāo)志。 例例5.5 將定時(shí)器將定時(shí)器T0擴(kuò)展為外部中斷源。擴(kuò)展為外部中斷源。 解:將定時(shí)器解:將定時(shí)器T0設(shè)定為方式設(shè)定為方式2(自動(dòng)恢復(fù)計(jì)數(shù)初值),(自動(dòng)恢復(fù)計(jì)數(shù)初值),

43、TH0和和TF0的初值均設(shè)置為的初值均設(shè)置為FFH,允許,允許T0中斷,中斷,CPU開(kāi)放中開(kāi)放中斷,源程序如下:斷,源程序如下:MOVTMOD,#06HMOV TH0,#0FFHMOV TL0,#0FFHSETB TR0SETB ET0SETB EA 當(dāng)連接在當(dāng)連接在T0(P3.4)引腳的外部中斷請(qǐng)求輸入線發(fā)生)引腳的外部中斷請(qǐng)求輸入線發(fā)生負(fù)跳變時(shí),負(fù)跳變時(shí),TL0加加1溢出,溢出,TF0置置1,向,向CPU發(fā)出中斷申請(qǐng),發(fā)出中斷申請(qǐng),同時(shí),同時(shí),TH0的內(nèi)容自動(dòng)送至的內(nèi)容自動(dòng)送至TL0使使TL0恢復(fù)初值。這樣,恢復(fù)初值。這樣,T0引腳每輸入一個(gè)負(fù)跳變,引腳每輸入一個(gè)負(fù)跳變,TF0都會(huì)置都會(huì)置

44、1,向,向CPU請(qǐng)求中請(qǐng)求中斷斷,此時(shí),此時(shí),T0腳相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。腳相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。 同樣,也可將定時(shí)器同樣,也可將定時(shí)器T1擴(kuò)展為外部中斷源。擴(kuò)展為外部中斷源。 2中斷和查詢相結(jié)合中斷和查詢相結(jié)合 利用兩根外部中斷輸入線(和腳),每一中斷輸入線利用兩根外部中斷輸入線(和腳),每一中斷輸入線可以通過(guò)線或的關(guān)系連接多個(gè)外部中斷源,同時(shí),利用并可以通過(guò)線或的關(guān)系連接多個(gè)外部中斷源,同時(shí),利用并行輸入端口線作為多個(gè)中斷源的識(shí)別線,其電路原理圖如行輸入端口線作為多個(gè)中斷源的識(shí)別線,其電路原理圖如圖圖5.11所示。所示。圖圖5.11 一個(gè)外中斷擴(kuò)展成多個(gè)外中斷的原理

45、圖一個(gè)外中斷擴(kuò)展成多個(gè)外中斷的原理圖 MCS-511P3.3P1.0P1.1P1.2P1.3EXINT0EXINT1EXINT2EXINT3 由圖可知,由圖可知,4個(gè)外部擴(kuò)展中斷源通過(guò)個(gè)外部擴(kuò)展中斷源通過(guò)4個(gè)個(gè)OC門電路組成線門電路組成線或后再與(或后再與(P3.2)相連,)相連,4個(gè)外部擴(kuò)展中斷源個(gè)外部擴(kuò)展中斷源EXINT0 EXINT3中有一個(gè)或幾個(gè)出現(xiàn)高電平則輸出為中有一個(gè)或幾個(gè)出現(xiàn)高電平則輸出為0,使腳為低電,使腳為低電平,從而發(fā)出中斷請(qǐng)求,因此,這些擴(kuò)充的外部中斷源都是平,從而發(fā)出中斷請(qǐng)求,因此,這些擴(kuò)充的外部中斷源都是電電平觸發(fā)方式(高電平有效)平觸發(fā)方式(高電平有效)。CPU執(zhí)行

46、中斷服務(wù)程序時(shí),先執(zhí)行中斷服務(wù)程序時(shí),先依次查詢依次查詢P1口的中斷源輸入狀態(tài),然后,轉(zhuǎn)入到相應(yīng)的中斷口的中斷源輸入狀態(tài),然后,轉(zhuǎn)入到相應(yīng)的中斷服務(wù)程序,服務(wù)程序,4個(gè)擴(kuò)展中斷源的優(yōu)先級(jí)順序由軟件查詢順序決定,個(gè)擴(kuò)展中斷源的優(yōu)先級(jí)順序由軟件查詢順序決定,即最先查詢的優(yōu)先級(jí)最高,最后查詢的優(yōu)先級(jí)最低。即最先查詢的優(yōu)先級(jí)最高,最后查詢的優(yōu)先級(jí)最低。 中斷服務(wù)程序如下:中斷服務(wù)程序如下: ORG0003H;外部中斷;外部中斷0入口入口 AJMPINT0;轉(zhuǎn)向中斷服務(wù)程序入口;轉(zhuǎn)向中斷服務(wù)程序入口 INT0:PUSH PSW;保護(hù)現(xiàn)場(chǎng);保護(hù)現(xiàn)場(chǎng) PUSHACC JNB P1.0,EXT0 ;中斷源查詢

47、并轉(zhuǎn)相應(yīng)中斷;中斷源查詢并轉(zhuǎn)相應(yīng)中斷服務(wù)程序服務(wù)程序 JNBP1.1,EXT1 JNBP1.2,EXT2 JNBP1.3,EXT3EXIT: POPACC ;恢復(fù)現(xiàn)場(chǎng) POPPSW RETI EXT0: ;EXINT0中斷服務(wù)程序 AJMPEXITEXT2:;EXINT2中斷服務(wù)程序AJMP EXIT EXT3:;EXINT3中斷服務(wù)程序 AJMP EXIT 同樣,外部中斷1也可作相應(yīng)的擴(kuò)展。 中斷系統(tǒng)的例子中斷系統(tǒng)的例子 中斷控制實(shí)質(zhì)上是對(duì)中斷控制實(shí)質(zhì)上是對(duì)4個(gè)與中斷有關(guān)的特殊功能寄存?zhèn)€與中斷有關(guān)的特殊功能寄存器器TCON、SCON、IE和和IP進(jìn)行管理和控制,具體實(shí)施如下:進(jìn)行管理和控制,

48、具體實(shí)施如下: (1)CPU的開(kāi)、關(guān)中斷。的開(kāi)、關(guān)中斷。 (2)具體中斷源中斷請(qǐng)求的允許和禁止(屏蔽)。)具體中斷源中斷請(qǐng)求的允許和禁止(屏蔽)。 (3)各中斷源優(yōu)先級(jí)別的控制。)各中斷源優(yōu)先級(jí)別的控制。 (4)外部中斷請(qǐng)求觸發(fā)方式的設(shè)定。)外部中斷請(qǐng)求觸發(fā)方式的設(shè)定。 中斷管理和控制程序一般都包含在主程序中,根據(jù)需中斷管理和控制程序一般都包含在主程序中,根據(jù)需要通過(guò)幾條指令來(lái)完成。中斷服務(wù)程序是一種具有特定功要通過(guò)幾條指令來(lái)完成。中斷服務(wù)程序是一種具有特定功能的獨(dú)立程序段,可根據(jù)中斷源的具體要求進(jìn)行服務(wù)。下能的獨(dú)立程序段,可根據(jù)中斷源的具體要求進(jìn)行服務(wù)。下面通過(guò)實(shí)例來(lái)說(shuō)明其具體應(yīng)用。面通過(guò)實(shí)

49、例來(lái)說(shuō)明其具體應(yīng)用。 例例4-3 如右圖所示,如右圖所示,將將P1口的口的P1.4P1.7作為作為輸入位,輸入位, P1.0P1.3作為作為輸出位。要求利用輸出位。要求利用8031將開(kāi)關(guān)所設(shè)的數(shù)據(jù)讀入將開(kāi)關(guān)所設(shè)的數(shù)據(jù)讀入單片機(jī),并依次通過(guò)單片機(jī),并依次通過(guò)P1.0P1.3輸出,驅(qū)動(dòng)發(fā)輸出,驅(qū)動(dòng)發(fā)光二極管,以檢查光二極管,以檢查P1.4P1.7輸入的電平情況輸入的電平情況(高電平高電平LED亮亮)?,F(xiàn)要。現(xiàn)要求采用中斷觸發(fā)方式求采用中斷觸發(fā)方式, 每每中斷一次完成一次操作中斷一次完成一次操作。程序如下:程序如下: ORG 0000H AJMP MAIN ORG 0003H AJMP INTER

50、ORG 0030HMAIN:SETB EX0 SETB IT0 SETB EAHERE:SJMP HERE 中斷服務(wù)子程序:中斷服務(wù)子程序:(輸入、顯示)(輸入、顯示) ORG 0200HINTER:MOV P1,#0F0H MOV A,P1 SWAP A MOV P1,A RETI END 例例4-4 如右圖所如右圖所示的中斷電路可實(shí)現(xiàn)系示的中斷電路可實(shí)現(xiàn)系統(tǒng)的故障顯示。當(dāng)系統(tǒng)統(tǒng)的故障顯示。當(dāng)系統(tǒng)的各部分正常工作時(shí),的各部分正常工作時(shí),4個(gè)故障源的輸入均為個(gè)故障源的輸入均為低電平,顯示燈全不低電平,顯示燈全不亮。當(dāng)有某個(gè)部分出現(xiàn)亮。當(dāng)有某個(gè)部分出現(xiàn)故障時(shí),則相應(yīng)的輸入故障時(shí),則相應(yīng)的輸入線由

51、低電平變?yōu)楦唠娖骄€由低電平變?yōu)楦唠娖剑鄳?yīng)的發(fā)光二極管點(diǎn),相應(yīng)的發(fā)光二極管點(diǎn)亮。亮。程序如下:程序如下: ORG 0000H AJMP MAIN ORG 0003H AJMP INTER ORG 0030HMAIN:SETB EX0 SETB IT0 SETB EAHERE:SJMP HERE 中斷服務(wù)子程序:中斷服務(wù)子程序: ORG 0100HINTER:JNB P1.0, L1 SETB P1.1L1: JNB P1.2, L2 SETB P1.3L2: JNB P1.4, L3 SETB P1.5L3: JNB P1.6, L4 SETB P1.7L4: RETI END 例例4-5 某

52、工業(yè)監(jiān)控系統(tǒng)具有溫度、壓力、某工業(yè)監(jiān)控系統(tǒng)具有溫度、壓力、pH值等多路監(jiān)值等多路監(jiān)控功能。在控功能。在pH值值7時(shí)將向時(shí)將向CPU申請(qǐng)中斷,申請(qǐng)中斷,CPU響應(yīng)后令響應(yīng)后令P3.0引腳輸出高電平,經(jīng)驅(qū)動(dòng)使加堿管道電磁閥接通引腳輸出高電平,經(jīng)驅(qū)動(dòng)使加堿管道電磁閥接通1秒,秒,以調(diào)整以調(diào)整pH值。值。一、電路及分析:一、電路及分析: 中斷請(qǐng)求輸中斷請(qǐng)求輸入相當(dāng)于入相當(dāng)于“四輸四輸入的與或門入的與或門”,外電路上升沿外電路上升沿有效。有效。 P1.0P1.3用用于查詢中斷源。于查詢中斷源。 P1.4P1.7用用于清除中斷請(qǐng)求。于清除中斷請(qǐng)求。主程序及中斷程序入口部分:主程序及中斷程序入口部分: OR

53、G 0000H LJMP MAIN ORG 0003H LJMP INTX0 ORG 0030HMAIN:MOV SP,#5FH SETB EX0 SETB IT0 ;下降沿觸發(fā)下降沿觸發(fā) SETB EA SJMP $查詢部分:查詢部分:INTX0:CLR EA PUSH PSW PUSH A SETB EA JB P1.0, DV1 JB P1.1, DV2 JB P1.2, DV3 JB P1.3, DV4EXIT: CLR EA POP A POP PSW SETB EA RETI各裝置的中斷服務(wù)程序部分各裝置的中斷服務(wù)程序部分:DV1: (裝置裝置1的中斷服務(wù)程序的中斷服務(wù)程序) :

54、LJMP EXITDV2: (裝置裝置2的中斷服務(wù)程序的中斷服務(wù)程序) : LJMP EXITDV4: (裝置裝置4的中斷服務(wù)程序的中斷服務(wù)程序) : LJMP EXIT裝置裝置3的中斷服務(wù)程序的中斷服務(wù)程序:DV3:SETB P3.0 LCALL DELAY CLR P3.0 CLR P1.6 SETB P1.6 LJMP EXIT延時(shí)時(shí)間計(jì)算:延時(shí)時(shí)間計(jì)算:8+(2+(2+4*249+2)*100 +2)*10+8=1000056S1S延時(shí)延時(shí)1秒的子程序秒的子程序: (設(shè)晶振為(設(shè)晶振為12MHz)DELAY:PUSH 30H PUSH 31H PUSH 32H MOV 32H,#10D

55、Y1: MOV 31H,#100DY2: MOV 30H,#249LY3: NOP NOP DJNZ 30H,DY3 DJNZ 31H,LY2 DJNZ 32H,LY1 POP 32H POP 31H POP 30H RET 例:用例:用8051單片機(jī)設(shè)計(jì)一交通信號(hào)燈模擬控制系統(tǒng),晶單片機(jī)設(shè)計(jì)一交通信號(hào)燈模擬控制系統(tǒng),晶振采用振采用12MHz。具體要求如下:。具體要求如下: (1)正常情況下)正常情況下A、B道(道(A、B道交叉組成十字路口,道交叉組成十字路口,A是主道,是主道,B是支道)輪流放行,是支道)輪流放行,A道放行道放行1分鐘(其中分鐘(其中5秒用秒用于警告),于警告),B道放行道放

56、行30秒(其中秒(其中5秒用于警告)。秒用于警告)。 (2)一道有車而另一道無(wú)車(用按鍵開(kāi)關(guān))一道有車而另一道無(wú)車(用按鍵開(kāi)關(guān)K1、K2模擬)模擬)時(shí),使有車車道放行。時(shí),使有車車道放行。 (3)有緊急車輛通過(guò)(用按鍵開(kāi)關(guān))有緊急車輛通過(guò)(用按鍵開(kāi)關(guān)K0模擬)時(shí),模擬)時(shí),A、B道均為紅燈。道均為紅燈。3、中斷控制器、中斷控制器82591、8259的外部引線的外部引線2、8259的工作方式的工作方式3、8259的內(nèi)部控制字的內(nèi)部控制字4、8259的尋址的尋址5、8259的初始化的初始化6、8259的應(yīng)用的應(yīng)用中斷控制器中斷控制器82591、8259的外部引線的外部引線1234567891011

57、121314VccA0IR7IR6IR5IR4IR3IR2IR1IR0SP/EN2827262524232221201918171615CSCAS2CAS0CAS1VssINTAINTWRRD8259引線圖引線圖D0-D7為雙向數(shù)據(jù)線為雙向數(shù)據(jù)線IR0-IR7為中斷請(qǐng)求輸入為中斷請(qǐng)求輸入WR、RD為寫和讀控制端為寫和讀控制端CS為片選信號(hào)為片選信號(hào)A0為為8259內(nèi)部選擇端內(nèi)部選擇端INT為為8259中斷請(qǐng)求端中斷請(qǐng)求端INTA為中斷響應(yīng)輸入端為中斷響應(yīng)輸入端CAS0CAS2級(jí)聯(lián)控制線級(jí)聯(lián)控制線SP/EN為雙功能引線。為雙功能引線。D7D6D5D4D3D2D1D0與系統(tǒng)數(shù)據(jù)總線相連接。與系統(tǒng)數(shù)

58、據(jù)總線相連接。用于:編程時(shí)控制字、命令字輸出用于:編程時(shí)控制字、命令字輸出;中斷響應(yīng)時(shí),中斷響應(yīng)時(shí),8259的中斷向量輸入的中斷向量輸入;外部中斷源外部中斷源8個(gè)輸入端個(gè)輸入端,該信號(hào)為上該信號(hào)為上升沿或電平方式中斷。由程序指定。升沿或電平方式中斷。由程序指定。與系統(tǒng)總線的寫、讀與系統(tǒng)總線的寫、讀相連接。相連接。低電平有低電平有效,連接效,連接地址譯碼地址譯碼8259內(nèi)部寄存器的選擇信號(hào)。它的內(nèi)部寄存器的選擇信號(hào)。它的不同狀態(tài),對(duì)應(yīng)不同的內(nèi)部寄存器。不同狀態(tài),對(duì)應(yīng)不同的內(nèi)部寄存器。使用中通常接地址總線的某一位,使用中通常接地址總線的某一位,例如例如A1和和A0 等。等。INT中斷請(qǐng)求輸出到中斷

59、請(qǐng)求輸出到CPU,可直接接可直接接到到CPU的中斷請(qǐng)求輸入端。的中斷請(qǐng)求輸入端。INTA是是INT的逆過(guò)程,響應(yīng)中斷。的逆過(guò)程,響應(yīng)中斷。由由CPU到到8259。當(dāng)多個(gè)當(dāng)多個(gè)8259級(jí)聯(lián)工作時(shí),主控級(jí)聯(lián)工作時(shí),主控CAS0CAS2為為輸出,從屬芯片輸出,從屬芯片CAS0CAS2為輸入。從屬芯為輸入。從屬芯片提出中斷請(qǐng)求時(shí),主控片提出中斷請(qǐng)求時(shí),主控CAS0CAS2向從屬向從屬送出相應(yīng)的編碼,使從屬級(jí)中斷被允許。送出相應(yīng)的編碼,使從屬級(jí)中斷被允許。當(dāng)工作在緩沖模式時(shí),它為輸出,用以控制當(dāng)工作在緩沖模式時(shí),它為輸出,用以控制緩沖傳送緩沖傳送;當(dāng)非工作緩沖模式時(shí),它用作輸入。當(dāng)非工作緩沖模式時(shí),它用

60、作輸入。SP=1時(shí),時(shí),8259為主控級(jí)為主控級(jí);SP=0時(shí),為從屬級(jí)。時(shí),為從屬級(jí)。注意:注意:3個(gè)狀態(tài)寄存器:個(gè)狀態(tài)寄存器:IRR,IMR,ISR意義。意義。2、8259的工作方式的工作方式(1) 8080/85與與8086/88工作模式工作模式(2) 8259的中斷優(yōu)先級(jí)管理方式的中斷優(yōu)先級(jí)管理方式(3) 8259的屏蔽方式的屏蔽方式(4) 中斷結(jié)束方式中斷結(jié)束方式(5) 中斷觸發(fā)方式。中斷觸發(fā)方式。由初始化命令字指定其工作模式由初始化命令字指定其工作模式;8080/85工作模式特點(diǎn):工作模式特點(diǎn):CPU要發(fā)三個(gè)要發(fā)三個(gè)INTA脈沖脈沖;8259接收第一個(gè):接收第一個(gè):8259將將CDH

溫馨提示

  • 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)論