<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51單片機---中斷系統

51單片機---中斷系統

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
一、單片機中斷系統

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

本文引用地址:http://dyxdggzs.com/article/201611/316839.htm

二、中斷控制寄存器
1、中斷允許控制寄存器IE(A8H)
中斷允許控制寄存器IE存儲在特殊功能寄存器區,字節地址是A8H,位地址從低到高依次是A8H,A9H,AAH,ABH,ACH,ADH,AFH;
寄存器IE控制著(zhù)CPU對中斷源總的開(kāi)放或禁止,以及對每個(gè)中斷源的開(kāi)放或禁止;
IE的格式如圖:

2、中斷優(yōu)先級控制寄存器IP(B8H)
中斷優(yōu)先級控制寄存器IP存儲在特殊功能寄存器區,字節地址是B8H,位地址從低到高依次是B8H,B9H,BAH,BBH,BCH,BDH,BEH,BFH;
IP用來(lái)鎖存優(yōu)先級的控制位,即:設定中斷源屬于兩級中斷中的哪一級;
(1)、中斷優(yōu)先級的響應:系統復位之后,IP的低5位全部被清0,并將所有中斷源設置為低優(yōu)先級中斷;如果幾個(gè)具有相同優(yōu)先級的中斷源同時(shí)向CPU申請中斷,那么,哪一個(gè)中斷源優(yōu)先得到中斷服務(wù),這一點(diǎn)取決于這些中斷源在CPU內部登記的排隊序號(就是中斷序號);CPU通過(guò)內部硬件查詢(xún)登記的中斷序號,按自然優(yōu)先級逐個(gè)響應各個(gè)中斷請求;中斷源在CPU內部登記的中斷序號是由硬件自動(dòng)形成的,無(wú)需人工手動(dòng)生成,其順序如下:INT0-->T0-->INT1-->T1-->RI/TI;
IP的格式如圖:

三、中斷響應
1、響應過(guò)程:
下列任何一種情況存在時(shí),中斷申請將被封鎖;
(1)、CPU當前正在執行一個(gè)同級或高一級的中斷服務(wù)程序;
(2)、CPU當前正在執行的那條指令還沒(méi)有執行完;
(3)、CPU當前正在執行的指令是RETI指令或這是對IE/IP寄存器進(jìn)行讀寫(xiě)操作的指令,執行這些指令之后,至少還要再執行一條指令才會(huì )響應中斷;
2、中斷入口地址:
中斷得到響應后,自動(dòng)清除中斷請求標志(對于串口中斷請求標志,要用軟件來(lái)清0),由硬件自動(dòng)將程序計數器PC的內容(斷點(diǎn)地址)壓入堆棧保護,然后將對應的中斷矢量(中斷入口地址)裝入程序計數器PC, 使程序轉到中斷服務(wù)程序中執行并完成響應的中斷服務(wù);
各個(gè)中斷源在程序存儲器ROM中的中斷入口地址和中斷序號如下表所示:

四、C51中斷程序
1、中斷服務(wù)程序的格式:
返回值類(lèi)型 中斷函數名([參數表]) [模式] [重入] interrupt <中斷序號n> [using m] //n∈[0,31],m∈[0,3],m和n不允許是表達式;
{
//中斷處理函數的實(shí)現代碼
}
對于中斷服務(wù)程序來(lái)說(shuō),函數不能有返回值和參數,所以,返回值類(lèi)型和參數類(lèi)型均寫(xiě)成void;
Keil C51使用特定的編譯器指令分配寄存器組;當前工作寄存器組由PSW中的RS1和RS0兩位設置,兩個(gè)位共有4個(gè)值[0,3],用using指定,;using關(guān)鍵字只能用于聲明終端服務(wù)函數,它在中斷服務(wù)函數入口處將當前寄存器組的值保存下來(lái),并在中斷服務(wù)函數中使用指定的寄存器組,在中斷服務(wù)函數推出之前,恢復原寄存器組;
例如:
void isr_service(void) interrupt 4 using 2
{
//.....;
}
2、 編寫(xiě)中斷服務(wù)函數時(shí)注意的事項:
A、若要在執行當前中斷處理函數時(shí)禁止更高優(yōu)先級的中斷,可用軟件方式先關(guān)閉CPU對中斷的響應,在中斷處理函數返回之前,再開(kāi)放中斷;
B、外部電平觸發(fā)的中斷信號不會(huì )被鎖存.若在外部電平出現時(shí)被中斷屏蔽,而在中斷識別之前,電平消失,則它被完全忽略---中斷處理本身不能鎖存外部電平請求;
C、INT0、T0、INT1、T1的中斷標志在CPU響應中斷之后被自動(dòng)清0,但是串口中斷標志RI/TI和T2的中斷標志TF2不會(huì )自動(dòng)被清0,必須在軟件中手工地清0,否則會(huì )立即產(chǎn)生重復中斷,程序陷入死循環(huán);對于串口中斷,通常還要判斷是RI還是TI中斷;
D、為了提高中斷響應的實(shí)時(shí)性,中斷服務(wù)程序應盡量簡(jiǎn)短,并避免使用復雜的變量類(lèi)型及算術(shù)運算;通常在中斷服務(wù)程序中使用一些標志,由主程序或相應背景程序根據標志做響應的處理;



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

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>