首頁 新聞 > 科技 > 正文

51單片機---中斷系統(tǒng)

一、單片機中斷系統(tǒng)

1、基本特點有5個固定的中斷源,其中3個在片內(nèi),2個在片外,它們在程序存儲器ROM中都分別有各自固定的中斷入口地址,由此進入中斷服務(wù)程序(ISR);這5個固定的中斷源都分別有兩級中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級;可形成中斷嵌套;有2個特殊功能寄存器用于中斷控制的編程(IE和IP);對于8052單片機來說,增加了第三個中斷源:定時器/計數(shù)器T2的中斷;外部中斷源:(1)、外部中斷0:INT0,由P3.2(12號引腳)口引入,低電平或下降沿觸發(fā);(2)、外部中斷1:INT1,由P3.3(13號引腳)口引入,低電平或下降沿觸發(fā);這兩個外部中斷的控制位鎖存在定時器/計數(shù)器的工作狀態(tài)控制寄存器TCON的低4位;內(nèi)部中斷源:(1)、定時器/計數(shù)器T0中斷:由T0的計數(shù)寄存器TH0/TL0的值在溢出回0時觸發(fā);(2)、定時器/計數(shù)器T1中斷:由T1的計數(shù)寄存器TH1/TL1的值在溢出回0時觸發(fā);(3)、串口中斷RI/TI:串行口中斷,由串行口在完成1幀字符的接收(RI)/發(fā)送(TI)時觸發(fā);這三個內(nèi)部中斷源的控制位分別鎖存在特殊功能寄存器TCON和SCON中;2、中斷系統(tǒng)的結(jié)構(gòu)如圖:

二、中斷控制寄存器1、中斷允許控制寄存器IE(A8H)中斷允許控制寄存器IE存儲在特殊功能寄存器區(qū),字節(jié)地址是A8H,位地址從低到高依次是A8H,A9H,AAH,ABH,ACH,ADH,AFH;寄存器IE控制著CPU對中斷源總的開放或禁止,以及對每個中斷源的開放或禁止;IE的格式如圖:2、中斷優(yōu)先級控制寄存器IP(B8H)中斷優(yōu)先級控制寄存器IP存儲在特殊功能寄存器區(qū),字節(jié)地址是B8H,位地址從低到高依次是B8H,B9H,BAH,BBH,BCH,BDH,BEH,BFH;IP用來鎖存優(yōu)先級的控制位,即:設(shè)定中斷源屬于兩級中斷中的哪一級;(1)、中斷優(yōu)先級的響應(yīng):系統(tǒng)復(fù)位之后,IP的低5位全部被清0,并將所有中斷源設(shè)置為低優(yōu)先級中斷;如果幾個具有相同優(yōu)先級的中斷源同時向CPU申請中斷,那么,哪一個中斷源優(yōu)先得到中斷服務(wù),這一點取決于這些中斷源在CPU內(nèi)部登記的排隊序號(就是中斷序號);CPU通過內(nèi)部硬件查詢登記的中斷序號,按自然優(yōu)先級逐個響應(yīng)各個中斷請求;中斷源在CPU內(nèi)部登記的中斷序號是由硬件自動形成的,無需人工手動生成,其順序如下:INT0-->T0-->INT1-->T1-->RI/TI;IP的格式如圖:三、中斷響應(yīng)1、響應(yīng)過程:下列任何一種情況存在時,中斷申請將被封鎖;(1)、CPU當前正在執(zhí)行一個同級或高一級的中斷服務(wù)程序;(2)、CPU當前正在執(zhí)行的那條指令還沒有執(zhí)行完;(3)、CPU當前正在執(zhí)行的指令是RETI指令或這是對IE/IP寄存器進行讀寫操作的指令,執(zhí)行這些指令之后,至少還要再執(zhí)行一條指令才會響應(yīng)中斷;2、中斷入口地址:中斷得到響應(yīng)后,自動清除中斷請求標志(對于串口中斷請求標志,要用軟件來清0),由硬件自動將程序計數(shù)器PC的內(nèi)容(斷點地址)壓入堆棧保護,然后將對應(yīng)的中斷矢量(中斷入口地址)裝入程序計數(shù)器PC, 使程序轉(zhuǎn)到中斷服務(wù)程序中執(zhí)行并完成響應(yīng)的中斷服務(wù);各個中斷源在程序存儲器ROM中的中斷入口地址和中斷序號如下表所示:四、C51中斷程序1、中斷服務(wù)程序的格式:返回值類型 中斷函數(shù)名([參數(shù)表]) [模式] [重入] interrupt <中斷序號n>[using m] //n∈[0,31],m∈[0,3],m和n不允許是表達式;{ //中斷處理函數(shù)的實現(xiàn)代碼}對于中斷服務(wù)程序來說,函數(shù)不能有返回值和參數(shù),所以,返回值類型和參數(shù)類型均寫成void;Keil C51使用特定的編譯器指令分配寄存器組;當前工作寄存器組由PSW中的RS1和RS0兩位設(shè)置,兩個位共有4個值[0,3],用using指定,;using關(guān)鍵字只能用于聲明終端服務(wù)函數(shù),它在中斷服務(wù)函數(shù)入口處將當前寄存器組的值保存下來,并在中斷服務(wù)函數(shù)中使用指定的寄存器組,在中斷服務(wù)函數(shù)推出之前,恢復(fù)原寄存器組;例如:void isr_service(void) interrupt 4 using 2{ //.....;}2、 編寫中斷服務(wù)函數(shù)時注意的事項:A、若要在執(zhí)行當前中斷處理函數(shù)時禁止更高優(yōu)先級的中斷,可用軟件方式先關(guān)閉CPU對中斷的響應(yīng),在中斷處理函數(shù)返回之前,再開放中斷;B、外部電平觸發(fā)的中斷信號不會被鎖存.若在外部電平出現(xiàn)時被中斷屏蔽,而在中斷識別之前,電平消失,則它被完全忽略---中斷處理本身不能鎖存外部電平請求;C、INT0、T0、INT1、T1的中斷標志在CPU響應(yīng)中斷之后被自動清0,但是串口中斷標志RI/TI和T2的中斷標志TF2不會自動被清0,必須在軟件中手工地清0,否則會立即產(chǎn)生重復(fù)中斷,程序陷入死循環(huán);對于串口中斷,通常還要判斷是RI還是TI中斷;D、為了提高中斷響應(yīng)的實時性,中斷服務(wù)程序應(yīng)盡量簡短,并避免使用復(fù)雜的變量類型及算術(shù)運算;通常在中斷服務(wù)程序中使用一些標志,由主程序或相應(yīng)背景程序根據(jù)標志做響應(yīng)的處理;

關(guān)鍵詞: 51單片機中斷系

最近更新

關(guān)于本站 管理團隊 版權(quán)申明 網(wǎng)站地圖 聯(lián)系合作 招聘信息

Copyright © 2005-2018 創(chuàng)投網(wǎng) - www.mallikadua.com All rights reserved
聯(lián)系我們:33 92 950@qq.com
豫ICP備2020035879號-12