版權(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) 中斷的基本概念 中斷系統(tǒng)是單片機(jī)的重要組成部分。檢測(cè)、實(shí)時(shí)控制、故障自動(dòng)處理往往采用中斷系統(tǒng),單片機(jī)與外圍設(shè)備間傳送數(shù)據(jù)及實(shí)現(xiàn)人機(jī)聯(lián)系也常采用中斷方式。中斷系統(tǒng)的應(yīng)用使計(jì)算機(jī)的功能更強(qiáng),效率更高,使用更加靈活方便。 一、什么是中斷一、什么是中斷 由于某個(gè)原因,使當(dāng)前正在進(jìn)行的工作暫時(shí)停止(打斷一下),而去執(zhí)行和本工作無(wú)關(guān)或者是有關(guān)的另外一個(gè)工作,在處理完這些工作后,還能回到原來(lái)的地方繼續(xù)以前的工作。 如果將這個(gè)情況推廣到計(jì)算機(jī)中,就是計(jì)算機(jī)的中斷技術(shù)。在計(jì)算機(jī)中,中斷就是在執(zhí)行某一段程序的過(guò)程中,由于某種原因,要求CPU盡快中止原程序的執(zhí)行,而去執(zhí)行相應(yīng)的處理程
2、序,待處理結(jié)束后,再回來(lái)執(zhí)行被中止的程序。二、中斷的基本術(shù)語(yǔ)二、中斷的基本術(shù)語(yǔ) 1)、主程序:就是計(jì)算機(jī)中斷前所執(zhí)行的程序 2)、中斷源:引起中斷的原因、事件,就是能夠發(fā)出中斷申請(qǐng)的來(lái)源。3)、中斷服務(wù)程序:中斷后所執(zhí)行的程序;4)、斷點(diǎn);主程序被斷開(kāi)的位置(或地址)。5)、中斷請(qǐng)求信號(hào):光有中斷源還不行,計(jì)算機(jī)是如何知道中斷源有要求呢?這就需要中斷源要有一個(gè)要求服務(wù)的請(qǐng)求信號(hào),稱為中斷請(qǐng)求信號(hào)。6)、中斷的優(yōu)先級(jí) 凡事都可能有輕重緩急,一般是盡量先做重要或很急的事情。引起CPU中止當(dāng)前正在執(zhí)行的程序的事情有可能也不止一個(gè),每個(gè)中斷源都有自己的“份量”,有的請(qǐng)求比較迫切,CPU必須盡快響應(yīng),而
3、有的則可以等一會(huì),這里也有優(yōu)先級(jí)的問(wèn)題。如果在執(zhí)行級(jí)別比較低的中斷服務(wù)程序的時(shí)候,忽然來(lái)了一個(gè)高級(jí)中斷,計(jì)算機(jī)也會(huì)停止執(zhí)行低級(jí)的中斷服務(wù)程序,去為這個(gè)高級(jí)的中斷服務(wù)。這就是所謂的“中斷嵌套中斷嵌套”,類(lèi)似于子程序嵌套。 中斷源中斷源 中斷申請(qǐng)中斷申請(qǐng)開(kāi)放中斷開(kāi)放中斷保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng)中斷服務(wù)中斷服務(wù)恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng)中斷返回中斷返回中斷涉及的幾個(gè)環(huán)節(jié)(提出中斷申請(qǐng)的(提出中斷申請(qǐng)的甲方甲方)(甲方(甲方發(fā)出信號(hào)發(fā)出信號(hào)提出申請(qǐng))提出申請(qǐng))(乙方乙方同意同意傳送)傳送)(安排好當(dāng)前的工作安排好當(dāng)前的工作)(乙方乙方按預(yù)案按預(yù)案響應(yīng)響應(yīng))(預(yù)案預(yù)案完事后,回去完事后,回去)(乙方乙方繼續(xù)繼續(xù)做打斷前的
4、工作)做打斷前的工作)三、中斷服務(wù)程序和子程序的區(qū)別三、中斷服務(wù)程序和子程序的區(qū)別 中斷大概的處理過(guò)程: 1、保護(hù)斷點(diǎn):當(dāng)有事件產(chǎn)生,如果計(jì)算機(jī)要對(duì)它進(jìn)行處理,在處理之前首先要保存下一條將要執(zhí)行的指令的PC地址,也就是斷點(diǎn)地址,并將這個(gè)地址送入堆棧。 2、根據(jù)事件的不同執(zhí)行相應(yīng)的中斷服務(wù)程序。 3、中斷返回:執(zhí)行完中斷指令后,就返回到主程序的斷點(diǎn)處,繼續(xù)執(zhí)行。 和調(diào)用子程序相比,它們都要進(jìn)行斷點(diǎn)保護(hù)。響應(yīng)中斷或是執(zhí)行子程序之前都會(huì)把斷點(diǎn)壓入堆棧中,返回的時(shí)候?qū)帱c(diǎn)地址返回給程序計(jì)數(shù)器PC。 中斷類(lèi)似于程序設(shè)計(jì)中的調(diào)用子程序,但有所區(qū)別。 中斷產(chǎn)生是隨機(jī)的,而調(diào)用子程序是事先預(yù)定好的。而調(diào)用子程
5、序的情況就不一樣了,子程序是程序中由用戶事先安排好的,何時(shí)調(diào)用、調(diào)用幾次用戶自己就能決定。 中斷服務(wù)程序?yàn)橥庠O(shè)或各種事件服務(wù),與正在執(zhí)行的程序可能沒(méi)有任何關(guān)系。而子程序是為主程序服務(wù),有可能和外設(shè)沒(méi)有關(guān)系。 中斷子程序還要額外考慮在子程序中是否開(kāi)(或關(guān))中斷,并力求在保護(hù)和恢復(fù)現(xiàn)場(chǎng)動(dòng)作期間不被高級(jí)中斷申請(qǐng)打斷。 返回動(dòng)作不同。RET與RETI有區(qū)別,后者除PC出棧外,還要對(duì)中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器復(fù)位,即恢復(fù)中斷優(yōu)先鏈。四、中斷技術(shù)的優(yōu)勢(shì)四、中斷技術(shù)的優(yōu)勢(shì) 計(jì)算機(jī)采用中斷技術(shù),大大提高了它的工作效率和處理問(wèn)題的靈活性。主要表現(xiàn)在四個(gè)方面:1、解決了快速的CPU與慢速的外設(shè)之間的矛盾,使CPU與外設(shè)
6、并行、分時(shí)工作。2、使計(jì)算機(jī)能夠及時(shí)處理實(shí)時(shí)控制中的許多隨機(jī)信息。3、使計(jì)算機(jī)具備處理故障的能力。4、使計(jì)算機(jī)具備從低功耗狀態(tài)喚醒的能力。例S4 任務(wù)4:信號(hào)燈的控制4一、要求一、要求在圖1-3給出的任務(wù)1的電路的基礎(chǔ)上,擴(kuò)展如圖5-1所示的相應(yīng)外部電路,將并A端接到單片機(jī)的P3.2引腳上。編寫(xiě)程序,使程序在運(yùn)行時(shí),每當(dāng)按一次圖5-1中的按鍵K,P1口的發(fā)光二極管就會(huì)亮、滅切換一次。圖圖5-1 任務(wù)任務(wù)4電路圖電路圖二、任務(wù)分析與實(shí)現(xiàn)二、任務(wù)分析與實(shí)現(xiàn) 在前面的任務(wù)中,我們只是讓單片機(jī)執(zhí)行一定的指令或程序來(lái)實(shí)現(xiàn)相應(yīng)的功能。在程序的運(yùn)行過(guò)程中,我們?nèi)瞬](méi)有進(jìn)行干預(yù),沒(méi)有做任何動(dòng)作。而這次任務(wù)不一
7、樣,發(fā)光二極管的亮、滅變換取決于我們?cè)诔绦蜻\(yùn)行過(guò)程中的一個(gè)按鍵的動(dòng)作。按一下鍵將會(huì)在A端產(chǎn)生一個(gè)負(fù)脈沖,由這個(gè)負(fù)脈沖來(lái)完成發(fā)光二極管的亮、滅變換。#include void main ( ) P1= 0 x00; EA = 1; EX0 =1; IT0 =1;;IT0=1,使外部中斷0的觸發(fā)方式為下降沿觸發(fā) while(1);void INT0_T3 ( ) interrupt 0 P1 = P1;中斷允許寄存器中斷允許寄存器IEIE:EAESET1EX1ET0EX0定時(shí)定時(shí)/ /計(jì)數(shù)控制寄存器計(jì)數(shù)控制寄存器TCONTCON: R-S觸發(fā)器電路,74LS00是一個(gè)“與非”門(mén)。根據(jù)電路我們可以看
8、出,當(dāng)沒(méi)有按下5-1中的按鍵K,a=0,b=1,兩個(gè)與非門(mén)輸出分別是A=1,B=0。當(dāng)按下圖中的按鍵K后,a=1,b=0,A、B端的電平就會(huì)進(jìn)行切換,A=0,B=1,這樣就會(huì)從A、B端輸出相應(yīng)的負(fù)脈沖和正脈沖。 在開(kāi)關(guān)在ab之間轉(zhuǎn)換過(guò)程中沒(méi)有中間過(guò)程出現(xiàn),這由R-S觸發(fā)器電路特性決定。 將A端接到P3.2引腳,就是要從P3.2引腳向單片機(jī)輸入一個(gè)由按下按鍵所產(chǎn)生的負(fù)脈沖,由這個(gè)負(fù)脈沖來(lái)完成發(fā)光二極管的亮、滅變換。 MCS-51MCS-51的中斷系統(tǒng)的中斷系統(tǒng)返回值類(lèi)型返回值類(lèi)型 函數(shù)名(形參表)函數(shù)名(形參表) interrupt n using m5151單片機(jī)的單片機(jī)的中斷源中斷源及及TC
9、ONTCON CPUCPU在每個(gè)機(jī)器周期的在每個(gè)機(jī)器周期的S5P2S5P2期間期間,會(huì)自動(dòng)查詢,會(huì)自動(dòng)查詢各個(gè)各個(gè)中斷申請(qǐng)標(biāo)志位中斷申請(qǐng)標(biāo)志位,若查到某標(biāo)志位被置位,若查到某標(biāo)志位被置位, ,將啟動(dòng)中斷機(jī)制。將啟動(dòng)中斷機(jī)制。5151子系列允許子系列允許5 5個(gè)個(gè)(52(52子系列子系列6 6個(gè)個(gè)) )中斷源:中斷源: 2 2個(gè)外部中斷請(qǐng)求:個(gè)外部中斷請(qǐng)求:INT0INT0,INT1INT1 2 2個(gè)片內(nèi)定時(shí)器個(gè)片內(nèi)定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T0T0和和T1T1中斷請(qǐng)求:中斷請(qǐng)求: TF0TF0,TF1TF1,(TF2TF25252子系列有子系列有T2T2) 1 1個(gè)串行口中斷請(qǐng)求:個(gè)串行口中斷請(qǐng)
10、求:TI/RITI/RICPUCPU識(shí)別中斷申請(qǐng)的依據(jù)識(shí)別中斷申請(qǐng)的依據(jù):2.3 MCS-51系列單片機(jī)的外部引腳及片外總線系列單片機(jī)的外部引腳及片外總線2.3.1 外部引腳外部引腳P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VpdP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7XTAL2XTAL1VssVccP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VppALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.01234567891011121415161718192040393837363
11、53433323130292827262524232221803180518751RXDTXDINT0INT1T0T1WRRDP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEAALERST用戶I /O控制總線(CB)鎖存器A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0地址總線數(shù)據(jù)總線(AB)(DB)VccVssVccV
12、ss單片機(jī)的中斷源及單片機(jī)的中斷源及TCONTCONCPU CPU 在每個(gè)機(jī)器周期的在每個(gè)機(jī)器周期的S5P2S5P2期間期間,會(huì)自動(dòng)查詢,會(huì)自動(dòng)查詢各個(gè)各個(gè)中斷申請(qǐng)標(biāo)志位中斷申請(qǐng)標(biāo)志位,若查到某標(biāo)志位被置位,若查到某標(biāo)志位被置位, ,將啟動(dòng)中斷機(jī)制。將啟動(dòng)中斷機(jī)制。CPUCPU識(shí)別中斷申請(qǐng)的依據(jù)識(shí)別中斷申請(qǐng)的依據(jù):TcTsTmTmTcTc=1/fosc Ts=6Tc Tm=12Tc=6Ts=1/fosc Ts=6Tc Tm=12Tc=6TsS5S6S4S3S2S5S6S4S3S2S1定時(shí)器控制寄存器TCON (88H)TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1
13、IT1 IE0IE0 IT0IT0TCONTCONTF0/TF1TF0/TF1:定時(shí)器溢出中斷申請(qǐng)標(biāo)志位:定時(shí)器溢出中斷申請(qǐng)標(biāo)志位: =0=0:定時(shí)器未溢出;:定時(shí)器未溢出; =1=1:定時(shí)器溢出申請(qǐng)中斷,進(jìn)中斷后自動(dòng)清零。定時(shí)器溢出申請(qǐng)中斷,進(jìn)中斷后自動(dòng)清零。TR0/TR1TR0/TR1:定時(shí)器運(yùn)行啟停控制位:定時(shí)器運(yùn)行啟??刂莆唬?=0=0:定時(shí)器停止運(yùn)行;:定時(shí)器停止運(yùn)行; =1=1:定時(shí)器啟動(dòng)運(yùn)行。定時(shí)器啟動(dòng)運(yùn)行。TCONTCON:TimerTimer控制寄存器控制寄存器,是管理定時(shí)器工作的,是管理定時(shí)器工作的SFRSFR(其中低(其中低4 4位管外部中斷)位管外部中斷)定時(shí)器控制寄存
14、器TCON (88H)TF1TF1 TR1TR1 TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0 IT0IT0TCONTCONIE0/IE1IE0/IE1:外部中斷申請(qǐng)標(biāo)志位:外部中斷申請(qǐng)標(biāo)志位: =0=0:沒(méi)有外部中斷申請(qǐng);:沒(méi)有外部中斷申請(qǐng); =1=1:有外部中斷申請(qǐng)。有外部中斷申請(qǐng)。IT0/IT1IT0/IT1:外部中斷請(qǐng)求的觸發(fā)方式選擇位:外部中斷請(qǐng)求的觸發(fā)方式選擇位: =0=0:在:在INT0/INT1INT0/INT1端申請(qǐng)中斷的信號(hào)端申請(qǐng)中斷的信號(hào)低電平低電平有效有效; ; =1 =1:在在INT0/INT1INT0/INT1端申請(qǐng)中斷的信號(hào)端申請(qǐng)中斷的信號(hào)
15、負(fù)跳變負(fù)跳變有效。有效。TCONTCON:TimerTimer控制寄存器控制寄存器,低低4 4位管理外部中斷位管理外部中斷在在CPUCPU已經(jīng)開(kāi)放了外部中斷允許的前提下:已經(jīng)開(kāi)放了外部中斷允許的前提下:在在INT0INT0/ /INT1INT1引腳輸入一個(gè)引腳輸入一個(gè)負(fù)脈沖負(fù)脈沖或或低電平低電平, TCONTCON寄存器中的寄存器中的IE0/IE1IE0/IE1標(biāo)志位自動(dòng)變標(biāo)志位自動(dòng)變“1”1”,檢測(cè)到檢測(cè)到IE0/IE1IE0/IE1變變“1”1”后后, ,將產(chǎn)生指令:將產(chǎn)生指令: LCALL 0003HLCALL 0003H(/0013H)(/0013H)執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序,
16、 ,并將并將IE0/IE1IE0/IE1標(biāo)志位自動(dòng)清標(biāo)志位自動(dòng)清“0”,0”,以備下次申請(qǐng)以備下次申請(qǐng)。外部中斷INT0(P3.2),INT1(P3.3)申請(qǐng)過(guò)程單片機(jī)的中斷矢量與優(yōu)先級(jí)單片機(jī)的中斷矢量與優(yōu)先級(jí)中斷矢量中斷矢量: MCS-51MCS-51單片機(jī)的單片機(jī)的 5 5 個(gè)中斷源分別對(duì)個(gè)中斷源分別對(duì)應(yīng)有各自的應(yīng)有各自的中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址中斷矢量中斷矢量000BH000BHTF0TF0定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0(T0)0(T0)0023H0023HRI/TIRI/TI串行口接收串行口接收/ /發(fā)送發(fā)送001BH001BHTF1TF1定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1(T
17、1)1(T1)0013H0013HIE1IE1外部中斷外部中斷1( INT1)1( INT1)0003H0003HIE0IE0外部中斷外部中斷0( INT0)0( INT0)中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)中斷矢量中斷矢量申請(qǐng)標(biāo)志申請(qǐng)標(biāo)志中中 斷斷 源源最高優(yōu)先級(jí)最高優(yōu)先級(jí)最低優(yōu)先級(jí)最低優(yōu)先級(jí) PT2 PS PT1PT2 PS PT1 PX1 PX1 PT0 PX0PT0 PX0IPIPPX0/PX1PX0/PX1:INTINT0/10/1優(yōu)先級(jí)控制位:優(yōu)先級(jí)控制位: =0=0 時(shí)屬時(shí)屬低低優(yōu)先級(jí);優(yōu)先級(jí); =1=1 時(shí)屬時(shí)屬高高優(yōu)先級(jí)。優(yōu)先級(jí)。PT0/PT1/PT2PT0/PT1/PT2:T0/1/2T
18、0/1/2中斷優(yōu)先級(jí)控制位:中斷優(yōu)先級(jí)控制位: =0=0 時(shí)屬低優(yōu)先級(jí);時(shí)屬低優(yōu)先級(jí); =1=1 時(shí)屬時(shí)屬高高優(yōu)先級(jí)。優(yōu)先級(jí)。PS1PS1:串行口中斷優(yōu)先級(jí)控制位:串行口中斷優(yōu)先級(jí)控制位: =0=0 時(shí)屬時(shí)屬低低優(yōu)先級(jí);優(yōu)先級(jí); =1=1 時(shí)屬時(shí)屬高高優(yōu)先級(jí)。優(yōu)先級(jí)。中斷優(yōu)先級(jí)控制寄存器中斷優(yōu)先級(jí)控制寄存器IP IP (0B8H)(0B8H)對(duì)對(duì)同時(shí)發(fā)生同時(shí)發(fā)生多個(gè)中斷申請(qǐng)時(shí):多個(gè)中斷申請(qǐng)時(shí):不同優(yōu)先級(jí)的中斷同時(shí)申請(qǐng)不同優(yōu)先級(jí)的中斷同時(shí)申請(qǐng)( (很難遇到很難遇到) ) 先高后低先高后低相同優(yōu)先級(jí)的中斷同時(shí)申請(qǐng)相同優(yōu)先級(jí)的中斷同時(shí)申請(qǐng)( (很難遇到很難遇到) ) 按序執(zhí)行按序執(zhí)行正處理低優(yōu)先級(jí)中
19、斷又接到高級(jí)別中斷正處理低優(yōu)先級(jí)中斷又接到高級(jí)別中斷 高打斷低高打斷低正處理高優(yōu)先級(jí)中斷又接到低級(jí)別中斷正處理高優(yōu)先級(jí)中斷又接到低級(jí)別中斷 高不理低高不理低中斷優(yōu)先級(jí)處理原則沒(méi)有沒(méi)有同級(jí)的中斷或更高級(jí)別的同級(jí)的中斷或更高級(jí)別的中斷正在處理中斷正在處理;在中斷源提出了在中斷源提出了中斷申請(qǐng)中斷申請(qǐng)且且CPUCPU此前已經(jīng)此前已經(jīng)允許中斷允許中斷的前提下,還須滿足以下的前提下,還須滿足以下三個(gè)條件三個(gè)條件: :正在執(zhí)行的指令必須正在執(zhí)行的指令必須執(zhí)行完最后執(zhí)行完最后 1 1個(gè)機(jī)器周期個(gè)機(jī)器周期;若正在執(zhí)行若正在執(zhí)行RETIRETI,或正在訪問(wèn),或正在訪問(wèn)IEIE或或IPIP寄存器寄存器, ,須須執(zhí)
20、行完上述指令和下一條指令以后方能響應(yīng)中斷。執(zhí)行完上述指令和下一條指令以后方能響應(yīng)中斷。 EAEA ES ET1 EX1 ET0 EX0 ES ET1 EX1 ET0 EX0IEIE中斷允許寄存器中斷允許寄存器IE IE (0A8H)(0A8H) EX0/EX1/ET1/ET0/ES EX0/EX1/ET1/ET0/ES 位位: 分別是分別是INT0/1INT0/1,Timer0/1Timer0/1,串行口,串行口的中斷允的中斷允 許控制位許控制位: : =0 =0 時(shí)禁止中斷;時(shí)禁止中斷; =1=1 時(shí)時(shí)允許允許中斷。中斷。EAEA:總的中斷允許控制位(總開(kāi)關(guān)):總的中斷允許控制位(總開(kāi)關(guān)):
21、 =0 =0 時(shí)禁止全部中斷;時(shí)禁止全部中斷;=1=1 時(shí)時(shí)允許允許中斷。中斷。中斷系統(tǒng)硬件結(jié)構(gòu)注注: :各中斷允許控制位各中斷允許控制位=0,=0,開(kāi)關(guān)斷開(kāi)開(kāi)關(guān)斷開(kāi); =1,=1,開(kāi)關(guān)接通開(kāi)關(guān)接通IE0IE0EX0EX0TF0TF0IE1IE1TF1TF1TITIESESET1ET1EX1EX1ET0ET0外部中斷外部中斷 請(qǐng)求請(qǐng)求0 0外部中斷外部中斷 請(qǐng)求請(qǐng)求1 1內(nèi)部?jī)?nèi)部 定時(shí)器定時(shí)器0 0內(nèi)部?jī)?nèi)部 定時(shí)器定時(shí)器1 1內(nèi)部?jī)?nèi)部 串行口串行口T TR RRIRIIEIE寄存器寄存器 EA EA位位IPIP寄存器寄存器各單路開(kāi)關(guān)各單路開(kāi)關(guān) 總開(kāi)關(guān)總開(kāi)關(guān)中斷源標(biāo)志中斷源標(biāo)志位查詢機(jī)構(gòu)位查詢機(jī)
22、構(gòu)高中斷級(jí)高中斷級(jí)中斷請(qǐng)求中斷請(qǐng)求低中斷級(jí)低中斷級(jí)中斷請(qǐng)求中斷請(qǐng)求中斷入口中斷入口中斷源中斷源標(biāo)志位標(biāo)志位INT0INT0INT1INT1中斷入口中斷入口中斷源中斷源標(biāo)志位標(biāo)志位外部中斷外部中斷及及中斷請(qǐng)求的撤除中斷請(qǐng)求的撤除: :低電平低電平/ /負(fù)脈沖負(fù)脈沖INT0/INT1INT0/INT1引腳引腳可觸發(fā)中斷可觸發(fā)中斷TF1 TR1 TF0 TR0 TF1 TR1 TF0 TR0 IE1 IE1 IT1 IT1 IE0 IE0 IT0 IT0TCON TCON (88H)(88H)IT0/IT1IT0/IT1:INT0/1INT0/1的觸發(fā)方式選擇位:的觸發(fā)方式選擇位: IT0/IT1
23、IT0/IT1 =0=0 時(shí),時(shí),INT0/INT1INT0/INT1是是低電平低電平有效;有效; IT0/IT1 IT0/IT1 =1=1 時(shí),時(shí),INT0/INT1INT0/INT1是是負(fù)跳變負(fù)跳變有效。有效。低電平觸發(fā)低電平觸發(fā) 引腳上的低電平須持續(xù)到中斷發(fā)生。引腳上的低電平須持續(xù)到中斷發(fā)生。若中斷返回前仍未若中斷返回前仍未及時(shí)撤除及時(shí)撤除低電平低電平, ,將再次中斷。將再次中斷。負(fù)脈沖觸發(fā)負(fù)脈沖觸發(fā) CPUCPU在前一機(jī)器周期采到在前一機(jī)器周期采到INT0/INT1INT0/INT1引引腳為高腳為高, ,后一機(jī)器周期采到為低才認(rèn)為是一次中斷后一機(jī)器周期采到為低才認(rèn)為是一次中斷請(qǐng)求。請(qǐng)求
24、。CPU CPU 可可自動(dòng)撤除中斷申請(qǐng)自動(dòng)撤除中斷申請(qǐng)。外部低電平中斷的撤除外來(lái)的低電平外來(lái)的低電平反相反相CLKCLK端產(chǎn)生上跳沿端產(chǎn)生上跳沿 D D端的端的“0”0”打到打到Q Q端端申請(qǐng)中斷申請(qǐng)中斷INTxINTxP1.0P1.0CLKCLKS SQ QD D外來(lái)中斷申請(qǐng)外來(lái)中斷申請(qǐng)信號(hào)信號(hào)( (低電平低電平) )MCS-51MCS-5174LS7474LS74S=0 S=0 則則 Q=1 Q=1 , /S/S為異步置為異步置1 1端端中斷返回前對(duì)中斷返回前對(duì)P1.0P1.0送送“0”0” 令令Q Q端變?yōu)槎俗優(yōu)椤?”1”指令如下:指令如下:P1.0 =0 ;P1.0 =0 ;令令Q Q
25、端置端置“1 1”P(pán)1.0 =1 ;P1.0 =1 ;令令S S端置端置“1 1”,”,以免下次中斷來(lái)時(shí)以免下次中斷來(lái)時(shí)Q Q端端不能變不能變“0”0”定時(shí)定時(shí)/ /計(jì)數(shù)器中斷及中斷請(qǐng)求的撤除:計(jì)數(shù)器中斷及中斷請(qǐng)求的撤除: 定時(shí)/計(jì)數(shù)器的溢出中斷,在CPU響應(yīng)中斷過(guò)程中,自動(dòng)用硬件清除有關(guān)的中斷請(qǐng)求標(biāo)志TF0和TF1;如果未開(kāi)相應(yīng)的中斷,需用軟件將相應(yīng)的標(biāo)志清除。串行中斷及中斷請(qǐng)求的撤除:串行中斷及中斷請(qǐng)求的撤除:TI、RI標(biāo)志必須在中斷服務(wù)程序中用軟件清除。程序中必須有: TI=0; RI=0;中斷應(yīng)用中斷應(yīng)用前后前后要做的幾項(xiàng)工作要做的幾項(xiàng)工作 中斷前中斷前 開(kāi)中斷允許:開(kāi)中斷允許:必須必
26、須 選擇優(yōu)先級(jí):根據(jù)需要選擇,選擇優(yōu)先級(jí):根據(jù)需要選擇,可有可有/ /可無(wú)可無(wú) 設(shè)置控制位:設(shè)置控制位:INTxINTx觸發(fā)方式觸發(fā)方式( (ITxITx) ) TxTxTCONTCON, ,TMODTMOD, ,TRxTRx, ,初值初值 RI/TIRI/TISCONSCON, ,RENREN, ,RB8RB8, ,TB8TB8,中斷后中斷后進(jìn)入中斷服務(wù)進(jìn)入中斷服務(wù)后后:保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng),關(guān)中斷關(guān)中斷,退出中斷服務(wù)退出中斷服務(wù)前前:恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng), ,開(kāi)中斷開(kāi)中斷, ,設(shè)設(shè)TxTx的初的初 值值, ,清清TI/RITI/RI,中斷服務(wù)程序的最后一條指令必是中斷服務(wù)程序的最后一條指令必是 R
27、ETIRETI 與中斷有關(guān)的寄存器有與中斷有關(guān)的寄存器有4 4個(gè):個(gè):定時(shí)定時(shí)/ /計(jì)數(shù)控制寄存器計(jì)數(shù)控制寄存器TCONTCON串行口控制寄存器串行口控制寄存器SCONSCON中斷允許控制寄存器中斷允許控制寄存器IEIE中斷優(yōu)先級(jí)控制寄存器中斷優(yōu)先級(jí)控制寄存器IPIP中斷源有中斷源有5 5個(gè):個(gè):1 1、外部中斷、外部中斷0 0:由:由P3.2P3.2管腳(管腳(/INT0/INT0)輸入)輸入2 2、外部中斷、外部中斷1 1:由:由P3.3P3.3管腳(管腳(/INT1/INT1)輸入)輸入3 3、定時(shí)、定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0的溢出中斷的溢出中斷4 4、定時(shí)、定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1
28、1的溢出中斷的溢出中斷5 5、串行口中斷、串行口中斷 中斷源標(biāo)志有中斷源標(biāo)志有5 5個(gè)個(gè):外部中斷外部中斷0 0請(qǐng)求標(biāo)志請(qǐng)求標(biāo)志 IE0IE0、外部中斷外部中斷1 1請(qǐng)求標(biāo)志請(qǐng)求標(biāo)志IE1IE1、定時(shí)器定時(shí)器0 0溢出中斷請(qǐng)求溢出中斷請(qǐng)求標(biāo)志標(biāo)志TF0TF0、定時(shí)器定時(shí)器1 1溢出中斷請(qǐng)求標(biāo)志溢出中斷請(qǐng)求標(biāo)志TF1TF1和和串行串行中斷請(qǐng)求標(biāo)志中斷請(qǐng)求標(biāo)志RIRI或或TITI。 5 5個(gè)中斷源的排列順序由中斷優(yōu)先級(jí)控制寄個(gè)中斷源的排列順序由中斷優(yōu)先級(jí)控制寄存器存器IPIP和順序查詢邏輯電路共同決定,和順序查詢邏輯電路共同決定,5 5個(gè)中斷個(gè)中斷源分別對(duì)應(yīng)源分別對(duì)應(yīng)5 5個(gè)固定的中斷入口地址。個(gè)
29、固定的中斷入口地址。 外部中斷源的擴(kuò)展外部中斷源的擴(kuò)展在實(shí)際應(yīng)用中,若外部中斷源超過(guò)兩個(gè),則需擴(kuò)充外部中斷源,這里介紹兩種簡(jiǎn)單可行的方法。 1 1用定時(shí)器作外部中斷源用定時(shí)器作外部中斷源 MCS-51單片機(jī)有兩個(gè)定時(shí)器,具有兩個(gè)內(nèi)中斷標(biāo)志和外計(jì)數(shù)引腳,如在某些應(yīng)用中不被使用,則它們的中斷可作為外部中斷請(qǐng)求使用。此時(shí),可將定時(shí)將定時(shí)器設(shè)置成計(jì)數(shù)方式,計(jì)數(shù)初值可設(shè)為滿量程,則它們器設(shè)置成計(jì)數(shù)方式,計(jì)數(shù)初值可設(shè)為滿量程,則它們的計(jì)數(shù)輸入端的計(jì)數(shù)輸入端T0T0(P3.4P3.4)或)或T1T1(P3.5P3.5)引腳上發(fā)生負(fù))引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加跳變時(shí),計(jì)數(shù)器加1 1便產(chǎn)生溢出中斷。便產(chǎn)生溢出
30、中斷。利用此特性,可把T0腳或T1腳作為外部中斷請(qǐng)求輸入線,而計(jì)數(shù)器的溢出中斷作為外部中斷請(qǐng)求標(biāo)志。 例例: : 將定時(shí)器T0擴(kuò)展為外部中斷源。 解解:將定時(shí)器T0設(shè)定為方式2(自動(dòng)恢復(fù)計(jì)數(shù)初值),TH0和TF0的初值均設(shè)置為FFH,允許T0中斷,CPU開(kāi)放中斷,源程序如下:TMOD0 x06 ; T0設(shè)定為方式2TH0=0 xFF ; 計(jì)數(shù)器賦初值TL0=0 xFF ;TR0=1ET0=1EA=1 當(dāng)連接在T0(P3.4)引腳的外部中斷請(qǐng)求輸入線發(fā)生負(fù)跳變時(shí),TL0加1溢出,TF0置1,向CPU發(fā)出中斷申請(qǐng),同時(shí),TH0的內(nèi)容自動(dòng)送至TL0使TL0恢復(fù)初值。這樣,T0引腳每輸入一個(gè)負(fù)跳變,T
31、F0都會(huì)置1,向CPU請(qǐng)求中斷,此時(shí),T0腳相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。 同樣,也可將定時(shí)器T1擴(kuò)展為外部中斷源。 2 2中斷和查詢相結(jié)合中斷和查詢相結(jié)合 利用兩根外部中斷輸入線(和腳),每一中斷輸入線可以通過(guò)線與的關(guān)系連接多個(gè)外部中斷源,同時(shí),利用并行輸入端口線作為多個(gè)中斷源的識(shí)別線,其電路原理圖如下圖所示。一個(gè)外中斷擴(kuò)展成多個(gè)外中斷的原理圖 由圖可知,4個(gè)外部擴(kuò)展中斷源通過(guò)與門(mén)電路組成線與后再與(P3.2)相連,4個(gè)外部擴(kuò)展中斷源EXINT0 EXINT3中有一個(gè)或幾個(gè)出現(xiàn)低電平則輸出為0,使P3.2腳為低電平,從而發(fā)出中斷請(qǐng)求。CPU執(zhí)行中斷服務(wù)程序時(shí),先依次查詢P1口的中斷源輸入
32、狀態(tài),然后,轉(zhuǎn)入到相應(yīng)的中斷服務(wù)程序,4個(gè)擴(kuò)展中斷源的優(yōu)先級(jí)順序由軟件查詢順序決定,即最先查詢的優(yōu)先級(jí)最高,最后查詢的優(yōu)先級(jí)最低。 TCON(88H) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88HTF1TF0IE1IT1IE0IT0TIRIEAESET1EX1ET0EX0PSPT1PX1PT0PX0SCONIEIP【例例4.14.1】試編寫(xiě)允許/INT1、T0中斷,并將/INT1設(shè)置高優(yōu)先級(jí)的初始化程序。 #include void main ( ) PX1 = 1; /設(shè)置/INT1為高優(yōu)先級(jí) EA = 1; /CPU開(kāi)中斷 EX1 = 1; /允許/INT1中斷 ET0
33、= 1; /允許T0中斷【例例4.34.3】將任務(wù)3的電路圖中的A端改接在P3.3上,編寫(xiě)程序,使每按下按鍵SW1后,P1口的發(fā)光二極管實(shí)現(xiàn)亮點(diǎn)流動(dòng)。 分析:改變的地方有兩處,一是電路變了(P3.2改成了P3.3),二是閃爍狀態(tài)變了(由亮滅切換變成流動(dòng))。 程序只要做如下改變:一是改變一下中斷服務(wù)程序的入口地址(使用/INT1,而不是INT0),二是在主程序中改變一下中斷控制位和A的初始值,三是改變一下中斷服務(wù)程序(函數(shù))。則可編程如下:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/A
34、D435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C130pFC230pFX1CRYSTALVCCGNDC310uFR18.2kGNDVCCR2560R3560R4560R
35、5560R6560R7560R8560R9560VCCD5LED-YELLOWD1LED-YELLOWD2LED-YELLOWD3LED-YELLOWD4LED-YELLOWD6LED-YELLOWD7LED-YELLOWD8R104.7kR114.7kSW1SW-SPDT123U2:A7400456U2:B7400abA#include #include unsigned char sel;void main ( ) sel = 0 xFE; P1= sel; EA = 1; EX1 =1; IT1 =1; while(1);void INT1_ISR ( ) interrupt 2 sel
36、 = _crol_ (sel,1); P1 = sel;【例例4.44.4】電路連接仍如任務(wù)3。編寫(xiě)程序,假設(shè)在單脈沖鍵按下之前,LED處于一個(gè)亮點(diǎn)流動(dòng)的狀態(tài)。采用中斷方式,當(dāng)按下單脈沖鍵時(shí),LED狀態(tài)改為同時(shí)閃爍。閃爍8次再恢復(fù)原來(lái)的亮點(diǎn)流動(dòng)。 分析:在任務(wù)3中,主程序只是將A的值送P1口后,就處于一個(gè)等待中斷的過(guò)程,并沒(méi)有完成別的任務(wù)。在中斷服務(wù)程序中只是將A取反。 而本例中,主程序卻要通過(guò)延時(shí)完成一個(gè)亮點(diǎn)流動(dòng)的過(guò)程,而且中斷服務(wù)程序要完成一個(gè)同時(shí)閃爍8次的過(guò)程。則可編程如下:#include #include void delay ( unsigned int d ) /延時(shí)函數(shù) while(-d 0);void main ( ) /主函數(shù) unsigned char temp; temp = 0 xfe; EA = 1; EX0 =1; IT0 =1;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44937.4-2024集成電路電磁發(fā)射測(cè)量第4部分:傳導(dǎo)發(fā)射測(cè)量1 Ω/150 Ω直接耦合法
- 媒體娛樂(lè)公司估值考量要點(diǎn)
- 2024.0913推文-一步法elisa新品解讀
- 2024高中地理第五章區(qū)際聯(lián)系與區(qū)域協(xié)調(diào)發(fā)展第2節(jié)產(chǎn)業(yè)轉(zhuǎn)移-以東亞為例精練含解析新人教必修3
- 2024高中生物專(zhuān)題4酶的研究與應(yīng)用課題2探討加酶洗衣粉的洗滌效果課堂演練含解析新人教版選修1
- 2024高考地理一輪復(fù)習(xí)第十五單元區(qū)域生態(tài)環(huán)境建設(shè)練習(xí)含解析
- 2024高考化學(xué)一輪復(fù)習(xí)第八章水溶液中的離子平衡第三節(jié)鹽類(lèi)的水解學(xué)案新人教版
- 2024高考化學(xué)二輪復(fù)習(xí)選擇題專(zhuān)項(xiàng)練四含解析
- 2024高考地理一輪復(fù)習(xí)特色篇六新穎等值線圖練習(xí)含解析
- (4篇)2024年有關(guān)一年級(jí)英語(yǔ)培優(yōu)補(bǔ)差的教學(xué)工作總結(jié)
- MOOC 有機(jī)化學(xué)(上)-北京師范大學(xué) 中國(guó)大學(xué)慕課答案
- 五年級(jí)上冊(cè)脫式計(jì)算100題及答案
- 讀書(shū)會(huì)熵減華為活力之源
- 二年級(jí)上學(xué)期數(shù)學(xué)
- GB/T 3098.5-2000緊固件機(jī)械性能自攻螺釘
- 康佳液晶電視企業(yè)文化(課堂PPT)
- 個(gè)人養(yǎng)老金:是什么、怎么繳、如何領(lǐng)PPT個(gè)人養(yǎng)老金基礎(chǔ)知識(shí)培訓(xùn)PPT課件(帶內(nèi)容)
- 雞鴨屠宰生產(chǎn)企業(yè)安全風(fēng)險(xiǎn)分級(jí)管控資料
- 離子色譜法分析氯化物原始記錄 (1)
- 高等數(shù)學(xué)說(shuō)課稿PPT課件(PPT 49頁(yè))
- 造影劑腎病概述和性質(zhì)
評(píng)論
0/150
提交評(píng)論