




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第5章章 中斷系統(tǒng)中斷系統(tǒng)5.1中斷的概念中斷的概念5.2MCS-51單片機(jī)的中斷流程單片機(jī)的中斷流程5.3MCS-51的中斷響應(yīng)條件和中斷處理的中斷響應(yīng)條件和中斷處理5.4中斷程序編程舉例中斷程序編程舉例5.1 中斷的概念中斷的概念 當(dāng)當(dāng)CPU正在處理某事件的時(shí)候,外部發(fā)正在處理某事件的時(shí)候,外部發(fā)生的某一事件請(qǐng)求生的某一事件請(qǐng)求CPU迅速去處理,于是迅速去處理,于是CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)處理完該事件后,再返回的事件。中斷服務(wù)處理完該事件后,再返回到原來(lái)被中止的地方繼續(xù)原來(lái)的工作,這樣到原來(lái)被中止的地方繼續(xù)原來(lái)的工作,這樣
2、的過程稱為的過程稱為中斷中斷。處理文檔電話鈴響暫停文檔文檔中作暫停記號(hào)電話交談?wù)页鰰和S浱?hào)位置繼續(xù)處理文檔執(zhí)行主程序(日常事務(wù)程序)中斷申請(qǐng)信號(hào)有效(中斷請(qǐng)求)暫停執(zhí)行主程序響應(yīng)中斷當(dāng)前PC及寄存器入棧(保護(hù)現(xiàn)場(chǎng))處理外設(shè)要求(中斷服務(wù))寄存器及PC出棧(恢復(fù)現(xiàn)場(chǎng)及中斷返回)繼續(xù)執(zhí)行主程序中斷源、中斷允許控制、中斷優(yōu)先級(jí)處理、中斷源、中斷允許控制、中斷優(yōu)先級(jí)處理、中斷響應(yīng)過程中斷響應(yīng)過程中斷服務(wù)程序中斷服務(wù)程序1中斷服務(wù)程序中斷服務(wù)程序 2中斷事件中斷事件1中斷事件中斷事件 25.2 MCS-51單片機(jī)的中斷流程單片機(jī)的中斷流程主程序主程序單片機(jī)中斷的應(yīng)用舉例單片機(jī)中斷的應(yīng)用舉例例例1 假設(shè)某
3、消防隊(duì)坐落在道路的一邊,正常情況下,假設(shè)某消防隊(duì)坐落在道路的一邊,正常情況下,交通紅綠燈以交通紅綠燈以30s的間隔輪流點(diǎn)亮,當(dāng)有消防任務(wù)的間隔輪流點(diǎn)亮,當(dāng)有消防任務(wù)時(shí),消防官兵只需要按一下設(shè)置在路邊的時(shí),消防官兵只需要按一下設(shè)置在路邊的消防緊急消防緊急按鈕按鈕,則道路交通燈就會(huì)變成紅燈并持續(xù),則道路交通燈就會(huì)變成紅燈并持續(xù)10s時(shí)間,時(shí)間,禁止其他車輛通行,使消防車可以順利通過,禁止其他車輛通行,使消防車可以順利通過, 10s后自動(dòng)返回紅綠燈輪流點(diǎn)亮的正常狀態(tài),用后自動(dòng)返回紅綠燈輪流點(diǎn)亮的正常狀態(tài),用51單片單片機(jī)的中斷可以實(shí)現(xiàn)上述功能。機(jī)的中斷可以實(shí)現(xiàn)上述功能。例例2 在工業(yè)應(yīng)用場(chǎng)合經(jīng)常利用
4、中斷電路來(lái)實(shí)現(xiàn)系統(tǒng)的在工業(yè)應(yīng)用場(chǎng)合經(jīng)常利用中斷電路來(lái)實(shí)現(xiàn)系統(tǒng)的故障顯示故障顯示。假設(shè)有四個(gè)終端設(shè)備和主控室相連接,。假設(shè)有四個(gè)終端設(shè)備和主控室相連接,主控室可以采用聲音報(bào)警或指示燈等方式表示終端主控室可以采用聲音報(bào)警或指示燈等方式表示終端設(shè)備是否正常工作。當(dāng)終端設(shè)備正常工作時(shí),主控設(shè)備是否正常工作。當(dāng)終端設(shè)備正常工作時(shí),主控室指示燈滅,當(dāng)終端設(shè)備工作異常時(shí),主控室對(duì)應(yīng)室指示燈滅,當(dāng)終端設(shè)備工作異常時(shí),主控室對(duì)應(yīng)指示燈亮,用單片機(jī)中斷電路可以實(shí)現(xiàn)。指示燈亮,用單片機(jī)中斷電路可以實(shí)現(xiàn)。 總結(jié):?jiǎn)纹瑱C(jī)的中斷能實(shí)現(xiàn)哪些功能?總結(jié):?jiǎn)纹瑱C(jī)的中斷能實(shí)現(xiàn)哪些功能?P82 解決快速CPU和慢速外設(shè)之間的矛盾,
5、使CPU和外設(shè)可以并行工作。 具備故障處理能力,提高機(jī)器自身的可靠性。 中斷方式消除了CPU在查詢方式中的等待現(xiàn)象,大大提高了CPU的工作效率。 及時(shí)采集、實(shí)時(shí)控制。將現(xiàn)場(chǎng)采集的數(shù)據(jù)通過中斷方式及時(shí)傳送給CPU,經(jīng)過處理后立即做出反應(yīng),實(shí)現(xiàn)現(xiàn)場(chǎng)控制。中斷和子程序調(diào)用的區(qū)別中斷和子程序調(diào)用的區(qū)別 P82中斷中斷子程序調(diào)用子程序調(diào)用中斷產(chǎn)生是隨機(jī)的中斷產(chǎn)生是隨機(jī)的程序事先安排的程序事先安排的可為外設(shè)和單片機(jī)內(nèi)部可為外設(shè)和單片機(jī)內(nèi)部事件服務(wù)事件服務(wù)為主程序服務(wù),與外設(shè)為主程序服務(wù),與外設(shè)無(wú)關(guān)無(wú)關(guān)主程序主程序 MOV A,3AH MOV A,3AH LCALL DELAYLCALL DELAY MOV
6、 B,A MOV B,A LCALL DELAYLCALL DELAY MOV A,B MOV A,BDELAYDELAY子程序子程序DELAY:MOV R0,30HDELAY:MOV R0,30H RETRET子程序調(diào)用子程序調(diào)用中斷服務(wù)程序中斷服務(wù)程序1中斷服務(wù)程序中斷服務(wù)程序 2中斷事件中斷事件1中斷事件中斷事件 2中斷流程中斷流程主程序主程序中斷和子程序調(diào)用的區(qū)別中斷和子程序調(diào)用的區(qū)別 P82中斷中斷子程序調(diào)用子程序調(diào)用中斷產(chǎn)生是隨機(jī)的中斷產(chǎn)生是隨機(jī)的程序事先安排的程序事先安排的可為外設(shè)和單片機(jī)內(nèi)部可為外設(shè)和單片機(jī)內(nèi)部事件服務(wù)事件服務(wù)為主程序服務(wù),與外設(shè)為主程序服務(wù),與外設(shè)無(wú)關(guān)無(wú)關(guān)中斷
7、程序和主程序的關(guān)系中斷程序和主程序的關(guān)系ORG 0000HLJMP MAINORG 0003H ;外部中斷;外部中斷0的中斷入口地址的中斷入口地址LJMP INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中斷;外部中斷0下降沿觸發(fā)方式下降沿觸發(fā)方式 SETB EX0 ;外部中斷;外部中斷0允許控制允許控制 SETB EA ;單片機(jī)中斷允許控制;單片機(jī)中斷允許控制LOOP: SETB P1.0 ;綠燈被點(diǎn)亮;綠燈被點(diǎn)亮 LCALL DELAY1S ;延時(shí)延時(shí)1s CLR P1.0 ;綠燈熄滅;綠燈熄滅 SETB P1.1 ;紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 LCALL DELAY1S
8、;延時(shí);延時(shí)1s CLR P1.1 ;紅燈熄滅;紅燈熄滅 LJMP LOOPINT_EX0:SETB P1.1 ;紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 CLR P1.0 ;綠燈熄滅;綠燈熄滅 LCALL DELAY1S ;延時(shí);延時(shí)1s RETI 中斷初始中斷初始化程序化程序51中斷系統(tǒng)的五個(gè)中斷源中斷系統(tǒng)的五個(gè)中斷源 P831、INT0外部中斷外部中斷0。 中斷請(qǐng)求通過中斷請(qǐng)求通過P3.2引腳輸入。引腳輸入。2、INT1外部中斷外部中斷1 中斷請(qǐng)求通過中斷請(qǐng)求通過P3.3引腳輸入。引腳輸入。3、T0定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0溢出中斷溢出中斷4、T1定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1溢出中斷溢出中斷5、TX/R
9、X串行口中斷。串行口中斷。P3口第二功能口第二功能 (P20)7 . 36 . 35 . 34 . 33 . 32 . 31 . 30 . 3PPPPPPPP口線口線讀選通讀選通外部外部寫選通寫選通外部外部計(jì)數(shù)輸入計(jì)數(shù)輸入計(jì)數(shù)器計(jì)數(shù)器定時(shí)器定時(shí)器計(jì)數(shù)輸入計(jì)數(shù)輸入計(jì)數(shù)器計(jì)數(shù)器定時(shí)器定時(shí)器申請(qǐng)申請(qǐng)外部中斷外部中斷申請(qǐng)申請(qǐng)外部中斷外部中斷串行數(shù)據(jù)發(fā)送串行數(shù)據(jù)發(fā)送串行數(shù)據(jù)接收串行數(shù)據(jù)接收功能含義功能含義RAMRAM1/0/10RDWRTTINTINTRXDTXD1010第二功能第二功能51中斷系統(tǒng)的五個(gè)中斷源中斷系統(tǒng)的五個(gè)中斷源 P831、INT0外部中斷外部中斷0。 中斷請(qǐng)求通過中斷請(qǐng)求通過P3.2
10、引腳輸入。引腳輸入。2、INT1外部中斷外部中斷1 中斷請(qǐng)求通過中斷請(qǐng)求通過P3.3引腳輸入。引腳輸入。3、T0定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0溢出中斷溢出中斷4、T1定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1溢出中斷溢出中斷5、TX/RX串行口中斷。串行口中斷。 當(dāng)串行口完成一幀數(shù)據(jù)的發(fā)送或接收時(shí),當(dāng)串行口完成一幀數(shù)據(jù)的發(fā)送或接收時(shí), 便自動(dòng)請(qǐng)求中斷。便自動(dòng)請(qǐng)求中斷。溢出時(shí)自動(dòng)請(qǐng)求中斷溢出時(shí)自動(dòng)請(qǐng)求中斷P3口第二功能口第二功能 (P20)7 . 36 . 35 . 34 . 33 . 32 . 31 . 30 . 3PPPPPPPP口線口線讀選通讀選通外部外部寫選通寫選通外部外部計(jì)數(shù)輸入計(jì)數(shù)輸入計(jì)數(shù)器計(jì)數(shù)器定
11、時(shí)器定時(shí)器計(jì)數(shù)輸入計(jì)數(shù)輸入計(jì)數(shù)器計(jì)數(shù)器定時(shí)器定時(shí)器申請(qǐng)申請(qǐng)外部中斷外部中斷申請(qǐng)申請(qǐng)外部中斷外部中斷串行數(shù)據(jù)發(fā)送串行數(shù)據(jù)發(fā)送串行數(shù)據(jù)接收串行數(shù)據(jù)接收功能含義功能含義RAMRAM1/0/10RDWRTTINTINTRXDTXD1010第二功能第二功能 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXRXESET0EX0EX1ET1EA自然優(yōu)先級(jí)自然優(yōu)先級(jí)矢量地址高級(jí)中斷請(qǐng)求高級(jí)中斷請(qǐng)求自然優(yōu)先級(jí)自然優(yōu)先級(jí)矢量地址低級(jí)中斷請(qǐng)求低級(jí)中斷請(qǐng)求PX0PT0PX1PT1PSIEIP中斷請(qǐng)求標(biāo)中斷請(qǐng)求標(biāo)志寄存器志寄存器 TCON、S
12、CON中斷允許控中斷允許控制寄存器制寄存器 IE中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)寄存器寄存器IPMCS-51單片機(jī)中斷系統(tǒng)結(jié)構(gòu)單片機(jī)中斷系統(tǒng)結(jié)構(gòu) P82interrupt enable priority config單片機(jī)單片機(jī)例例5.5 消防緊急按鈕源程序如下:消防緊急按鈕源程序如下:ORG 0000HLJMP MAINORG 0003H ;外部中斷;外部中斷0的中斷入口地址的中斷入口地址LJMP INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中斷;外部中斷0下降沿觸發(fā)方式下降沿觸發(fā)方式 SETB EX0 ;外部中斷;外部中斷0允許控制允許控制 SETB EA ;單片機(jī)中斷允許控制
13、;單片機(jī)中斷允許控制LOOP: SETB P1.0 ;綠燈被點(diǎn)亮;綠燈被點(diǎn)亮 LCALL DELAY1S ;延時(shí)延時(shí)1s CLR P1.0 ;綠燈熄滅;綠燈熄滅 SETB P1.1 ;紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 LCALL DELAY1S ;延時(shí);延時(shí)1s CLR P1.1 ;紅燈熄滅;紅燈熄滅 LJMP LOOPINT_EX0:SETB P1.1 ;紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 CLR P1.0 ;綠燈熄滅;綠燈熄滅 LCALL DELAY1S ;延時(shí);延時(shí)1s RETI 中斷初始中斷初始化程序化程序5.2.1 中斷請(qǐng)求標(biāo)志寄存器中斷請(qǐng)求標(biāo)志寄存器 想要接聽電話必須有兩個(gè)條件:電話鈴必須想要接聽電話必
14、須有兩個(gè)條件:電話鈴必須響;你聽到鈴聲響。響;你聽到鈴聲響。 對(duì)于對(duì)于51單片機(jī)同樣如此,光有中斷源是不夠單片機(jī)同樣如此,光有中斷源是不夠的,還必須能夠被接收到。的,還必須能夠被接收到。51單片機(jī)采用設(shè)置中單片機(jī)采用設(shè)置中斷請(qǐng)求標(biāo)志寄存器斷請(qǐng)求標(biāo)志寄存器TCON和串行口中斷請(qǐng)求標(biāo)志寄和串行口中斷請(qǐng)求標(biāo)志寄存器存器SCON的方式來(lái)記錄是否接收到中斷,接收到的方式來(lái)記錄是否接收到中斷,接收到則相應(yīng)位置則相應(yīng)位置1。TIRI SCON(98H)9FH 9EH 9DH 9CH 9BH 9AH 99H 98HTF1TF0IE1IT1IE0IT0 TCON(88H)8FH 8EH 8DH 8CH 8BH
15、8AH 89H 88HTF1TF0IE1IT1IE0IT0 TCON(88H)8FH 8EH 8DH 8CH 8BH 8AH 89H 88H1、TCON中斷請(qǐng)求標(biāo)志寄存器中斷請(qǐng)求標(biāo)志寄存器 TCON寄存器的寄存器的8位使用了位使用了6位,另外兩位位,另外兩位將在第六章使用。將在第六章使用。 TCON鎖存鎖存T0和和T1的溢出中斷標(biāo)志及外部的溢出中斷標(biāo)志及外部中斷中斷0和和1的中斷標(biāo)志等。的中斷標(biāo)志等。externalTrigger 各控制位的含義各控制位的含義TF1:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。溢出中斷請(qǐng)求標(biāo)志位。 T1TF0:定時(shí)器:定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0溢出中斷請(qǐng)
16、求標(biāo)志位。溢出中斷請(qǐng)求標(biāo)志位。 T0當(dāng)啟動(dòng)當(dāng)啟動(dòng)T1T1計(jì)數(shù)后,計(jì)數(shù)后,T1T1從初值開始加從初值開始加1 1計(jì)數(shù),計(jì)數(shù)器最計(jì)數(shù),計(jì)數(shù)器最高位高位產(chǎn)生溢出產(chǎn)生溢出時(shí),由硬件自動(dòng)使時(shí),由硬件自動(dòng)使TF1TF1置置1 1,向向CPUCPU發(fā)出中發(fā)出中斷請(qǐng)求。斷請(qǐng)求。當(dāng)當(dāng)CPUCPU響應(yīng)中斷響應(yīng)中斷時(shí),硬件將自動(dòng)對(duì)時(shí),硬件將自動(dòng)對(duì)TF1TF1清清0 0。IE1:外部中斷:外部中斷1的中斷請(qǐng)求標(biāo)志。的中斷請(qǐng)求標(biāo)志。 INT1(P3.3)IE0:外部中斷:外部中斷0的中斷請(qǐng)求標(biāo)志。的中斷請(qǐng)求標(biāo)志。 INT0(P3.2)以以IE1為例:為例:當(dāng)檢測(cè)到當(dāng)檢測(cè)到外部中斷引腳外部中斷引腳INT1(P3.3)上存
17、在上存在有效的有效的中斷中斷請(qǐng)求信號(hào)請(qǐng)求信號(hào)時(shí),由硬件自動(dòng)使時(shí),由硬件自動(dòng)使IE1置置1。當(dāng)當(dāng)CPU響應(yīng)中斷響應(yīng)中斷請(qǐng)求時(shí),由硬件自動(dòng)使請(qǐng)求時(shí),由硬件自動(dòng)使IE1清清0。 各控制位的含義各控制位的含義IE1:外部中斷:外部中斷1的中斷請(qǐng)求標(biāo)志。的中斷請(qǐng)求標(biāo)志。 INT1(P3.3)IE0:外部中斷:外部中斷0的中斷請(qǐng)求標(biāo)志。的中斷請(qǐng)求標(biāo)志。 INT0(P3.2)以以IE1為例:為例:當(dāng)檢測(cè)到當(dāng)檢測(cè)到外部中斷引腳外部中斷引腳INT1(P3.3)上存在上存在有效的有效的中斷中斷請(qǐng)求信號(hào)請(qǐng)求信號(hào)時(shí),由硬件自動(dòng)使時(shí),由硬件自動(dòng)使IE1置置1。當(dāng)當(dāng)CPU響應(yīng)中斷響應(yīng)中斷請(qǐng)求時(shí),由硬件自動(dòng)使請(qǐng)求時(shí),由硬件
18、自動(dòng)使IE1清清0。 IT1:外部中斷:外部中斷1的中斷觸發(fā)方式控制位。的中斷觸發(fā)方式控制位。IT0:外部中斷:外部中斷0的中斷觸發(fā)方式控制位。的中斷觸發(fā)方式控制位。以以IT1為例:為例: IT1=0時(shí),外部中斷時(shí),外部中斷1為低電平觸發(fā)方式。為低電平觸發(fā)方式。即若引腳即若引腳P3.3為為低電平低電平,則有中斷請(qǐng)求信號(hào)則有中斷請(qǐng)求信號(hào),則則IE1置置1; IT1=1時(shí),外部中斷時(shí),外部中斷1為下降沿觸發(fā)方式。為下降沿觸發(fā)方式。 若引腳若引腳P3.3的電平的電平一個(gè)機(jī)器周期高電平一個(gè)機(jī)器周期高電平,接著的接著的下一個(gè)機(jī)器周期為低電平下一個(gè)機(jī)器周期為低電平,則有中斷請(qǐng)求信號(hào)則有中斷請(qǐng)求信號(hào),則則I
19、E1置置1。注意:注意:IE1IE1、 IE0IE0由硬件自動(dòng)設(shè)置由硬件自動(dòng)設(shè)置 IT1IT1、 IT0IT0可由用戶設(shè)置??捎捎脩粼O(shè)置。提問:外部中斷提問:外部中斷0下降沿觸發(fā),怎么置位?下降沿觸發(fā),怎么置位? SETB IT0Trigger 2、串行口中斷請(qǐng)求標(biāo)志寄存器、串行口中斷請(qǐng)求標(biāo)志寄存器SCONTIRI SCON(98H)9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SCON為串行口控制寄存器,其低為串行口控制寄存器,其低2位鎖存位鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志串行口的接收中斷和發(fā)送中斷標(biāo)志RI和和TI。 SCON中中TI和和RI的格式如下所示的格式如下所示S
20、CON中控制位的含義中控制位的含義TI:串行口發(fā)送中斷請(qǐng)求標(biāo)志:串行口發(fā)送中斷請(qǐng)求標(biāo)志CPUCPU將一個(gè)數(shù)據(jù)寫入發(fā)送緩沖器將一個(gè)數(shù)據(jù)寫入發(fā)送緩沖器SBUFSBUF時(shí),就啟動(dòng)發(fā)送時(shí),就啟動(dòng)發(fā)送。每發(fā)送完一幀串行數(shù)據(jù)后每發(fā)送完一幀串行數(shù)據(jù)后,硬件置硬件置TI=1TI=1。但但CPUCPU響應(yīng)中斷時(shí),并不清除響應(yīng)中斷時(shí),并不清除TITI,必須在中斷服務(wù)程必須在中斷服務(wù)程序中由程序?qū)π蛑杏沙绦驅(qū)ITI清清0 0。RI:串行口接收中斷請(qǐng)求標(biāo)志:串行口接收中斷請(qǐng)求標(biāo)志在串行口允許接收時(shí),在串行口允許接收時(shí),每接收完一個(gè)串行幀每接收完一個(gè)串行幀,硬件置硬件置RI=1RI=1 。CPUCPU響應(yīng)中斷時(shí)不會(huì)清
21、除響應(yīng)中斷時(shí)不會(huì)清除RIRI,必須在中斷服務(wù)程序中必須在中斷服務(wù)程序中由程序?qū)τ沙绦驅(qū)IRI清清0 0。transmitreceive 總結(jié):MCS-51MCS-51的中斷標(biāo)志的中斷標(biāo)志 優(yōu)先級(jí)優(yōu)先級(jí)高高低低INT0INT1T0T1串口串口IE0TF0IE1TF1TIRI中斷源中斷源中斷標(biāo)志位中斷標(biāo)志位 每一個(gè)中斷源都有相應(yīng)的中斷標(biāo)志位;每一個(gè)中斷源都有相應(yīng)的中斷標(biāo)志位; 某一個(gè)中斷源申請(qǐng)中斷,相應(yīng)中斷標(biāo)志位置某一個(gè)中斷源申請(qǐng)中斷,相應(yīng)中斷標(biāo)志位置1。中斷矢量中斷矢量0003H000BH0013H001BH0023HP265.2.2 中斷允許控制寄存器中斷允許控制寄存器EAESET1EX1E
22、T0EX0 IE(A8H)AFH AEH ADH ACH ABH AAH A9H A8HEA中斷允許總控制位。中斷允許總控制位。 EA=0,屏蔽所有的中斷請(qǐng)求;,屏蔽所有的中斷請(qǐng)求; EA=1,CPU開放中斷。開放哪個(gè)中開放中斷。開放哪個(gè)中斷,還要取決于各中斷源的中斷允許控?cái)啵€要取決于各中斷源的中斷允許控制位的狀態(tài)。這就是所謂的兩級(jí)控制制位的狀態(tài)。這就是所謂的兩級(jí)控制。EnableES串行口中斷允許位串行口中斷允許位 ES=0,禁止串行口禁止串行口中斷;中斷; S:serial ES=1,允許串行口允許串行口中斷中斷ET1定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1的溢出中斷允許位的溢出中斷允許位 ET1
23、=0,禁止禁止T1中斷;中斷; T:timer ET1=1,允許允許T1中斷中斷ET0定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的溢出中斷允許位的溢出中斷允許位 ET0=0,禁止禁止T0中斷;中斷; ET0=1,允許允許T0中斷中斷EX1外部中斷外部中斷1的中斷允許位的中斷允許位 EX1=0,禁止外部中斷禁止外部中斷1中斷;中斷; X:external EX1=1,允許外部中斷允許外部中斷1中斷中斷EX0外部中斷外部中斷0的中斷允許位。的中斷允許位。 EX0=0,禁止外部中斷禁止外部中斷0中斷;中斷; EX0=1,允許外部中斷允許外部中斷0中斷中斷例例5.1:假設(shè)允許外部中斷:假設(shè)允許外部中斷0中斷,禁止
24、其他中斷。試中斷,禁止其他中斷。試設(shè)置設(shè)置IE的相應(yīng)值。的相應(yīng)值。解:解:對(duì)于對(duì)于51單片機(jī)采用兩級(jí)中斷控制,所以(單片機(jī)采用兩級(jí)中斷控制,所以(IE)=10000001B=81H,對(duì),對(duì)IE的設(shè)置可以用如下方式實(shí)現(xiàn)的設(shè)置可以用如下方式實(shí)現(xiàn)(a)用字節(jié)操作指令)用字節(jié)操作指令 MOV IE,#81H;(b)用位操作指令)用位操作指令 SETB EX0;外部中斷;外部中斷0允許中斷允許中斷 SETB EA ;CPU開中斷開中斷一般情況下,建議使用位操作方式設(shè)置一般情況下,建議使用位操作方式設(shè)置IE的值,這樣的值,這樣可以增加程序的可讀性??梢栽黾映绦虻目勺x性。 EAESET1EX1ET0EX0
25、IE(A8H)11000000PSPT1PX1PT0PX0 IP(B8H) BCH BBH BAH B9H B8H1、中斷優(yōu)先級(jí)寄存器、中斷優(yōu)先級(jí)寄存器IP的格式的格式PS 串行口中斷優(yōu)先級(jí)控制位串行口中斷優(yōu)先級(jí)控制位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í)器/計(jì)數(shù)器計(jì)數(shù)器T0中斷優(yōu)先級(jí)控制位中斷優(yōu)先級(jí)控制位PX0外部中斷外部中斷0中斷優(yōu)先級(jí)控制位中斷優(yōu)先級(jí)控制位若某控制位為若某控制位為1,則相應(yīng)的中斷源規(guī)定為高級(jí)中斷;,則相應(yīng)的中斷源規(guī)定為高級(jí)中斷; 反之,為反之,為0,則相應(yīng)的中斷源規(guī)定為低
26、級(jí)中斷。,則相應(yīng)的中斷源規(guī)定為低級(jí)中斷。5.2.3 中斷優(yōu)先級(jí)控制中斷優(yōu)先級(jí)控制priority 2、中斷優(yōu)先級(jí)排列順序、中斷優(yōu)先級(jí)排列順序 當(dāng)同時(shí)接收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求當(dāng)同時(shí)接收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求時(shí),響應(yīng)哪個(gè)中斷源則取決于內(nèi)部硬件查詢順時(shí),響應(yīng)哪個(gè)中斷源則取決于內(nèi)部硬件查詢順序。其優(yōu)先級(jí)(序。其優(yōu)先級(jí)(自然優(yōu)先級(jí)自然優(yōu)先級(jí))排列順序如下圖)排列順序如下圖所示:所示:中斷源中斷源 同級(jí)內(nèi)的中斷優(yōu)先級(jí)同級(jí)內(nèi)的中斷優(yōu)先級(jí)外部中斷外部中斷0中斷中斷 高級(jí)高級(jí)定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0溢出中斷溢出中斷外部中斷外部中斷1定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1溢出中斷溢出中斷串行口中斷串行口中
27、斷 低級(jí)低級(jí)例例5.45.4:?jiǎn)纹瑱C(jī)有:?jiǎn)纹瑱C(jī)有5 5個(gè)中斷源,但只能設(shè)置兩個(gè)中斷優(yōu)個(gè)中斷源,但只能設(shè)置兩個(gè)中斷優(yōu)先級(jí),因此在中斷優(yōu)先級(jí)安排上受到一定的限制,試先級(jí),因此在中斷優(yōu)先級(jí)安排上受到一定的限制,試問以下幾種中斷的優(yōu)先級(jí)排列(級(jí)別從高到低)是否問以下幾種中斷的優(yōu)先級(jí)排列(級(jí)別從高到低)是否可能?若可能,則應(yīng)如何設(shè)置中斷源的中斷級(jí)別?可能?若可能,則應(yīng)如何設(shè)置中斷源的中斷級(jí)別?(1 1) 定時(shí)器定時(shí)器T0T0,定時(shí)器,定時(shí)器T1T1,外中斷外中斷0 0,外中斷,外中斷1 1,串行口中斷,串行口中斷(2 2) 串行口中斷,串行口中斷,定時(shí)器定時(shí)器T0T0,外中斷,外中斷0 0,外中斷,外中
28、斷1 1,定時(shí)器,定時(shí)器T1T1解:(解:(1 1)只有采取編程設(shè)置)只有采取編程設(shè)置IPIP。 將定時(shí)器將定時(shí)器T0T0,定時(shí)器,定時(shí)器T1T1設(shè)置為高優(yōu)先級(jí),設(shè)置為高優(yōu)先級(jí),那么那么定時(shí)器定時(shí)器T0T0,定時(shí)器,定時(shí)器T1T1優(yōu)先級(jí)高于外中斷優(yōu)先級(jí)高于外中斷0 0,外中斷,外中斷1 1,串行口中斷串行口中斷; ; 同級(jí)中斷按照自然優(yōu)先級(jí)排列同級(jí)中斷按照自然優(yōu)先級(jí)排列,定時(shí)器,定時(shí)器T0T0的優(yōu)的優(yōu)先級(jí)要高于定時(shí)器先級(jí)要高于定時(shí)器T1T1;外中斷;外中斷0 0,外中斷,外中斷1 1,串行口中,串行口中斷也滿足自然優(yōu)先級(jí)排列順序。斷也滿足自然優(yōu)先級(jí)排列順序。 可以實(shí)現(xiàn)可以實(shí)現(xiàn)(IPIP)=00
29、001010B=00001010B(2 2)無(wú)法實(shí)現(xiàn))無(wú)法實(shí)現(xiàn)中斷源中斷源 同級(jí)內(nèi)的中斷優(yōu)先級(jí)同級(jí)內(nèi)的中斷優(yōu)先級(jí)外部中斷外部中斷0中斷中斷 高級(jí)高級(jí)定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0溢出中斷溢出中斷外部中斷外部中斷1定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1溢出中斷溢出中斷串行口中斷串行口中斷 低級(jí)低級(jí)PSPT1PX1PT0PX0 IP(B8H) 由于由于51單片機(jī)只有兩個(gè)優(yōu)先級(jí)設(shè)置,故只存在兩級(jí)中斷單片機(jī)只有兩個(gè)優(yōu)先級(jí)設(shè)置,故只存在兩級(jí)中斷嵌套結(jié)構(gòu),兩級(jí)中斷嵌套的中斷過程如圖所示。嵌套結(jié)構(gòu),兩級(jí)中斷嵌套的中斷過程如圖所示。第一級(jí)中斷第一級(jí)中斷必須為必須為IP中設(shè)置的低級(jí)中斷請(qǐng)求,第二級(jí)中斷為中設(shè)置的低級(jí)中斷
30、請(qǐng)求,第二級(jí)中斷為IP中設(shè)置的中設(shè)置的高級(jí)中斷請(qǐng)求高級(jí)中斷請(qǐng)求 。CPU執(zhí)行高級(jí)中斷服務(wù)程序執(zhí)行高級(jí)中斷服務(wù)程序響應(yīng)高級(jí)中斷請(qǐng)求響應(yīng)高級(jí)中斷請(qǐng)求返回低級(jí)中斷返回低級(jí)中斷程序程序高級(jí)高級(jí)中斷中斷請(qǐng)求請(qǐng)求響應(yīng)低級(jí)中斷請(qǐng)求響應(yīng)低級(jí)中斷請(qǐng)求返回主程序返回主程序低級(jí)中斷請(qǐng)求低級(jí)中斷請(qǐng)求CPU 執(zhí)行主程序執(zhí)行主程序CPU執(zhí)行低級(jí)中斷服務(wù)程序執(zhí)行低級(jí)中斷服務(wù)程序5.2.5 中斷嵌套中斷嵌套 P87問:假設(shè)問:假設(shè)5151單片機(jī)的單片機(jī)的5 5個(gè)中斷源經(jīng)過設(shè)置后的優(yōu)先級(jí)由個(gè)中斷源經(jīng)過設(shè)置后的優(yōu)先級(jí)由高到低的順序?yàn)椋焊叩降偷捻樞驗(yàn)椋?定時(shí)器定時(shí)器T0,定時(shí)器,定時(shí)器T1, 外中斷外中斷0,外中斷,外中斷1,串行
31、口中斷,串行口中斷 IP高級(jí)高級(jí) IP低級(jí)低級(jí)(1 1)如果定時(shí)器)如果定時(shí)器T0T0發(fā)出中斷請(qǐng)求后,單片機(jī)執(zhí)行定時(shí)發(fā)出中斷請(qǐng)求后,單片機(jī)執(zhí)行定時(shí)器器T0T0中斷程序過程中,外部中斷中斷程序過程中,外部中斷0 0發(fā)出中斷請(qǐng)求,這時(shí)發(fā)出中斷請(qǐng)求,這時(shí)會(huì)出現(xiàn)中斷嵌套嗎?會(huì)出現(xiàn)中斷嵌套嗎?(2 2)如果定時(shí)器如果定時(shí)器T1T1發(fā)出中斷請(qǐng)求后,單片機(jī)執(zhí)行定時(shí)器發(fā)出中斷請(qǐng)求后,單片機(jī)執(zhí)行定時(shí)器T1T1中斷程序過程中,定時(shí)器中斷程序過程中,定時(shí)器T0T0發(fā)出中斷請(qǐng)求,這時(shí)會(huì)出發(fā)出中斷請(qǐng)求,這時(shí)會(huì)出現(xiàn)中斷嵌套嗎?現(xiàn)中斷嵌套嗎?總結(jié):中斷嵌套必須是總結(jié):中斷嵌套必須是IPIP低級(jí)中斷內(nèi)嵌低級(jí)中斷內(nèi)嵌IPIP高
32、級(jí)中斷。高級(jí)中斷。 當(dāng)一個(gè)中斷被響應(yīng)后,所有與之同級(jí)或低級(jí)的中當(dāng)一個(gè)中斷被響應(yīng)后,所有與之同級(jí)或低級(jí)的中斷源的中斷請(qǐng)求都被禁止,不發(fā)生嵌套。斷源的中斷請(qǐng)求都被禁止,不發(fā)生嵌套。不會(huì)不會(huì)不會(huì)不會(huì)5.3 MCS-51的中斷響應(yīng)條件和中斷處理的中斷響應(yīng)條件和中斷處理 中斷響應(yīng)的條件中斷響應(yīng)的條件中斷處理過程中斷處理過程5.3.1 中斷響應(yīng)的條件中斷響應(yīng)的條件MCS-51MCS-51單片機(jī)響應(yīng)中斷條件有以下條件單片機(jī)響應(yīng)中斷條件有以下條件: 有中斷源發(fā)出中斷請(qǐng)求。有中斷源發(fā)出中斷請(qǐng)求。 中斷允許位中斷允許位EAEA1 1,即,即CPUCPU開放中斷。開放中斷。 申請(qǐng)中斷的中斷源的允許位為申請(qǐng)中斷的中斷
33、源的允許位為1 1,即對(duì)應(yīng)的中斷源,即對(duì)應(yīng)的中斷源開放中斷開放中斷 CPU CPU沒有響應(yīng)同級(jí)或更高級(jí)別的中斷請(qǐng)求。沒有響應(yīng)同級(jí)或更高級(jí)別的中斷請(qǐng)求。 當(dāng)前指令執(zhí)行完畢。當(dāng)前指令執(zhí)行完畢。 如果當(dāng)前正執(zhí)行的指令是返回指令(如果當(dāng)前正執(zhí)行的指令是返回指令(RETIRETI)或訪)或訪問問IPIP、IEIE寄存器的指令,則寄存器的指令,則CPUCPU在執(zhí)行完當(dāng)前指令后,在執(zhí)行完當(dāng)前指令后,至少至少再再執(zhí)行一條指令才會(huì)中斷。執(zhí)行一條指令才會(huì)中斷。中斷源發(fā)中斷請(qǐng)求中斷源發(fā)中斷請(qǐng)求中斷響應(yīng)條件中斷響應(yīng)條件是否滿足?是否滿足? 把把PC斷點(diǎn)地址壓入堆棧斷點(diǎn)地址壓入堆棧 相應(yīng)中斷源的中斷入口地址相應(yīng)中斷源的
34、中斷入口地址送入送入PC,轉(zhuǎn)向中斷服務(wù)程序,轉(zhuǎn)向中斷服務(wù)程序NY 由硬件由硬件自動(dòng)完成自動(dòng)完成5.3.2 中斷處理過程中斷處理過程圖圖 中斷源及其對(duì)應(yīng)的中斷入口地址中斷源及其對(duì)應(yīng)的中斷入口地址 P88 或或P26中斷源中斷源中斷入口地址中斷入口地址外部中斷外部中斷0(INT0)外部中斷外部中斷1(INT1)定時(shí)器定時(shí)器T0中斷中斷定時(shí)器定時(shí)器T1中斷中斷串行口中斷串行口中斷0023H001BH0013H0003H000BH 中斷服務(wù)程序存放在相應(yīng)的中斷中斷服務(wù)程序存放在相應(yīng)的中斷入口入口地址處。地址處。 每個(gè)中斷向量地址之間隔了每個(gè)中斷向量地址之間隔了8個(gè)單元,如個(gè)單元,如0003-000BH
35、,在如此少的空間中如何完成用戶中斷程序呢?很簡(jiǎn)單,在中在如此少的空間中如何完成用戶中斷程序呢?很簡(jiǎn)單,在中斷入口地址處安排一個(gè)斷入口地址處安排一個(gè)LJMP指令,就可以跳轉(zhuǎn)到中斷程序指令,就可以跳轉(zhuǎn)到中斷程序可以放下的地方。建議即使中斷服務(wù)程序小于可以放下的地方。建議即使中斷服務(wù)程序小于8字節(jié),也采字節(jié),也采用跳轉(zhuǎn)指令方式,以便養(yǎng)成規(guī)范的編程風(fēng)格。用跳轉(zhuǎn)指令方式,以便養(yǎng)成規(guī)范的編程風(fēng)格。8個(gè)字節(jié)個(gè)字節(jié)LJMP INT_EX0例例5.5 消防緊急按鈕源程序如下:消防緊急按鈕源程序如下:ORG 0000HLJMP MAINORG 0003H ;外部中斷;外部中斷0的中斷入口地址的中斷入口地址LJMP
36、 INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中斷;外部中斷0下降沿觸發(fā)方式下降沿觸發(fā)方式 SETB EX0 ;外部中斷;外部中斷0允許控制允許控制 SETB EA ;單片機(jī)中斷允許控制;單片機(jī)中斷允許控制LOOP: SETB P1.0 ;綠燈被點(diǎn)亮;綠燈被點(diǎn)亮 LCALL DELAY1S ;延時(shí)延時(shí)1s CLR P1.0 ;綠燈熄滅;綠燈熄滅 SETB P1.1 ;紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 LCALL DELAY1S ;延時(shí);延時(shí)1s CLR P1.1 ;紅燈熄滅;紅燈熄滅 LJMP LOOPINT_EX0:SETB P1.1 ;紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 CLR P1.0
37、 ;綠燈熄滅;綠燈熄滅 LCALL DELAY1S ;延時(shí);延時(shí)1s RETI END中斷初始中斷初始化程序化程序 關(guān)中斷關(guān)中斷保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)中斷服務(wù)中斷服務(wù) 開中斷開中斷 關(guān)中斷關(guān)中斷恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) 開中斷開中斷中斷返回中斷返回?cái)帱c(diǎn)地址由堆棧彈入斷點(diǎn)地址由堆棧彈入PC保護(hù)現(xiàn)場(chǎng)和保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的恢復(fù)現(xiàn)場(chǎng)的過程中不允過程中不允許中斷,以許中斷,以免現(xiàn)場(chǎng)遭到免現(xiàn)場(chǎng)遭到破壞。破壞。保護(hù)和恢復(fù)現(xiàn)場(chǎng)之后保護(hù)和恢復(fù)現(xiàn)場(chǎng)之后的開中斷是為了允許的開中斷是為了允許有更高級(jí)中斷打斷此有更高級(jí)中斷打斷此中斷服務(wù)程序。中斷服務(wù)程序。 硬件自硬件自動(dòng)完成動(dòng)完成中斷服務(wù)程序PUSH ACC PUSH PSWPOP
38、 PSWPOP ACCCLR EASETB EARETI例例5.5 5.5 正常情況下,非交叉路口的交通紅綠燈以正常情況下,非交叉路口的交通紅綠燈以1s1s的的間隔輪流點(diǎn)亮,當(dāng)有消防任務(wù)時(shí),消防官兵只需要按一間隔輪流點(diǎn)亮,當(dāng)有消防任務(wù)時(shí),消防官兵只需要按一下設(shè)置在路邊的消防緊急按鈕,則道路交通燈就會(huì)變成下設(shè)置在路邊的消防緊急按鈕,則道路交通燈就會(huì)變成紅燈并持續(xù)紅燈并持續(xù)1s1s時(shí)間,禁止其他車輛通行,使消防車可以時(shí)間,禁止其他車輛通行,使消防車可以順利通過,順利通過,1s1s后自動(dòng)返回按緊急按鈕前燈的狀態(tài),繼續(xù)后自動(dòng)返回按緊急按鈕前燈的狀態(tài),繼續(xù)紅綠燈輪流點(diǎn)亮的正常狀態(tài),試用紅綠燈輪流點(diǎn)亮的正
39、常狀態(tài),試用5151單片機(jī)來(lái)模擬實(shí)現(xiàn)單片機(jī)來(lái)模擬實(shí)現(xiàn)上述功能。上述功能。P91P91分析:分析:1 1、用、用紅色紅色和和綠色綠色發(fā)光二極管模擬道路交通燈,并與單片機(jī)的發(fā)光二極管模擬道路交通燈,并與單片機(jī)的I/OI/O口相連,可通過設(shè)置口相連,可通過設(shè)置I/OI/O口的電平來(lái)點(diǎn)亮發(fā)光二極管??诘碾娖絹?lái)點(diǎn)亮發(fā)光二極管。2 2、用按鈕開關(guān)或閘刀開關(guān)模擬消防緊急按鈕,可將開關(guān)與單片、用按鈕開關(guān)或閘刀開關(guān)模擬消防緊急按鈕,可將開關(guān)與單片機(jī)的外部中斷機(jī)的外部中斷0 0的引腳相連,引入外部中斷信號(hào)。的引腳相連,引入外部中斷信號(hào)。3 3、沒有中斷發(fā)生時(shí),紅色和綠色發(fā)光二極管輪流被點(diǎn)亮,均持、沒有中斷發(fā)生時(shí),
40、紅色和綠色發(fā)光二極管輪流被點(diǎn)亮,均持續(xù)續(xù)1S1S(通過調(diào)用延時(shí)子程序?qū)崿F(xiàn))(通過調(diào)用延時(shí)子程序?qū)崿F(xiàn))主程序。主程序。4 4、當(dāng)中斷發(fā)生時(shí),將紅色發(fā)光二極管點(diǎn)亮,并持續(xù)、當(dāng)中斷發(fā)生時(shí),將紅色發(fā)光二極管點(diǎn)亮,并持續(xù)1 1秒秒 中斷服務(wù)程序。中斷服務(wù)程序。5.4 中斷程序編程舉例中斷程序編程舉例解:將解:將P1口的口的P1.1P1.0分別接紅和綠色發(fā)光二極管分別接紅和綠色發(fā)光二極管D1D0模擬道路交通燈,模擬道路交通燈,P3.2(INT0)引腳接一開關(guān)以模擬消防緊)引腳接一開關(guān)以模擬消防緊急按鈕。急按鈕。 圖圖5-10 AT89C51單片機(jī)模擬交通燈電路原理圖單片機(jī)模擬交通燈電路原理圖 P92P3.
41、2中斷初始化中斷初始化程序怎么寫?程序怎么寫?書書P20例例5.5 源程序如下:源程序如下:ORG 0000HLJMP MAINORG 0003H ;外部中斷;外部中斷0的中斷入口地址的中斷入口地址LJMP INT_EX0ORG 0030HMAIN: SETB IT0 ;外部中斷;外部中斷0下降沿觸發(fā)方式下降沿觸發(fā)方式 SETB EX0 ;外部中斷;外部中斷0允許控制允許控制 SETB EA ;單片機(jī)中斷允許控制;單片機(jī)中斷允許控制LOOP: SETB P1.0 ;綠燈被點(diǎn)亮;綠燈被點(diǎn)亮 LCALL DELAY1S ;延時(shí)延時(shí)1s CLR P1.0 ;綠燈熄滅;綠燈熄滅 SETB P1.1 ;
42、紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 LCALL DELAY1S ;延時(shí);延時(shí)1s CLR P1.1 ;紅燈熄滅;紅燈熄滅 LJMP LOOP中斷初始中斷初始化程序化程序【100 ms延時(shí)子程序如下】延時(shí)子程序如下】DELAY: MOV R6, #0C8H ; 外循環(huán)外循環(huán) 200 次次 LOOP1: MOV R7, #0F8H ; 內(nèi)循環(huán)內(nèi)循環(huán) 248 次次 NOP ; 時(shí)間補(bǔ)償時(shí)間補(bǔ)償 LOOP2: DJNZ R7, LOOP2 ; 延時(shí)延時(shí)2 s248=496 s DJNZ R6, LOOP1 ; 延時(shí)延時(shí) 500 s200=100 ms RET【延時(shí)【延時(shí)1s調(diào)用調(diào)用100ms延時(shí)子程序如下】延時(shí)子
43、程序如下】;1s是是100ms的的10倍,即連續(xù)執(zhí)行倍,即連續(xù)執(zhí)行100ms延時(shí)子程序延時(shí)子程序10次即可次即可 DELAY1S: MOV R0, #10 LOOP0: LCALL DELAY DJNZ R0, LOOP0 RET INT_EX0: PUSH P1 PUSH 00H PUSH 06H PUSH 07H SETB P1.1 ;紅燈被點(diǎn)亮;紅燈被點(diǎn)亮 CLR P1.0 ;綠燈熄滅;綠燈熄滅 LCALL DELAY1S ;延時(shí);延時(shí)1s POP 07H POP 06H POP 00H POP P1 RETI END 需要保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的原因:需要保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的原因: 需要保
44、護(hù)在主程序和中斷程序中都會(huì)使用的寄存器、并口等。需要保護(hù)在主程序和中斷程序中都會(huì)使用的寄存器、并口等。 因?yàn)橐驗(yàn)镽0、R6、R7在中斷服務(wù)程序中最后都減到在中斷服務(wù)程序中最后都減到0了,當(dāng)中斷返回時(shí),了,當(dāng)中斷返回時(shí),會(huì)接著中斷前的延時(shí)子程序繼續(xù)執(zhí)行,此時(shí)的會(huì)接著中斷前的延時(shí)子程序繼續(xù)執(zhí)行,此時(shí)的R0、R6、R7之一很有可能之一很有可能從從0開始減,得開始減,得0FFH,而不是中斷前的值,延時(shí)就長(zhǎng)了。,而不是中斷前的值,延時(shí)就長(zhǎng)了。 保護(hù)保護(hù)P1口的狀態(tài),是為了中斷返回后繼續(xù)中斷前燈的顯示狀態(tài),即若口的狀態(tài),是為了中斷返回后繼續(xù)中斷前燈的顯示狀態(tài),即若中斷前綠燈亮了中斷前綠燈亮了0.5秒,中斷
45、后綠燈還需要亮秒,中斷后綠燈還需要亮0.5秒,而不是紅燈亮秒,而不是紅燈亮0.5秒。秒。保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng),00H、06H、07H分別是分別是R0、R6、R7的地址,的地址,PUSH、POP操作數(shù)只能是直接地址操作數(shù)只能是直接地址P43恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)例例5.6 5.6 在工業(yè)應(yīng)用場(chǎng)合經(jīng)常利用中斷電路來(lái)實(shí)現(xiàn)系在工業(yè)應(yīng)用場(chǎng)合經(jīng)常利用中斷電路來(lái)實(shí)現(xiàn)系統(tǒng)的統(tǒng)的故障顯示故障顯示,假設(shè)有四個(gè)終端設(shè)備和主控室相連,假設(shè)有四個(gè)終端設(shè)備和主控室相連接,主控室可以采用指示燈方式表示終端設(shè)備是否接,主控室可以采用指示燈方式表示終端設(shè)備是否正常工作。當(dāng)終端設(shè)備正常工作時(shí),主控室指示燈正常工作。當(dāng)終端設(shè)備正常工作時(shí),主
46、控室指示燈滅,當(dāng)終端設(shè)備工作異常時(shí),主控室指示燈亮,試滅,當(dāng)終端設(shè)備工作異常時(shí),主控室指示燈亮,試用單片機(jī)中斷電路來(lái)實(shí)現(xiàn)。用單片機(jī)中斷電路來(lái)實(shí)現(xiàn)。分析:分析:1 1、用、用4 4個(gè)發(fā)光二極管模擬個(gè)發(fā)光二極管模擬4 4個(gè)信號(hào)燈。個(gè)信號(hào)燈。 2 2、單片機(jī)只有兩個(gè)外部中斷源,但是現(xiàn)在有、單片機(jī)只有兩個(gè)外部中斷源,但是現(xiàn)在有四個(gè)外部中斷請(qǐng)求,那么必然存在中斷擴(kuò)展,單片四個(gè)外部中斷請(qǐng)求,那么必然存在中斷擴(kuò)展,單片機(jī)如何實(shí)現(xiàn)外部中斷擴(kuò)展呢?機(jī)如何實(shí)現(xiàn)外部中斷擴(kuò)展呢?外部中斷源的擴(kuò)展外部中斷源的擴(kuò)展 1將定時(shí)器將定時(shí)器T0,T1中斷源中斷源作外部中斷源作外部中斷源 2 2查詢方式擴(kuò)展外部中斷源查詢方式擴(kuò)展
47、外部中斷源 把多個(gè)中斷源通過硬件(或非門)引入外部把多個(gè)中斷源通過硬件(或非門)引入外部中斷源輸入端(中斷源輸入端(INT0INT0或或INT1INT1),同時(shí)將中斷源連),同時(shí)將中斷源連接到某接到某I/OI/O接口。這樣,每個(gè)中斷源都可以引起接口。這樣,每個(gè)中斷源都可以引起中斷,在中斷服務(wù)程序中通過軟件查詢中斷,在中斷服務(wù)程序中通過軟件查詢I/OI/O口,口,便可以確定哪一個(gè)是正在申請(qǐng)的中斷源。便可以確定哪一個(gè)是正在申請(qǐng)的中斷源。. .用中斷控制芯片(如用中斷控制芯片(如)進(jìn)行擴(kuò)展)進(jìn)行擴(kuò)展 專用中斷控制器專用中斷控制器82598259可以直接擴(kuò)展可以直接擴(kuò)展8 8個(gè)中斷源,個(gè)中斷源,經(jīng)級(jí)聯(lián)
48、后,最多可以擴(kuò)展經(jīng)級(jí)聯(lián)后,最多可以擴(kuò)展6464個(gè)中斷源。個(gè)中斷源??删幊讨袛喙芾硇酒删幊讨袛喙芾硇酒?259A 8259A的內(nèi)部結(jié)構(gòu)的內(nèi)部結(jié)構(gòu)與外設(shè)相與外設(shè)相連連與與CPU相連相連IR0圖圖5-11 利用中斷電路來(lái)實(shí)現(xiàn)系統(tǒng)的故障顯示電路原理圖利用中斷電路來(lái)實(shí)現(xiàn)系統(tǒng)的故障顯示電路原理圖 P3.2或非或非中斷初始化中斷初始化程序怎么寫?程序怎么寫?1000101000本例用查詢方式擴(kuò)展外部中斷源本例用查詢方式擴(kuò)展外部中斷源表示外設(shè)有故障表示外設(shè)有故障對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)4對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)3對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)2對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)1對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)4對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)3對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)2對(duì)應(yīng)外設(shè)對(duì)應(yīng)外設(shè)1 O
49、RG 0000H LJMP MAIN ORG 0003H LJMP INT_EX0 ORG 0030HMAIN: CLR IT0 ;外部中斷;外部中斷0低電平觸發(fā)方式低電平觸發(fā)方式 SETB EX0 ;外部中斷;外部中斷0允許控制允許控制 SETB EA ;單片機(jī)中斷允許控制;單片機(jī)中斷允許控制 SJMP $ ;等待中斷到來(lái);等待中斷到來(lái)INT_EX0: JNB P1.0,NEXT1 SETB P1.4 LJMP INT_EX0_ENDNEXT1: JNB P1.1,NEXT2 SETB P1.5 LJMP INT_EX0_ENDNEXT2: JNB P1.2,NEXT3 SETB P1.6
50、LJMP INT_EX0_ENDNEXT3: JNB P1.3, INT_EX0_END SETB P1.7INT_EX0_END: RETI END例例5.6 源程序:源程序:中斷服務(wù)程序中中斷服務(wù)程序中對(duì)對(duì)4個(gè)設(shè)備的中個(gè)設(shè)備的中斷請(qǐng)求信號(hào)依次斷請(qǐng)求信號(hào)依次查詢并處理查詢并處理任一設(shè)備有故障任一設(shè)備有故障都會(huì)觸發(fā)中斷都會(huì)觸發(fā)中斷 ORG 0000H LJMP MAIN ORG 0003H LJMP INT_EX0 ORG 0030HMAIN: CLR IT0 ;外部中斷;外部中斷0低電平觸發(fā)方式低電平觸發(fā)方式 SETB EX0 ;外部中斷;外部中斷0允許控制允許控制 SETB EA ;單片機(jī)中斷允許控制;單片機(jī)中斷允許控制 SJMP $ ;等待中斷到來(lái);等待中斷到來(lái)INT_EX0: JNB P1.0,NEXT1 SETB P1.4 LJMP INT_EX0_ENDNEXT1: JNB P1.1,NEXT2 SETB P1
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋合同轉(zhuǎn)讓的協(xié)議書
- 私人財(cái)產(chǎn)抵押借款合同
- 二零二五房屋估價(jià)委托書
- 二零二五版?zhèn)鶛?quán)擔(dān)保書范文
- 勞務(wù)分包安全生產(chǎn)責(zé)任協(xié)議書二零二五年
- 二零二五版顧問協(xié)議書范例1500字
- 書畫拍賣合同樣本
- ktv接手轉(zhuǎn)讓合同樣本
- 代付費(fèi)用合同標(biāo)準(zhǔn)文本
- 企業(yè)帶人租車合同樣本
- deepseek的使用技巧與實(shí)際應(yīng)用培訓(xùn)課件
- 頸部斷面與影像解剖ppt課件精選
- Q∕SY 05175-2019 原油管道運(yùn)行與控制原則
- 汽車收音機(jī)天線的參數(shù)
- 供配電系統(tǒng)畢業(yè)設(shè)計(jì)
- 《藝術(shù)學(xué)概論考研》課件藝概緒論
- 工廠致全體員工一份感謝信
- 怎樣做一名合格的高校中層領(lǐng)導(dǎo)干部( 54頁(yè))
- 中職一年級(jí)數(shù)學(xué)課外活動(dòng)趣味數(shù)學(xué)基礎(chǔ)知識(shí)競(jìng)賽課件(必答+選答+風(fēng)險(xiǎn)題含倒計(jì)時(shí)PPT)
- 工藝評(píng)審記錄表
- 新加坡觀賞魚國(guó)際貿(mào)易發(fā)展模式及對(duì)我國(guó)的啟示
評(píng)論
0/150
提交評(píng)論