版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、n了解中斷的基本概念和功能。n掌握中斷系統(tǒng)的結(jié)構(gòu)和控制方式。n掌握中斷系統(tǒng)的中斷處理過程。n用中斷系統(tǒng)設(shè)計一個手控流水燈控制器。n用中斷系統(tǒng)設(shè)計一個交通信號燈控制器。 n中斷響應(yīng)的條件和中斷優(yōu)先級的應(yīng)用。n外部中斷源的擴展方法。n5.1 5.1 中斷系統(tǒng)結(jié)構(gòu)與控制中斷系統(tǒng)結(jié)構(gòu)與控制 n5.2 5.2 中斷處理過程中斷處理過程 n5.3 5.3 外部中斷擴展外部中斷擴展 n本章小結(jié)本章小結(jié)n習(xí)題習(xí)題 n5.1.1 5.1.1 中斷的概念中斷的概念 n5.1.2 5.1.2 中斷的功能中斷的功能 n5.1.3 5.1.3 中斷系統(tǒng)結(jié)構(gòu)中斷系統(tǒng)結(jié)構(gòu) n5.1.4 5.1.4 中斷系統(tǒng)控制中斷系統(tǒng)控制
2、 n在單片機中,當(dāng)CPU在執(zhí)行程序時,由單片機內(nèi)部或外部的原因引起的隨機事件要求CPU暫時停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個用于處理該隨機事件的程序,處理完后又返回被中止的程序斷點處繼續(xù)執(zhí)行,這一過程就稱為中斷。n單片機處理中斷的4個步驟:中斷請求、中斷響應(yīng)、中斷處理和中斷返回。n向CPU發(fā)出中斷請求的來源,或引起中斷的原因稱為中斷源。中斷源要求服務(wù)的請求稱為中斷請求。中斷源可分為兩大類:一類來自單片機內(nèi)部,稱之為內(nèi)部中斷源;另一類來自單片機外部,稱之為外部中斷源。 主程序 中斷服務(wù)程序 返回 主程序 主程序 斷點 RETI 響應(yīng)中斷 請求 n中斷系統(tǒng)是指能實現(xiàn)中斷功能的硬件和軟件。n中斷系統(tǒng)
3、的功能一般包括以下幾個方面。l進行中斷優(yōu)先級排隊l實現(xiàn)中斷嵌套l自動響應(yīng)中斷l(xiāng)實現(xiàn)中斷返回n中斷的特點。l可以提高CPU的工作效率l實現(xiàn)實時處理l處理故障(1) 進行中斷優(yōu)先級排隊n通常,單片機中有多個中斷源,設(shè)計人員能按輕重緩急給每個中斷源的中斷請求賦予一定的中斷優(yōu)先級。n當(dāng)兩個或兩個以上的中斷源同時請求中斷時,CPU可通過中斷優(yōu)先級排隊電路首先響應(yīng)中斷優(yōu)先級高的中斷請求,等到處理完優(yōu)先級高的中斷請求后,再來響應(yīng)優(yōu)先級低的中斷請求。(2) 實現(xiàn)中斷嵌套nCPU在響應(yīng)某一中斷源中斷請求而進行中斷處理時,若有中斷優(yōu)先級更高的中斷源發(fā)出中斷請求,CPU會暫停正在執(zhí)行的中斷服務(wù)程序,轉(zhuǎn)向執(zhí)行中斷優(yōu)先
4、級更高的中斷源的中斷服務(wù)程序,等處理完這個高優(yōu)先級的中斷請求后,再返回來繼續(xù)執(zhí)行被暫停的中斷服務(wù)程序。這個過程稱為中斷嵌套。 (3) 自動響應(yīng)中斷n中斷源向CPU發(fā)出的中斷請求是隨機的。通常,CPU總是在每條指令的最后狀態(tài)對中斷請求信號進行檢測;當(dāng)某一中斷源發(fā)出中斷請求時,CPU能根據(jù)相關(guān)條件(如中斷優(yōu)先級、是否允許中斷)進行判斷,決定是否響應(yīng)這個中斷請求。若允許響應(yīng)這個中斷請求,CPU在執(zhí)行完相關(guān)指令后,會自動完成斷點地址壓入堆棧、中斷矢量地址送入程序計數(shù)器PC、撤除本次中斷請求標(biāo)志,轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程序。(4) 實現(xiàn)中斷返回nCPU響應(yīng)某一中斷源中斷請求,轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程序,在執(zhí)
5、行中斷服務(wù)程序最后的中斷返回指令時,會自動彈出堆棧區(qū)中保存的斷點地址,返回到中斷前的原程序中。 n8051單片機的中斷系統(tǒng)主要由與中斷有關(guān)的4個特殊功能寄存器和硬件查詢電路等組成。l定時器控制寄存器TCON 主要用于保存中斷信息。l串行口控制寄存器SCON 主要用于保存中斷信息。l中斷允許寄存器IE 主要用于控制中斷的開放和關(guān)閉。l中斷優(yōu)先級寄存器IP主要用于設(shè)定優(yōu)先級別。l硬件查詢電路主要用于判定5個中斷源的自然優(yōu)先級別。n 8051單片機的中斷源有五個,可分為三類。l外部中斷l(xiāng)定時中斷l(xiāng)串行口中斷1. 外部中斷類n外部中斷是由外部原因(如打印機、鍵盤、控制開關(guān)、外部故障)引起的,可以通過兩
6、個固定引腳來輸入到單片機內(nèi)的信號,即外部中斷0(INT0)和外部中斷1(INT1)。lINT0外部中斷0中斷請求信號輸入端,P3.2的第二功能。 由定時器控制寄存器TCON中的IT0位決定中斷請求信號是低電平有效還是下降沿有效。一旦輸入信號有效,即向CPU申請中斷,并且硬件自動使IE0置1。lINT1外部中斷1中斷請求信號輸入端,P3.3的第二功能。 由定時器控制寄存器TCON中的IT1位決定采用電平觸發(fā)方式還是邊沿觸發(fā)方式。一旦輸入信號有效,即向CPU申請中斷,并且硬件自動使IE1置1。2. 定時中斷類n定時中斷是由內(nèi)部定時(或計數(shù))溢出或外部定時(或計數(shù))溢出引起的,即定時器0(T0) 中
7、斷和定時器1(T1) 中斷。n當(dāng)定時器對單片機內(nèi)部定時脈沖進行計數(shù)而發(fā)生計數(shù)溢出時,即表明定時時間到,由硬件自動使TF0(TF1)置1,并申請中斷。當(dāng)定時器對單片機外部計數(shù)脈沖進行計數(shù)而發(fā)生計數(shù)溢出時,即表明計數(shù)次數(shù)到,由硬件自動使TF0(TF1)置1,并申請中斷。外部計數(shù)脈沖是通過兩個固定引腳來輸入到單片機內(nèi)的。lT0外部計數(shù)輸入端P3.4的第二功能。 當(dāng)定時器0工作于計數(shù)方式時,外部計數(shù)脈沖下降沿有效,定時器0進行加1計數(shù)。lT1外部計數(shù)輸入端P3.5的第二功能。 當(dāng)定時器1工作于計數(shù)方式時,外部計數(shù)脈沖下降沿有效,定時器1進行加1計數(shù)。3. 串行口中斷類n串行口中斷是為接收或發(fā)送串行數(shù)據(jù)
8、而設(shè)置的。串行中斷請求是在單片機芯片內(nèi)部發(fā)生的。lRXD串行口輸入端,P3.0的第二功能。 當(dāng)接收完一幀數(shù)據(jù)時,硬件自動使RI置1,并申請中斷。lTXD串行口輸出端,P3.1的第二功能。 當(dāng)發(fā)送完一幀數(shù)據(jù)時,硬件自動使TI置1,并申請中斷。1. 定時器控制寄存器TCON 定時器控制寄存器TCON的作用是控制定時器的啟動與停止,并保存T0、T1的溢出中斷標(biāo)志和外部中斷、的中斷標(biāo)志。TCON的格式: TCON 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H (88H)各位的功能說明:(1) TF1(TCON.7):定時器1溢出標(biāo)志位。定時器1被啟動計數(shù)后,從初值開始進行加1計數(shù),當(dāng)
9、定時器1計滿溢出時,由硬件自動使TF1置1,并申請中斷。該標(biāo)志一直保持到CPU響應(yīng)中斷后,才由硬件自動清0。也可用軟件查詢該標(biāo)志,并由軟件清0。(2) TR1(TCON.6):定時器1啟??刂莆?。 TF1TR1TF0TR0IE1IT1IE0IT0各位的功能說明:(3) IT1(TCON.2):外部中斷1觸發(fā)方式選擇位。 當(dāng)ITl=0時,外部中斷1為電平觸發(fā)方式。在這種方式下,CPU在每個機器周期的S5P2期間對 INT1(P3.3)引腳采樣,若采到低電平,則認(rèn)為有中斷申請,硬件自動使IEl置1;若為高電平,認(rèn)為無中斷申請或中斷申請已撤除,硬件自動使IEl清0。在電平觸發(fā)方式中,CPU響應(yīng)中斷后
10、硬件不能自動使IEl清0,也不能由軟件使IEl清0,所以在中斷返回前必須撤消INT1引腳上的低電平,否則將再次響應(yīng)中斷造成出錯。 當(dāng)ITl=1時,外部中斷1為邊沿觸發(fā)方式。CPU在每個機器周期的S5P2期間采樣 INT1 (P3.3)引腳。若在連續(xù)兩個機器周期采樣到先高電平后低電平,則認(rèn)為有中斷申請,硬件自動使IEl置1,此標(biāo)志一直保持到CPU響應(yīng)中斷時,才由硬件自動清0。在邊沿觸發(fā)方式下,為保證CPU在兩個機器周期內(nèi)檢測到先高后低的負(fù)跳變,輸入高低電平的持續(xù)時間至少要保持12個時鐘周期。各位的功能說明:(4) IE1(TCON.3):外部中斷1請求標(biāo)志位。IEl=1表示外部中斷1向CPU申請
11、中斷。當(dāng)CPU響應(yīng)外部中斷1的中斷請求時,由硬件自動使IE1清0(邊沿觸發(fā)方式)。(5) TF0(TCON.5):定時器0溢出標(biāo)志位。其功能同TF1。(6) TR0(TCON.4):定時器0啟、??刂莆?。其功能同TR1。(7) IE0(TCON.1):外部中斷0請求標(biāo)志位。其功能同IE1。(8) IT0(TCON.0):外部中斷0觸發(fā)方式選擇位。其功能同IT1。 2. 串行口控制寄存器SCON 串行口控制寄存器SCON的低2位TI和RI保存串行口的接收中斷和發(fā)送中斷標(biāo)志。SCON的格式: SCON 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H (98H) 各位的功能說明:(1
12、) TI (SCON.1):串行發(fā)送中斷請求標(biāo)志。CPU將一個字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器SBUF后啟動發(fā)送,每發(fā)送完一幀數(shù)據(jù),硬件自動使TI置1。但CPU響應(yīng)中斷后,硬件并不能自動使TI清0,必須由軟件使TI清0。(2) RI (SCON.0):串行接收中斷請求標(biāo)志。在串行口允許接收時,每接收完一幀數(shù)據(jù),硬件自動使RI置1。但CPU響應(yīng)中斷后,硬件并不能自動使RI清0,必須由軟件使RI清0。 SM0SM1SM2RENTB8RB8TIRI3. 中斷允許寄存器IE 中斷允許寄存器IE的作用是控制CPU對中斷的開放或屏蔽以及每個中斷源是否允許中斷。IE的格式: IE AFH ACH ABH AAH A9
13、H A8H (A8H)各位的功能說明:(1) EA(IE.7):CPU中斷總允許位。EA=1,CPU開放中斷。每個中斷源是被允許還是被禁止,分別由各中斷源的中斷允許位確定;EA=0,CPU屏蔽所有的中斷要求,稱為關(guān)中斷。(2) ES(IE.4):串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷。 EAESET1EX1ET0EX0各位的功能說明:(3) ET1(IE.3):定時器1中斷允許位。ET1=1,允許定時器1中斷;ETl=0,禁止定時器1中斷。(4) EX1(IE.2):外部中斷1中斷允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。(5) ET
14、0(IE.1):定時器0中斷允許位。ET0=1,允許定時器0中斷;ET0=0,禁止定時器0中斷。(6) EX0(IE.0):外部中斷0中斷允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。 4. 中斷優(yōu)先級寄存器IP 中斷優(yōu)先級寄存器IP的作用是設(shè)定各中斷源的優(yōu)先級別。IP的格式: IP BCH BBH BAH B9H B8H (B8H)各位的功能說明:(1) PS(IP.4):串行口中斷優(yōu)先級控制位。PS=1,串行口為高優(yōu)先級中斷;PS=0,串行口為低優(yōu)先級中斷。(2) PT1(IP.3):定時器1中斷優(yōu)先級控制位。PT1=1,定時器1為高優(yōu)先級中斷;PTl=0,定時器
15、1為低優(yōu)先級中斷。 PSPT1PX1PT0PX0各位的功能說明:(3) PX1(IP.2):外部中斷1中斷優(yōu)先級控制位。PX1=1,外部中斷1為高優(yōu)先級中斷;PXl=0,外部中斷1為低優(yōu)先級中斷。(4) PT0(IP.1):定時器0中斷優(yōu)先級控制位。PT0=1,定時器T0為高優(yōu)先級中斷PT0=0,定時器0為低優(yōu)先級中斷。(5) PX0(IP.0):外部中斷0中斷優(yōu)先級控制位。PX0=1,外部中斷0為高優(yōu)先級中斷;PX0=0,外部中斷0為低優(yōu)先級中斷。n5.2.1 5.2.1 中斷響應(yīng)中斷響應(yīng) n5.2.2 5.2.2 中斷處理中斷處理 n5.2.3 5.2.3 中斷返回中斷返回 n5.2.4
16、5.2.4 中斷的應(yīng)用實例中斷的應(yīng)用實例 1. CPU的中斷響應(yīng)條件CPU響應(yīng)中斷必須首先滿足以下三個基本條件。(1) 有中斷源發(fā)出中斷請求。(2) 中斷總允許位EA=1。(3) 請求中斷的中斷源的中斷允許位為1。在滿足以上條件的基礎(chǔ)上,若有下列任何一種情況存在,中斷響應(yīng)都會受到阻斷。(1) CPU正在執(zhí)行一個同級或高優(yōu)先級的中斷服務(wù)程序。(2) 正在執(zhí)行的指令尚未執(zhí)行完。(3) 正在執(zhí)行中斷返回指令 RETI或者對專用寄存器IE、IP進行讀/寫的指令。CPU在執(zhí)行完上述指令之后,要再執(zhí)行一條指令,才能響應(yīng)中斷請求。2. 中斷優(yōu)先級的判定n中斷源的優(yōu)先級別分為高級和低級,通過由軟件設(shè)置中斷優(yōu)先
17、級寄存器IP相關(guān)位來設(shè)定每個中斷源的級別。 n如果幾個同一優(yōu)先級別的中斷源同時向CPU請求中斷,CPU通過硬件查詢電路首先響應(yīng)自然優(yōu)先級較高的中斷源的中斷請求。n中斷可實現(xiàn)兩級中斷嵌套。高優(yōu)先級中斷源可中斷正在執(zhí)行的低優(yōu)先級中斷服務(wù)程序,除非執(zhí)行了低優(yōu)先級中斷服務(wù)程序的CPU關(guān)中斷指令。同級或低優(yōu)先級的中斷不能中斷正在執(zhí)行的中斷服務(wù)程序。3. 中斷響應(yīng)過程n在滿足中斷響應(yīng)條件時,CPU響應(yīng)中斷。首先,將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置1,以屏蔽同級別中斷源的中斷請求。其次,硬件自動生成長調(diào)用指令(LCALL),把斷點地址壓入堆棧保護(但不保護狀態(tài)寄存器PSW及其他寄存器內(nèi)容),然后將中斷源對應(yīng)的中斷入
18、口地址裝入程序計數(shù)器PC中,使程序轉(zhuǎn)向該中斷入口地址,并執(zhí)行中斷服務(wù)程序。n8051單片機的中斷入口地址(稱為中斷矢量)由單片機硬件電路決定。中 斷 源中斷入口地址外部中斷00003H定時器T0中斷000BH外部中斷10013H定時器T1中斷001BH串行口中斷0023Hn中斷處理就是執(zhí)行中斷服務(wù)程序,從中斷入口地址開始執(zhí)行,直到返回指令(RETI)為止。此過程一般包括三部分內(nèi)容,一是保護現(xiàn)場,二是處理中斷源的請求,三是恢復(fù)現(xiàn)場。n通常,主程序和中斷服務(wù)程序都會用到累加器A、狀態(tài)寄存器PSW及其他一些寄存器。在執(zhí)行中斷服務(wù)程序時,CPU若用到上述寄存器,就會破壞原先存在這些寄存器中的內(nèi)容,中斷
19、返回,將會造成主程序的混亂。因此,在進入中斷服務(wù)程序后,一般要先保護現(xiàn)場,然后再執(zhí)行中斷處理程序,在返回主程序以前,再恢復(fù)現(xiàn)場。n在編寫中斷服務(wù)程序時要注意以下幾個方面。l一般在這些中斷入口地址區(qū)存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)向中斷服務(wù)程序的起始地址。 l若要求禁止更高優(yōu)先級中斷源的中斷請求,應(yīng)先用軟件關(guān)閉CPU中斷或屏蔽更高級中斷源的中斷,在中斷返回前再開放被關(guān)閉或被屏蔽的中斷。l在保護現(xiàn)場和恢復(fù)現(xiàn)場時,為了不使現(xiàn)場數(shù)據(jù)受到破壞而造成混亂,在保護現(xiàn)場之前要關(guān)中斷,在保護現(xiàn)場之后再開中斷;在恢復(fù)現(xiàn)場之前關(guān)中斷,在恢復(fù)現(xiàn)場之后再開中斷。1. 中斷返回n中斷返回是指中斷服務(wù)完成后,CPU返回到原程序的
20、斷點(即原來斷開的位置),繼續(xù)執(zhí)行原來的程序。n中斷返回通過執(zhí)行中斷返回指令RETI來實現(xiàn),該指令的功能是首先將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置0,以開放同級別中斷源的中斷請求;其次,從堆棧區(qū)把斷點地址取出,送回到程序計數(shù)器PC中。因此,不能用RET指令代替RETI指令。 2. 中斷請求的撤除 CPU響應(yīng)某中斷請求后,在中斷返回前,應(yīng)該撤消該中斷請求,否則會引起另一次中斷。不同中斷源中斷請求的撤除方法是不一樣的。(1) 定時器溢出中斷請求的撤除 CPU在響應(yīng)中斷后,硬件會自動清除中斷請求標(biāo)志TF0或TFl。(2) 串行口中斷的撤除 在CPU響應(yīng)中斷后,硬件不能清除中斷請求標(biāo)志TI和RI,而要由軟件來清
21、除相應(yīng)的標(biāo)志。(3) 外部中斷的撤除l外部中斷為邊沿觸發(fā)方式時,CPU響應(yīng)中斷后,硬件會自動清除中斷請求標(biāo)志IE0或IEl。l外部中斷為電平觸發(fā)方式時,CPU響應(yīng)中斷后,硬件會自動清除中斷請求標(biāo)志IE0或IEl,但由于加到INT0或INT1引腳的外部中斷請求信號并未撤除,中斷請求標(biāo)志IE0或IEl會再次被置1,所以在CPU響應(yīng)中斷后應(yīng)立即撤除INT0或INT1引腳上的低電平。一般采用加一個D觸發(fā)器和幾條指令的方法來解決這個問題。 l由下圖可知,外部中斷請求信號直接加到D觸發(fā)器的CP端,當(dāng)外部中斷請求的低電平脈沖信號出現(xiàn)在CP端時,D觸發(fā)器的Q端置0,INT0或INT1引腳為低電平,發(fā)出中斷請求
22、。在中斷服務(wù)程序中開始的三條指令可先在P1.0輸出一個寬度為2個機器周期的負(fù)脈沖,使D觸發(fā)器的Q端置1,然后由軟件來清除中斷請求標(biāo)志IE0或IEl。 外部中斷的撤除電路 INT0 8051 P1.0 Q D CP DS 1 中斷請求信號 INT0: ANL P1,#0FEH ORL P1,#01H CLR IE0 中斷服務(wù)程序的開始部分 n中斷系統(tǒng)的初始化步驟。(1) 開放CPU中斷和有關(guān)中斷源的中斷允許,設(shè)置中斷允許寄存器IE中相應(yīng)的位。(2) 根據(jù)需要確定各中斷源的優(yōu)先級別,設(shè)置中斷優(yōu)先級寄存器IP中相應(yīng)的位。(3) 根據(jù)需要確定外部中斷的觸發(fā)方式,設(shè)置定時器控制寄存器TCON中相應(yīng)的位。
23、 【例1】 P1口做輸出口,控制八只燈(P1口輸出低電平時燈被點亮),利用手控單脈沖信號作為外部中斷信號,控制八只燈按一定的規(guī)律循環(huán)點亮。解:手控單脈沖信號作為外部中斷信號由INT0(P3.2)管腳輸入,設(shè)置中斷允許寄存器IE中的EA、EX0位為1;只有一個中斷源可不設(shè)置優(yōu)先級別;中斷觸發(fā)方式設(shè)為邊沿觸發(fā),控制位IT0應(yīng)設(shè)置為1。 ORG 0000H;程序入口0000H02 00 50 LJMP MAIN;轉(zhuǎn)向主程序 ORG 0003H;外部中斷0的入口地址0003H02 01 00 LJMP INT;轉(zhuǎn)向中斷服務(wù)程序 ORG 0050H0050HD2 AFMAIN: SETB EA0052H
24、D2 A8 SETB EX00054HD2 88 SETB IT0;中斷觸發(fā)方式為邊沿觸發(fā)0056H74 FE MOV A,#0FEH0058HF5 90 MOV P1,A005AH80 FE SJMP $ ORG 0100H0100H23 INT:RL A;中斷服務(wù)程序0101HF5 90 MOV P1,A0103H32 RETI END參考程序:【例2】 P1口做輸出口,正常時控制八只燈(P1口輸出低電平時燈被點亮)每隔0.5秒全亮全滅一次;按下開關(guān)1八只燈從右向左依次點亮,按下開關(guān)2八只燈從左向右依次點亮。解:開關(guān)1的低電平脈沖信號作為外部中斷信號由INT0(P3.2)管腳輸入,開關(guān)2的
25、低電平信號作為外部中斷信號由INT1(P3.3)管腳輸入。中斷允許寄存器IE中相應(yīng)的EA、EX1、EX0位設(shè)置為1。 外部中斷0為低優(yōu)先級, IP中的PX0位設(shè)置為0;外部中斷1為高優(yōu)先級, IP中的PX1位設(shè)置為1。 外部中斷0的中斷觸發(fā)方式設(shè)為邊沿觸發(fā),控制位IT0應(yīng)設(shè)置為1;外部中斷1的中斷觸發(fā)方式設(shè)為電平觸發(fā),控制位IT1應(yīng)設(shè)置為0。 ORG 0000H;程序入口0000H02 00 30 LJMP MAIN;轉(zhuǎn)向主程序 ORG 0003H;外部中斷0的入口地址0003H02 01 00 LJMP INT0;轉(zhuǎn)向外部中斷0中斷服務(wù)程序 ORG 0013H;外部中斷1的入口地址0013H
26、02 02 00 LJMP INT1;轉(zhuǎn)向外部中斷1中斷服務(wù)程序 ORG 0030H0030H75 81 30MAIN: MOV SP,#30H0033H75 A8 85 MOV IE,#85H;允許外部中斷0、外部中斷1中斷0036H75 B8 04 MOV IP,#04H;外部中斷1為高優(yōu)先級0039H75 88 01 MOV TCON,#01H;外部中斷0為邊沿觸發(fā)003CH74 00 MOV A,#00H003EHF5 90 LP1: MOV P1,A0040H12 03 00 LCALL DELAY0043HF4 CPL A0044H80 F8 SJMP LP1主程序: ORG 01
27、00H0100HC0 E0 INT0: PUSH A;外部中斷0中斷服務(wù)程序0102HC0 D0 PUSH PSW0104HC2 D4 CLR RS1;選擇第1組工作寄存器0106HD2 D3 SETB RS00108H7A 07 MOV R2,#07H010AH74 FE MOV A,#0FEH;燈點亮的初始狀態(tài)010CHF5 90 NEXT0: MOV P1,A010EH12 03 00 LCALL DELAY0111H23 RL A;點亮左邊一盞燈0112HDA F8 DJNZ R2,NEXT00114HD0 D0 POP PSW0116HD0 E0 POP A0118H32 RETI外
28、部中斷0中斷服務(wù)程序: ORG 0200H0200HC0 E0 INT1: PUSH A;外部中斷1中斷服務(wù)程序0202HC0 D0 PUSH PSW0204HD2 D4 SETB RS1;選擇第2組工作寄存器0206HC2 D3 CLR RS00208H7A 07 MOV R2,#07H020AH74 7F MOV A,#7FH;燈點亮的初始狀態(tài)020CHF5 90NEXT1: MOV P1,A020EH12 03 00 LCALL DELAY0211H03 RR A;點亮右邊一盞燈0212HDA F8 DJNZ R2,NEXT10214HD0 D0 POP PSW0216HD0 E0 PO
29、P A0218H32 RETI外部中斷1中斷服務(wù)程序: ORG 0300H0300H7B FADELAY: MOV R3,#250;延時子程序0302H7A F8 DEL2: MOV R2,#2480304H00 NOP0305HDA FD DEL1: DJNZ R2,DEL10307HDB F9 DJNZ R3,DEL20309H22 RET;子程序返回 END延時子程序:n5.3.1 5.3.1 定時器擴展法定時器擴展法 n5.3.2 5.3.2 中斷加查詢擴展法中斷加查詢擴展法 n5.3.3 5.3.3 外部中斷擴展的應(yīng)用實例外部中斷擴展的應(yīng)用實例 思路:8051單片機內(nèi)部設(shè)有兩個16位
30、可編程定時器/計數(shù)器。定時器/計數(shù)器工作于計數(shù)方式時,定時器0外部輸入端(P3.4)或定時器1外部輸入端(P3.5)作為計數(shù)脈沖輸入端,在計數(shù)輸入脈沖的下降沿到來時進行加1計數(shù)。當(dāng)定時器/計數(shù)器計滿后,若再有脈沖到來,定時器/計數(shù)器將產(chǎn)生溢出中斷。方法:利用上述特點,預(yù)先將定時器/計數(shù)器設(shè)置為滿量程,通過外部輸入端P3.4或P3.5輸入下降沿脈沖,將立即向CPU發(fā)出中斷請求,在滿足CPU的中斷響應(yīng)條件的情況下,CPU將執(zhí)行相應(yīng)的中斷服務(wù)程序。應(yīng)用:在外部中斷源個數(shù)不太多并且定時器有空余的情況下,一般可采用定時器擴展法進行外部中斷源的擴展。 思路:對多個外部中斷源,采用中斷加查詢相結(jié)合的方法響應(yīng)
31、中斷。擴展電路原理如下圖所示。多個外部中斷源通過多個OC門電路組成線或電路后與P3.2(P3.3)相連,同時,每一個外部中斷源將并行I/O口(如P1口)作為多個外部中斷源的識別線。方法:在多個外部中斷源中若有一個或幾個為高電平則輸出為0,則P3.2(P3.3)為低電平,向CPU發(fā)出中斷請求;CPU在執(zhí)行中斷服務(wù)程序時,先依次查詢P1口的中斷源輸入狀態(tài),然后轉(zhuǎn)入到相應(yīng)的中斷服務(wù)程序。應(yīng)用:中斷加查詢擴展法比較簡單,但當(dāng)外部中斷源的個數(shù)較多時,因查詢時間較長,不能滿足實時控制的要求。 【例3】 用發(fā)光二極管模擬交通信號燈,用邏輯電平開關(guān)模擬控制開關(guān),設(shè)計一個交通信號燈控制系統(tǒng)。設(shè)計要求如下: A車
32、道與B車道交叉組成十字路口,A是主道,B是支道;正常情況下,A、B兩車道輪流放行。具體放行時間和要求如下:(1) A車道放行50s,其中綠燈常亮44s,綠燈閃爍3s(用于警告),黃燈常亮3s(用于警告)。(2) B車道放行30s,其中綠燈常亮24s,綠燈閃爍3s(用于警告),黃燈常亮3s(用于警告)。 在交通繁忙時,交通信號燈控制系統(tǒng)應(yīng)有手控開關(guān),可人為地改變信號燈的狀態(tài),以緩解交通擁擠狀況??刂埔笕缦拢?1) 在B車道放行期間,若A車道有車而B車道無車,按下開關(guān)使A車道放行15s。(2) 在A車道放行期間,若B車道有車而A車道無車,按下開關(guān)使B車道放行15s。(3) 有緊急車輛通過時,按下
33、開關(guān)使A、B車道均為紅燈,禁行15s。 解:解:用發(fā)光二極管模擬交通信號燈,用P1口輸出控制信號,輸出低電平時,信號燈亮;反之,則燈滅。根據(jù)題意分析,在正常情況和交通繁忙時,A、B兩車道的六只信號燈的控制狀態(tài)有五種形式。 交通信號燈與控制狀態(tài)的對應(yīng)關(guān)系 控制狀態(tài)P1口控制碼P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0未用未用B道綠燈B道黃燈B道紅燈A道綠燈A道黃燈A道紅燈A綠燈亮B紅燈亮F3H11110011A黃燈亮B紅燈亮F5H11110101A紅燈亮B綠燈亮DEH11011110A紅燈亮B黃燈亮EEH11101110A紅燈亮B紅燈亮F6H11110110 開始 A 綠燈
34、閃、B 紅燈延時 3s A 紅燈、B 綠燈閃延時 3s A 紅燈、B 綠燈延時 24s A 綠燈、B 紅燈延時 44s A 紅燈、B 黃燈延時 3s A 黃燈、B 紅燈延時 3s 初始化 開中斷 保護現(xiàn)場 關(guān)中斷 A 道有車? B 道有車? A 紅燈、B 綠燈延時 15s A 綠燈、B 紅燈延時 15s 關(guān)中斷 恢復(fù)現(xiàn)場 開中斷 中斷返回 中斷響應(yīng) 保護現(xiàn)場 A 紅燈、B 紅燈延時 15s 恢復(fù)現(xiàn)場 中斷返回 中斷響應(yīng) 主程序 有車車道放行 中斷服務(wù)程序 緊急車輛 中斷服務(wù)程序 交通信號燈控制系統(tǒng)程序流程圖 ORG 0000H0000H12 00 30 LJMP MAIN;轉(zhuǎn)向主程序 ORG
35、0003H0003H12 02 00 LJMP INT0;轉(zhuǎn)向緊急車輛中斷服務(wù)程序 ORG 0013H0013H12 03 00 LJMP INT1;轉(zhuǎn)向有車車道放行中斷服務(wù)程序 ORG 0030H0030HD2 B8MAIN:SETB PX0;置外部中斷0為高優(yōu)先級中斷0032H75 88 00 MOV TCON,#00H;置外部中斷0、1為電平觸發(fā)0035H75 A8 85 MOV IE,#85H;開CPU中斷、外部中斷0、1中斷0038H75 90 F3LOOP:MOV P1,#0F3H;A道綠燈亮,B道紅燈亮003BH79 58 MOV R1,#88;44s延時的循環(huán)次數(shù)003DH12
36、 03 50 AP1:LCALL DELAY;調(diào)用0.5s延時子程序0040HD9 FB DJNZ R1,AP1;44s不到,繼續(xù)循環(huán)0042H79 06 MOV R1,#6;3s延時的循環(huán)次數(shù)0044HB2 92 AP2:CPL P1.2;A道綠燈閃爍0046H12 03 50 LCALL DELAY主程序:0049HD9 F9 DJNZ R1,AP2;3s未到,繼續(xù)循環(huán)004BH75 90 F5 MOV P1,#0F5H;A道黃燈亮,B道紅燈亮004EH79 06 MOV R1,#60050H12 03 50 AP3:LCALL DELAY0053HD9 FB DJNZ R1,AP3;3s
37、未到,繼續(xù)循環(huán)0055H75 90 DE MOV P1,#0DEH;A道紅燈亮,B道綠燈亮0058H79 30 MOV R1,#48005AH12 03 50 BP1:LCALL DELAY005DHD9 FB DJNZ R1,BP1;24s未到,繼續(xù)循環(huán)005FH79 06 MOV R1,#60061HB2 95 BP2:CPL P1.5;B道綠燈閃爍0063H12 03 50 LCALL DELAY0066HD9 F9 DJNZ R1,BP2;3s未到,繼續(xù)循環(huán)0068H75 90 EE MOV P1,#0EEH;A道紅燈亮,B道黃燈亮006BH79 06 MOV R1,#6006DH12
38、 03 50 BP3:LCALL DELAY0070HD9 FB DJNZ R1,BP3;3s未到,繼續(xù)循環(huán)0072H80 C4 SJMP LOOP;循環(huán)主程序: ORG 0200H0200HC0 90 INT0:PUSH P1;保護P1口數(shù)據(jù)0202H75 90 F6 MOV P1,#0F6H;A道紅燈亮,B道紅燈亮0205H7A 1E MOV R2,#30;15s延時的循環(huán)次數(shù)0207H12 03 50DELAY0:LCALL DELAY020AHDA FB DJNZ R2,DELAY0;15s未到,繼續(xù)循環(huán)020CHD0 90 POP P1;恢復(fù)P1口數(shù)據(jù)020EH32 RETI;返回主
39、程序外部中斷0中斷服務(wù)程序:地址機器碼程序注釋 ORG 0300H0300HC2 AF INT1:CLR EA;關(guān)中斷0302HC0 90 PUSH P1;保護現(xiàn)場0304HC0 04 PUSH 04H0306HC0 05 PUSH 05H0308HC0 06 PUSH 06H030AHD2 AF SETB EA;開中斷030CH30 B0 05 JNB P3.0,AP0;A道無車,轉(zhuǎn)向判斷B道030FH75 90 F3 MOV P1,#0F3H;A道綠燈亮,B道紅燈亮0312H80 06 SJMP DEL1;轉(zhuǎn)向15s延時程序0314H30 B1 0A AP0:JNB P3.1,EXIT;B道無車,退出中斷0317H75 90 DE MOV P1,#0DEH;A道紅燈亮,B道綠燈亮031AH7B 1E DEL1:MOV R3,#30;15s
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抖音直播年終總結(jié)匯報
- 創(chuàng)新工程實踐活動總結(jié)
- 緩解分離焦慮培訓(xùn)課件
- 高中物理第十二章機械波3波長頻率和波速課件新人教版選修3-
- 山西省運城市平陸縣多校2024-2025學(xué)年二年級上學(xué)期期中數(shù)學(xué)試題
- 河南省鄧州市春雨國文學(xué)校2024-2025學(xué)年高三上學(xué)期10月月考英語試卷(含答案)
- T-XMSSAL 0104-2024 供廈食品 可生食雞蛋
- 期中摸底測試(1-4單元)(試題)-2024-2025學(xué)年三年級上冊數(shù)學(xué)人教版
- 會計師事務(wù)所的組織形式
- 投訴管理與投訴處理
- 小學(xué)三年級數(shù)學(xué)口算 3位乘或除1位第1-10篇
- 介紹南昌八一廣場的英語作文
- 【歷史】七年級上冊期中復(fù)習(xí)(1-15課)(復(fù)習(xí)課件) 2024-2025學(xué)年七年級歷史上冊(統(tǒng)編版2024)
- 2024年河北廊坊開發(fā)區(qū)管理委員會聘用制人員招聘40人歷年高頻500題難、易錯點模擬試題附帶答案詳解
- Unit1 Making friends Part C Make a mind map of making friends(教案)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- iso220002024食品安全管理體系標(biāo)準(zhǔn)
- 2024小學(xué)數(shù)學(xué)義務(wù)教育新課程標(biāo)準(zhǔn)(2022版)必考題庫附含答案
- GB/T 5069-2024鎂鋁系耐火材料化學(xué)分析方法
- 供應(yīng)鏈中的供應(yīng)鏈合規(guī)性考核試卷
- 2022年北京海淀區(qū)初三(上)期中考化學(xué)試題及答案
- 生物質(zhì)氣化燃?xì)庹羝?lián)合循環(huán)發(fā)電工程可行性方案研究報告
評論
0/150
提交評論