




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第5章中斷系統(tǒng)
5.1中斷控制方式
5.2MCS-51單片機的中斷系統(tǒng)
5.3中斷的C51編程
5.4外部中斷的擴展■什么是中斷
生活舉例:你正在家中看書——突然電話鈴響了——你在書上做個記號——去接電話并和來電話的人交談——門鈴突然響了——你讓打電話的人先等等——你去開門并和來人交談——談話結束后關好門——回到電話機旁繼續(xù)通話——通話結束后放下電話——回到房間從做記號處繼續(xù)看書。這是一個典型的中斷現(xiàn)象,即正常的工作過程被某個突發(fā)事件(內(nèi)部的或外部的)打斷。發(fā)生中斷后執(zhí)行的另一工作仍然可能被新的時間打斷(中斷嵌套)。
分析:某一特定時刻有多項任務需要一個人(CPU)做,但又不能同時做多項任務,只能采取中斷方式“穿插完成”。第5章中斷系統(tǒng)■中斷的基本概念所謂中斷是指CPU對系統(tǒng)中或系統(tǒng)外發(fā)生的某個事件的一種響應過程,即CPU暫時停止現(xiàn)行程序的執(zhí)行,而自動轉去執(zhí)行預先安排好的處理該事件的服務子程序。當處理結束后,再返回到被暫停程序的斷點處,繼續(xù)執(zhí)行原來的程序。實現(xiàn)這種中斷功能的硬件系統(tǒng)和軟件系統(tǒng)統(tǒng)稱為中斷系統(tǒng)。中斷系統(tǒng)是計算機的重要組成部分。實時控制、故障自動處理時往往用到中斷系統(tǒng),計算機與外部設備間傳送數(shù)據(jù)及實現(xiàn)人機聯(lián)系也常常采用中斷方式。5.1中斷控制方式■中斷的基本概念在中斷系統(tǒng)中,通常將CPU正常運行的程序稱為主程序,把引起中斷的設備或事件稱為中斷源。由中斷源向CPU所發(fā)出的請求中斷的信號稱為中斷請求信號,CPU接受中斷申請終止現(xiàn)行程序而轉去執(zhí)行中斷服務程序稱為中斷響應,服務于中斷事件的程序稱為中斷服務程序,也稱為中斷處理程序?,F(xiàn)行程序被中斷的地方稱為斷點,執(zhí)行完中斷服務程序后返回至源程序斷點處稱為中斷返回,系統(tǒng)處理中斷的整個過程稱為中斷。5.1中斷控制方式■引進中斷的優(yōu)點
◆分時操作:
計算機與外部設備交換信息時,存在著高速CPU和低速外設之間處理速度的矛盾。若采用軟件查詢方式,則不但占用了CPU操作時間,而且響應速度慢。中斷功能正好解決了這個矛盾。每當外設做完一件事后,就發(fā)出中斷申請,請求CPU中斷其正在執(zhí)行的程序,轉去執(zhí)行中斷服務程序。中斷處理完成后,CPU恢復執(zhí)行主程序,外設仍然繼續(xù)工作。這樣,CPU就可以同時命令多個外設(如鍵盤、打印機等)同時工作,從而提高CPU的工作效率。5.1中斷控制方式■引進中斷的優(yōu)點
◆實時處理:
在實時控制中,現(xiàn)場的各個參數(shù)隨時間和現(xiàn)場情況不斷變化。有了中斷功能,外界的這些變化量可根據(jù)要求隨時向CPU發(fā)中斷請求,要求CPU及時處理,這種效果是查詢方式無法做到的。
◆故障處理:
計算機在運行過程中,難免會出現(xiàn)一些無法預料的故障,如存儲出錯、運算溢出和電源突跳等,有了中斷功能,當出現(xiàn)上述故障情況時,CPU就可以及時轉去執(zhí)行故障處理程序,自行處理故障而無需停機。5.1中斷控制方式■51單片機中斷源
◆外部設備中斷源計算機的輸入/輸出設備,如鍵盤、磁盤驅動器、打印機等,可通過接口電路向CPU申請中斷。
◆故障源故障源是產(chǎn)生故障信息的來源。它作為中斷源,可以使CPU以中斷方式對已經(jīng)發(fā)生的故障做及時處理。
計算機的故障源有內(nèi)部和外部之分。內(nèi)部故障源一般是指執(zhí)行指令時產(chǎn)生的錯誤情況,如除法中除以零,這種故障也稱為內(nèi)部軟件中斷;外部中斷源主要有電源掉電等情況,當電源掉電而將至一定數(shù)值時,即發(fā)出中斷請求,由計算機中斷系統(tǒng)自動響應,并進行相應處理。5.1中斷控制方式■51單片機中斷源
◆控制對象中斷源計算機做實時控制時,被控對象常常用作中斷源。例如:電壓、電流、溫度等超過其上限或下限時,以及繼電器、開關閉合與斷開時,都可以作為中斷源向CPU申請中斷。
◆定時/計數(shù)脈沖中斷源定時器/計數(shù)器脈沖中斷也有內(nèi)部和外部之分。內(nèi)部定時中斷是由定時器/計數(shù)器溢出而自動產(chǎn)生的;外部計數(shù)中斷則是由外部脈沖通過CPU的中斷請求輸入端引起的。5.1中斷控制方式■中斷系統(tǒng)需解決的基本問題
◆中斷源:
中斷請求信號的來源。包括中斷請求信號的產(chǎn)生及該信號怎樣被CPU有效地識別。而且要求中斷請求信號產(chǎn)生一次,只能被CPU接收和處理一次,即不能一次中斷申請被CPU多次響應。這就涉及到中斷請求信號的及時撤除問題?!糁袛囗憫c返回:CPU采集到中斷請求信號后,怎樣轉向特定的中斷服務子程序及執(zhí)行完中斷服務子程序怎樣返回被中斷的程序繼續(xù)正確地執(zhí)行。中斷響應與返回的過程中涉及到CPU響應中斷的條件、現(xiàn)場保護等問題。5.1中斷控制方式■中斷系統(tǒng)需解決的基本問題
◆優(yōu)先級控制(優(yōu)先級排隊):一個計算機應用系統(tǒng),特別是計算機實時測控應用系統(tǒng),往往有多個中斷源,各中斷源所要求的處理具有不同的輕重、緩急程度。與人處理問題的思路一樣,希望重要緊急的事件先處理,而且如果當前處于正在處理某個事件的過程中,有更重要、更緊急的事件到來,就應當暫停當前事件的處理,轉去處理新事件。這就是中斷系統(tǒng)優(yōu)先級控制所要解決的問題。中斷優(yōu)先級的控制形成了中斷嵌套。
5.1中斷控制方式■中斷系統(tǒng)需解決的基本問題
◆中斷嵌套:當CPU響應某個中斷請求而正在進行中斷處理時,若有更高優(yōu)先級別的中斷源發(fā)出中斷申請,則CPU將自動中斷正在執(zhí)行的中斷服務程序,并保存該中斷程序斷點(類似于子程序嵌套),轉而去執(zhí)行高級別中斷的中斷服務程序;當高級別中斷處理完畢后,再繼續(xù)執(zhí)行被中斷的中斷處理程序。這個過程被稱為中斷嵌套。
只有高級別的中斷能中斷當前的中斷服務程序,同級別或者低級別的中斷不能中斷當前的中斷服務程序。5.1中斷控制方式■51單片機中斷源
◆外部中斷外部中斷是指從單片機外部引腳INT0、INT1輸入中斷請求信號的中斷,即外部中斷源有兩個。輸入/輸出的中斷請求、實時事件的中斷請求、掉電和設備故障的中斷請求都可以作為外部中斷源,從引腳INT0、INT1輸入。外部中斷請求有兩種觸發(fā)方式:電平觸發(fā)及跳變(邊沿)觸發(fā)。這兩種觸發(fā)方式可以通過對特殊功能寄存器TCON編程來選擇。5.2MCS-51單片機的中斷系統(tǒng)■51單片機中斷源
◆外部中斷
特殊功能寄存器TCON的格式定義如下:
IT0(IT1):外部中斷0(或1)觸發(fā)方式控制位。IT0(或IT1)被設置為“0”,則選擇外部中斷為電平觸發(fā)方式;IT0(或IT1)被設置為“1”,則選擇外部中斷為跳變觸發(fā)方式。5.2MCS-51單片機的中斷系統(tǒng)■51單片機中斷源
◆TCON的格式
IE0(IE1):外部中斷0(或外部中斷1)的中斷請求標志位。當IT0(或IT1)=0,即電平觸發(fā)方式時,CPU在每個機器周期的S5P2
采樣INTx(x=0,1)。若INTx引腳為低電平,將直接觸發(fā)外部中斷。跳變觸發(fā)方式時,若第一個機器周期采樣到INTx引腳為高電平,第二個機器周期采樣到INTx引腳為低電平時,由硬件置位IE0(或IE1),并以此來向CPU請求中斷。當CPU響應中斷轉向中斷服務程序時由硬件將IE0(或IE1)清零。5.2MCS-51單片機的中斷系統(tǒng)■51單片機中斷源
◆外部中斷
對于跳變觸發(fā)的外部中斷,CPU在每個機器周期都采樣INTx。為了保證檢測到負跳變,輸入到INTx引腳上的高電平與低電平至少應保持1個機器周期。對于電平觸發(fā)的外部中斷,由于CPU對INTx引腳沒有控制作用,也沒有相應的中斷請求標志位,因此需要外接電路來撤除中斷請求信號。5.2MCS-51單片機的中斷系統(tǒng)■51單片機中斷源
◆外部中斷示例
外部中斷請求信號通過D觸發(fā)器加到單片機引腳上。當外部中斷請求信號使D觸發(fā)器的CLK端發(fā)生正跳變時,由于D端接地,Q端輸出0,向單片機發(fā)出中斷請求。5.2MCS-51單片機的中斷系統(tǒng)■51單片機中斷源
◆外部中斷示例
CPU響應中斷后,利用一根口線,如P1.0作應答線,在中斷服務程序中可用如下兩條指令
ANLP1,#0FEHORLP1,#01H來撤除中斷請求。第一條指令使P1.0為0,而P1口其它各位的狀態(tài)不變。由于P1.0與直接置1端S相連,故D觸發(fā)器Q=1,撤除了中斷請求信號。第二條指令將P1.0變成1,從而使S=1,使以后產(chǎn)生的新的外部中斷請求信號又能向單片機申請中斷。5.2MCS-51單片機的中斷系統(tǒng)■51單片機中斷源
◆內(nèi)部中斷內(nèi)部中斷是單片機芯片內(nèi)部產(chǎn)生的中斷。MCS-51單片機(51子系列)的內(nèi)部中斷有定時器/計數(shù)器T0、T1的溢出中斷,串行口的發(fā)送/接收中斷。當定時器/計數(shù)器T0、T1的定時(或計數(shù))溢出時由硬件自動置位TCON的TF0或TF1位,同時向CPU申請中斷。CPU響應中斷而轉向中斷服務程序時,由硬件自動將TF0或TF1清零,即CPU響應T0和T1中斷后能自動撤除中斷請求信號。5.2MCS-51單片機的中斷系統(tǒng)■51單片機中斷源
◆內(nèi)部中斷當串行口發(fā)送完或接收完一幀信息,由接口硬件自動置位SCON的TI或RI,以此向CPU申請中斷。CPU響應中斷后,接口硬件不能自動將TI或RI清零,即CPU響應中斷后不能自動撤除中斷請求信號,需用戶采用軟件的方法將TI或RI清零,來撤除中斷請求信號。5.2MCS-51單片機的中斷系統(tǒng)■中斷控制
◆中斷允許控制(IE)
MCS-51單片機中沒有專設的開中斷和關中斷指令,對各中斷源的中斷開放或關閉是由內(nèi)部的中斷允許寄存器IE的各位來控制的。IE各位的定義如下:
EA:中斷允許總控位。EA=0,屏蔽所有的中斷請求;EA=1,開放中斷。EA的作用是使中斷允許形成兩級控制。即各中斷源首先受EA位的控制;其次還要受各中斷源自己的中斷允許總控位控制。5.2MCS-51單片機的中斷系統(tǒng)■中斷控制
◆中斷允許控制(IE)
ET2:定時器/計數(shù)器T2的溢出中斷允許位,只用于52子系列,51子系列無此位。ET2=0,禁止T2中斷;ET2=1,允許T2中斷。
ES:串行口中斷允許位。ES=0,禁止串行口中斷;ES=1允許串行口中斷。
ET1:定時器/計數(shù)器T1的溢出中斷允許位。T1=0,禁止T1中斷;ET1=1,允許T1中斷。5.2MCS-51單片機的中斷系統(tǒng)■中斷控制
◆中斷允許控制(IE)
EX1:外部中斷1的中斷允許位。EX1=0,禁止外部中斷1中斷;EX1=1,允許外部中斷1中斷。
ET0:定時器/計數(shù)器T0的溢出中斷允許位。ET0=0,禁止T0中斷;ET0=1,允許T0中斷。
EX0:外部中斷0的中斷允許位。EX0=0,禁止外部中斷0中斷;EX0=1允許外部中斷0中斷。5.2MCS-51單片機的中斷系統(tǒng)■中斷控制
◆中斷優(yōu)先級控制
51單片機的中斷源有兩個中斷優(yōu)先級,可實現(xiàn)二級中斷嵌套。中斷系統(tǒng)遵循如下三條規(guī)則:(1)正在進行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷,一直到該中斷服務程序結束,返回了主程序且執(zhí)行了主程序中的一條指令后,CPU才響應新的中斷請求。(2)正在進行的低優(yōu)先級中斷服務程序能被高優(yōu)先級中斷請求所中斷,實現(xiàn)兩級中斷嵌套。(3)CPU同時接收到幾個中斷請求時,首先響應優(yōu)先級最高的中斷請求。5.2MCS-51單片機的中斷系統(tǒng)■中斷控制
◆中斷優(yōu)先級控制中斷優(yōu)先級控制規(guī)則中前兩條是靠中斷系統(tǒng)中的兩個優(yōu)先級狀態(tài)觸發(fā)器來保證的。這兩個觸發(fā)器分別用來指示CPU是否正在執(zhí)行高優(yōu)先級及低優(yōu)先級的中斷服務程序。當某個中斷得到響應時,由硬件根據(jù)其優(yōu)先級將相應的一個優(yōu)先級狀態(tài)觸發(fā)器置1。若高優(yōu)先級的狀態(tài)觸發(fā)器為1,則屏蔽所有后來的中斷請求;若低優(yōu)先級的狀態(tài)觸發(fā)器為1,則屏蔽后來的同一優(yōu)先級的中斷請求。當中斷相應結束后,對應的優(yōu)先級狀態(tài)觸發(fā)器被硬件自動清零。5.2MCS-51單片機的中斷系統(tǒng)■中斷控制
◆中斷優(yōu)先級寄存器—IP
PT2:定時器/計數(shù)器T2的中斷優(yōu)先級控制位,只用于52子系列。
PS:串行口的中斷優(yōu)先級控制位。
PT1:定時器/計數(shù)器T1的中斷優(yōu)先級控制位。
PX1:外部中斷1的中斷優(yōu)先級控制位。
PT0:定時器/計數(shù)器T0的中斷優(yōu)先級控制位。
PX0:外部中斷0的中斷優(yōu)先級控制位。5.2MCS-51單片機的中斷系統(tǒng)■中斷控制
◆中斷優(yōu)先級控制由于51單片機有多個中斷源,但優(yōu)先級只有兩個,所以會有多個中斷源處于同一優(yōu)先級中。在同一級中的中斷源默認的優(yōu)先級由系統(tǒng)按下列順序確定。5.2MCS-51單片機的中斷系統(tǒng)中斷源同級的中斷優(yōu)先級外部中斷0定時器/計數(shù)器0中斷外部中斷1定時器/計數(shù)器1中斷串行口中斷定時器/計數(shù)器2中斷最高
最低■中斷控制系統(tǒng)邏輯結構示意圖
5.2MCS-51單片機的中斷系統(tǒng)■中斷響應的條件
單片機響應中斷的條件為中斷源有請求(中斷允許寄存器IE相應位置1),且CPU開中斷(即EA=1)。這樣,在每個機器周期的S5P2
期間,對所有中斷源按用戶設置的優(yōu)先級和內(nèi)部規(guī)定的優(yōu)先級進行順序檢測,并可在S6
期間找到所有有效的中斷請求。5.2MCS-51單片機的中斷系統(tǒng)■中斷響應的條件
如有中斷請求,且滿足下列條件,則在下一個機器周期的S1期間響應中斷,否則將丟棄中斷采樣的結果。
◆無同級或高級中斷正在處理。
◆現(xiàn)行指令執(zhí)行到最后1個機器周期且已結束?!羧衄F(xiàn)行指令為RETI或訪問IE、IP的指令時,執(zhí)行完該指令且緊隨其后的另一條指令也已執(zhí)行完畢。5.2MCS-51單片機的中斷系統(tǒng)■中斷響應過程
CPU響應中斷后硬件將自動執(zhí)行如下操作:(1)根據(jù)中斷請求源的優(yōu)先級高低,對相應的優(yōu)先級狀態(tài)觸發(fā)器置1。(2)保護斷點,即把程序計數(shù)器PC的內(nèi)容壓入堆棧保存。(3)清內(nèi)部硬件可清除的中斷請求標志位(IE0、IE1、TF0、TF1)。(4)把被響應的中斷服務程序入口地址送入PC,從而轉入相應的中斷服務程序執(zhí)行。5.2MCS-51單片機的中斷系統(tǒng)■中斷入口地址各中斷源對應的中斷服務程序入口地址如下表所示:
CPU響應中斷后,將從上述入口地址開始執(zhí)行相應的中斷服務程序。中斷服務程序的最后一條指令必須是中斷返回指令RETI。5.2MCS-51單片機的中斷系統(tǒng)中斷源中斷入口地址外部中斷0定時器/計數(shù)器0外部中斷1定時器/計數(shù)器1串行口中斷定時器/計數(shù)器2(52子系列)0003H000BH0013H001BH0023H002BH■中斷響應過程
中斷服務程序的最后一條指令必須是中斷返回指令RETI。CPU執(zhí)行該指令時,先將相應的優(yōu)先級狀態(tài)觸發(fā)器清0,然后從堆棧中彈出斷點地址到PC,從而返回至斷點處繼續(xù)原程序的執(zhí)行過程。
51單片機中斷響應后,僅保護斷點信息而不保護現(xiàn)場信息,如ACC、工作寄存器Rn、PSW等存儲器的值,且不能自動清除串行口中斷標志TI和RI,也無法清除由電平觸發(fā)的外部中斷請求信號。所以用戶在編制中斷服務程序時需要格外注意。5.2MCS-51單片機的中斷系統(tǒng)■中斷響應時間
所謂中斷響應時間是指從CPU檢測到中斷請求信號到轉入中斷服務程序入口所需要的機器周期數(shù)。
MCS-51單片機響應中斷的最短時間為3個機器周期。若CPU檢測到中斷請求信號時間正好是一條指令的最后一個機器周期,則不需等待就可以立即響應。響應中斷的過程就是由內(nèi)部硬件執(zhí)行一條長調用指令,需要2個機器周期,加上檢測需要1個機器周期,一共需要3個機器周期即可執(zhí)行中斷服務程序。5.2MCS-51單片機的中斷系統(tǒng)■中斷響應時間
中斷響應的最長時間由下列情況所決定:若中斷檢測時正在執(zhí)行RETI或訪問IE或IP指令的第一個機器周期,這樣包括檢測在內(nèi)需要2個機器周期(以上三條指令均需兩個機器周期);若緊接著要執(zhí)行的指令恰好是執(zhí)行時間最長的乘/除法指令,其執(zhí)行時間均為4個機器周期;再用2個機器周期執(zhí)行一條長調用指令才轉入中斷服務程序。所以共需8個機器周期。其它情況下的中斷響應時間一般為3~8個機器周期。5.2MCS-51單片機的中斷系統(tǒng)■中斷函數(shù)定義C51的中斷服務程序是一種特殊的程序,其定義如下:
void函數(shù)名(void)interruptnusingm{函數(shù)體語句;}這里的interrupt和using是為編寫C51中斷服務程序而引入的關鍵字,interrupt表示該函數(shù)是一個中斷服務程序,其后的n是指該中斷服務程序對應于哪一個中斷源;using用于指定該中斷服務程序要使用的工作寄存器組編號,
m的取值范圍為0~3。
若不使用關鍵字using,則編譯系統(tǒng)會自動給該服務函數(shù)分配寄存器組,并將當前工作寄存器組的8個寄存器壓入堆棧。
用戶程序中不允許任何程序調用中斷服務程序。5.3中斷系統(tǒng)的C51編程■中斷函數(shù)定義C51的中斷源及其中斷編號如下:5.3中斷系統(tǒng)的C51編程中斷源中斷編號外部中斷0定時器/計數(shù)器0中斷外部中斷1定時器/計數(shù)器1中斷串行口中斷定時器/計數(shù)器2中斷012345■中斷函數(shù)定義
編寫中斷函數(shù)時,應注意以下幾點:(1)中斷函數(shù)不帶任何參數(shù),否則會導致編譯出錯。(2)中斷函數(shù)不能有返回值,所以函數(shù)類型應為void。(3)中斷函數(shù)必須由中斷源觸發(fā)而自動調用,不得直接調用,因此也不用提前聲明。(4)中斷函數(shù)要精簡,避免因執(zhí)行時間過長影響其它中斷的響應。5.3中斷系統(tǒng)的C51編程■中斷舉例
例1:用按鈕控制指示燈的“亮滅”狀態(tài)。在單片機INT0引腳接一個按鈕,P1.0引腳上接一個發(fā)光二極管。每按一次按鈕,則發(fā)光二極管的亮滅狀態(tài)轉換一次。每次按下按鈕時,會在單片機的INT0引腳上產(chǎn)生一個負脈沖,如果將單片機外部中斷0的觸發(fā)方式設為邊沿跳變觸發(fā),則單片機檢測到這個負脈沖之后就會調用外部中斷0服務程序。
5.3中斷系統(tǒng)的C51編程■中斷舉例
例1:用按鈕控制指示燈的“亮滅”狀態(tài)。#include<reg51.h>//寄存器聲明頭文件sbitp1_0=P1^0;//發(fā)光二極管控制引腳位定義voidINT0_srv(void)interrupt0using1//外部中斷0處理程序{p1_0=!p1_0; //二極管狀態(tài)翻轉}voidmain(){p1_0=0;IT0=1;//外部中斷0為邊沿觸發(fā)方式
EA=1;//中斷允許
EX0=1;//外部中斷0允許while(1);}5.3中斷系統(tǒng)的C51編程■中斷舉例
例1:用按鈕控制指示燈的“亮滅”狀態(tài)。仿真運行結果顯示,每當用戶按下按鈕時,二極管出現(xiàn)一次亮滅狀態(tài)的切換。
如果將上述程序中的“IT0=1”語句修改為“IT0=0”,則當按下按鈕時,二極管會出現(xiàn)連續(xù)亮滅的狀態(tài)切換現(xiàn)象。請讀者獨立思考其原因。5.3中斷系統(tǒng)的C51編程■中斷舉例
例2:如下圖所示,P0口連接了8個發(fā)光二極管,INT1引腳上接了一個按鍵S1,要求每次按鍵動作時均能改變8個發(fā)光二級管的亮滅狀態(tài)。
5.3中斷系統(tǒng)的C51編程■中斷舉例
例2:C51程序如下。#include<reg51.h>#defineLEDP0 sbitKEY=P3^3;bitflag=0;voiddelay(unsignedcharn)//延時子函數(shù);{unsignedchara;for(a=0;a<n;a++);}
main(void)//主程序{IT1=1;//設置邊沿觸發(fā)方式EA=1;EX1=1;LED=0xff;//發(fā)光二極管初值(全滅)5.3中斷系統(tǒng)的C51編程■中斷舉例
例2:C51程序如下。while(1)//主程序內(nèi)部循環(huán)體{if(flag==1)//有外部中斷的按鍵{delay(100);//延遲一段時間,判斷是否為抖動if(KEY==0)//還有按鍵,說明不是抖動{while(!KEY); //等待按鍵松開LED=~LED;//改變發(fā)光二級管的亮滅(全亮)}flag=0;//上次外部中斷已經(jīng)處理完畢,清除該變量EX1=1;//再次開放外部中斷}}}5.3中斷系統(tǒng)的C51編程■中斷舉例
例2:C51程序如下。voidint1(void)interrupt2 //外部中斷1服務程序{flag=1;//有按鍵按下則設置中斷標志變量flag為1EX1=0;//屏蔽外部中斷1,暫時不允許再次產(chǎn)生外部中斷1}5.3中斷系統(tǒng)的C51編程■利用查詢法擴展外部中斷源在外部中斷源比較多時,可以在51單片機的一個外部中斷請求端INT0(或INT1),利用“線與”的方式連接多個外部中斷,無論哪個中斷源發(fā)出中斷請求(低電平有效),都會觸發(fā)INT0(或INT1)中斷,這些中斷源同時分別接到單片機輸入端口的各個引腳,然后在INT0(或INT1)的中斷服務程序中采用查詢法順序檢索引起中斷的中斷源。當對應的中斷源被服務后(中斷服務程序被執(zhí)行),該中斷源應撤銷其中斷請求(將電平恢復為高電平)。
注意:軟件的查詢順序決定了擴展的多個中斷的優(yōu)先級順序。5.4外部中斷的擴充■利用查詢法擴展外部中斷源例:使用按鈕來模擬外部中斷源。共擴展了4個外部中斷,當某個外部中斷源有中斷請求時,在中斷服務程序中,會將與其對應的發(fā)光二極管點亮。5.4外部中斷的擴充■利用查詢法擴展外部中斷源例:使用按鈕來模擬外部中斷源。C51程序如下:#include<reg51.h>//頭文件sbitint0=P2^0; //擴展中斷1位定義sbitint1=P2^1;//擴展中斷2位定義sbitint2=P2^2;//擴展中斷3位定義sbitint3=P2^3;//擴展中斷4位定義sbitled0=P1^0;//發(fā)光二極管1位定義sbitled1=P1^1;//發(fā)光二極管2位定義sbitled2=P1^2;//發(fā)光二極管3位定義sbitled3=P1^3;//發(fā)光二極管4位定義5.4外部中斷的擴充■利用查詢法擴展外部中斷源例:使用按鈕來模擬外部中斷源。C51程序如下:voidINT0_srv(void)interrupt0using1//中斷服務程序{P1=0xff; //熄滅所有發(fā)光二極管;if(int0==0)led0=0;//擴展中斷1處理
if(int1==0)led1=0;//擴展中斷2處理
if(int2==0)led2=0;//擴展中斷3處理
if(int3==0)led3=0;//擴展中斷4處理 }voidmain()//主程序{IT0=1;//外部中斷0為邊沿觸發(fā)EA=1;//開總中斷
EX0=1;//外部中斷0允許 while(1);}5.4外部中斷的擴充■利用定時器擴展外部中斷源方法:首先把定時器/計數(shù)器設置成計數(shù)方式,并預置滿值(再來一個脈沖則計數(shù)器溢出),然后把外部中斷源輸入到P3.4口或P3.5口(計數(shù)器外部脈沖輸入端T0或T1),這樣就可以利用定時器/計數(shù)器(內(nèi)部中斷源)作為單片機的外部中斷了。
注意:這種方法的中斷服務的入口地址為000BH或001BH。為了使每出現(xiàn)一個從高到低的脈沖都產(chǎn)生一個中斷,可以把定時器/計數(shù)器設置為8位自動重裝方式(方式2),且其初值和重裝值均設為0FFH
。5.4外部中斷的擴充■利用定時器擴展外部中斷源C51程序如下:#include<reg51.h>voidtimer0_int(void)interrupt1//T/C0中斷處理程序{.......}voidtimer1_int(void)interrupt3//T/C1中斷處理程序{.......}5.4外部中斷的擴充■利用定時器擴展外部中斷源C51程序如下:voidmain()//主程序{........TMOD=0x66; //兩個定時/計數(shù)器都設置為8位自動重裝模式
TL0=0xFF;//設定重載初值
TH0=0xFF;
TL1=0xFF;
TH1=0xFF;
TCON=0x50;//開始計數(shù)
IE=0x9F;//中斷使能
........}5.4外部中斷的擴充■單片機的P0口接了8個發(fā)光二極管,要求使用定時器T0中斷實現(xiàn)流水燈控制,流水燈頻率為每0.5秒鐘更替一次(假設單片機外接11.0592MHz的晶振)。5.5定時器中斷編程實例■單片機的P0口接了8個發(fā)光二極管,要求使用定時器T0中斷實現(xiàn)流水燈控制,流水燈頻率為每0.5秒鐘更替一次(假設單片機外接11.0592MHz的晶振)。分析:使用定時器T0中斷初始化包括以下幾個方面:(1)確定計數(shù)初值以及定時器工作方式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨境物流在電商平臺運營中的作用
- 2025年度中國星網(wǎng)校園招聘正式啟動筆試參考題庫附帶答案詳解
- 金融安全意識財務團隊防范風險的關鍵能力
- 財務管理軟件操作技巧從入門到精通
- 浙江省2024-2025學年高中物理第一章課時訓練1描述運動的幾個物理量含解析
- 足球賽事的場地規(guī)劃與設施管理
- 貴州2025年02月貴州省廣播電視局直屬事業(yè)單位公開招考26名工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 高中語文文摘校園“214”計劃
- 跨文化背景下的兒童心理學與教育活動設計
- 浙江國企招聘2025杭州之江國家旅游度假區(qū)基礎設施建設發(fā)展有限公司招聘1人筆試參考題庫附帶答案詳解
- 基礎模塊2Unit 8 Green Earth reading課件
- 某發(fā)電公司安全風險辨識分級管控與隱患排查治理匯編
- 啟封密閉、排放瓦斯專項辨識
- 盤扣式鋼管腳手架驗收表
- EPC項目設計管理實施策劃書
- von frey絲K值表完整版
- 人教版四年級數(shù)學下冊第一單元提升測試卷(Word版含答案)
- 內(nèi)部審核檢查表人力資源部
- GB/T 3452.4-2020液壓氣動用O形橡膠密封圈第4部分:抗擠壓環(huán)(擋環(huán))
- GA/T 1310-2016法庭科學筆跡鑒定意見規(guī)范
- 西南交通大學文科建設發(fā)展綱要
評論
0/150
提交評論