<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è) > 嵌入式系統 > 設計應用 > MCS-51單片機的中斷系統(1)

MCS-51單片機的中斷系統(1)

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò ) 收藏
在CPU 與外設交換信息時(shí),存在著(zhù)一個(gè)快速的 CPU 與慢速的外設之間的矛盾。為解決這個(gè)問(wèn)題,發(fā)展了中斷的概念。
單片機在某一時(shí)刻只能處理一個(gè)任務(wù),當多個(gè)任務(wù)同時(shí)要求單片機處理時(shí),這一要求應該怎么實(shí)現呢?通過(guò)中斷可以實(shí)現多個(gè)任務(wù)的資源共享。
中斷現象在現實(shí)生活中也會(huì )經(jīng)常遇到,例如,你在看書(shū)——手機響了——你在書(shū)上作個(gè)記號——你接通電話(huà)和對方聊天——談話(huà)結束——從書(shū)上的記號處繼續看書(shū)。這就是一個(gè)中斷過(guò)程。通過(guò)中斷,你一個(gè)人在一特定的時(shí)刻,同時(shí)完成了看書(shū)和打電話(huà)兩件事情。用計算機語(yǔ)言來(lái)描述,所謂的中斷就是,當 CPU 正在處理某項事務(wù)的時(shí)候,如果外界或者內部發(fā)生了緊急事件,要求 CPU 暫停正在處理工作而去處理這個(gè)緊急事件,待處理完后,再回到原來(lái)中斷的地方,繼續執行原來(lái)被中斷的程序,這個(gè)過(guò)程稱(chēng)作中斷。
從中斷的定義我們可以看到中斷應具備中斷源、中斷響應、中斷返回這樣三個(gè)要素。中斷源發(fā)出中斷請求,單片機對中斷請求進(jìn)行響應,當中斷響應完成后應進(jìn)行中斷返回,返回被中斷的地方繼續執行原來(lái)被中斷的程序。

MCS-51單片機中斷系統

MCS-51單片機的中斷源

MCS-51單片機的中斷源共有兩類(lèi),它們分別是:外部中斷和內部中斷
1. 外部中斷源
? 外部中斷0(#INT0):來(lái)自P3.2引腳,采集到低電平或者下降沿時(shí),產(chǎn)生中斷請求。
? 外部中斷1(#INT1):來(lái)自#P3.3引腳,采集到低電平或者下降沿時(shí),產(chǎn)生中斷請求。
2. 內部中斷源
? 定時(shí)器∕計數器0(T0):定時(shí)功能時(shí),計數脈沖來(lái)自片內;計數功能時(shí),計數脈沖來(lái)自片外P3.4引腳。發(fā)生溢出時(shí),產(chǎn)生中斷請求。
? 定時(shí)器∕計數器1(T1):定時(shí)功能時(shí),計數脈沖來(lái)自片內;計數功能時(shí),計數脈沖來(lái)自片外P3.5引腳。發(fā)生溢出時(shí),產(chǎn)生中斷請求。
? 串行口:為完成串行數據傳送而設置。單片機完成接受或發(fā)送一組數據時(shí),產(chǎn)生中斷請求。

中斷控制的專(zhuān)用寄存器

MCS-51單片機為用戶(hù)提供了四個(gè)專(zhuān)用寄存器,來(lái)控制單片機的中斷系統。

1. 定時(shí)器控制寄存器(TCON)
該寄存器用于保存外部中斷請求以及定時(shí)器的計數溢出。進(jìn)行字節操作時(shí),寄存器地址為88H。按位操作時(shí),各位的地址為88H~8FH。寄存器的內容及位地址表示如下:

位地址8FH8EH8DH8CH8BH8AH89H88H
位符號TF1TR1TF0TR0IE1IT1IE0IT0

? IT0 和IT1——外部中斷請求觸發(fā)方式控制位
IT0 (IT1)=1 脈沖觸發(fā)方式,下降沿有效
IT0 (IT1)=0 電平觸發(fā)方式,低電平有效
?IE0和IE1——外中斷請求標志位
當CPU采樣到#INT0(或#INT1)端出現有效中斷請求時(shí),IE0(IE1)位由硬件置“ 1”。當中斷響應完成轉向中斷服務(wù)程序時(shí),由硬件把IE (或IE )清零。
?TR0 和TR1——定時(shí)器運行控制位
TR0 (TR1 )=0 定時(shí)器/計數器不工作
TR0 (TR1 )=1 定時(shí)器/計數器開(kāi)始工作
? TF0和TF1——計數溢出標志位
當計數器產(chǎn)生計數溢出時(shí),相應的溢出標志位由硬件置“1”。當轉向中斷服務(wù)時(shí),再由硬件自動(dòng)清“0”。計數溢出標志位的使用有兩種情況:采用中斷方式時(shí),作中斷請求標志位來(lái)使用;采用查詢(xún)方式時(shí),作查詢(xún)狀態(tài)位來(lái)使用。

2. 串行口控制寄存器(SCON)
進(jìn)行字節操作時(shí),寄存器地址為98H。按位操作時(shí),各位的地址為98H~9FH。寄存器的內容及位地址表示如下:

位地址9FH9EH9DH9CH9BH9AH99H98H
位符號SM0SM1SM2RENTB8RB8TIRI


其中與中斷有關(guān)的控制位共2位:
? TI——串行口發(fā)送中斷請求標志位
當發(fā)送完一幀串行數據后,由硬件置“1”;在轉向中斷服務(wù)程序后,用軟件清“0”。
? RI——串行口接收中斷請求標志位
當接收完一幀串行數據后,由硬件置“1”;在轉向中斷服務(wù)程序后,用軟件清“0”。串行中斷請求由TI和RI的邏輯或得到。就是說(shuō),無(wú)論是發(fā)送標志還是接收標志,都會(huì )產(chǎn)生串行中斷請求。

3. 中斷允許控制寄存器(IE)
進(jìn)行字節操作時(shí),寄存器地址為0A8H。按位操作時(shí),各位的地址為0A8H~0AFH。寄存器的內容及位地址表示如下:
位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H
位符號EA//ESET1EX1ET0EX0
其中與中斷有關(guān)的控制位共6位:
? EA——中斷允許總控制位
EA=0 中斷總禁止,禁止所有中斷
EA=1 中斷總允許,總允許后中斷的禁止或允許由各中斷源的中斷允許控制位進(jìn)行設置。
?EX0和EX1——外部中斷允許控制位
EX0(EX1)=0 禁止外部中斷
EX0(EX1)=1 允許外部中斷
?ET0和ET1——定時(shí)器/計數器中斷允許控制位
ET0(ET1)=0 禁止定時(shí)器/計數器中斷
ET0(ET1)=0 允許定時(shí)器/計數器中斷
?ES——串行中斷允許控制位
ES=0 禁止串行中斷
ES=1 允許串行中斷
可見(jiàn),MCS-51單片機通過(guò)中斷允許控制寄存器對中斷的允許(開(kāi)放)實(shí)行兩級控制。即以EA位作為總控制位,以各中斷源的中斷允許位作為分控制位。當總控制位為禁止時(shí),關(guān)閉整個(gè)中斷系統,不管分控制為狀態(tài)如何,整個(gè)中斷系統為禁止狀態(tài);當總控制位為允許時(shí),開(kāi)放中斷系統,這時(shí)才能由各分控制位設置各自中斷的允許與禁止。
MCS-51單片機復位后(IE)=00H,因此中斷系統處于禁止狀態(tài)。單片機在中斷響應后不會(huì )自動(dòng)關(guān)閉中斷。因此在轉中斷服務(wù)程序后,應根據需要使用有關(guān)指令禁止中斷,即以軟件方式關(guān)閉中斷。

4. 中斷優(yōu)先級控制寄存器(IP)
MCS-51單片機的中斷優(yōu)先級控制比較簡(jiǎn)單,因為系統只定義了高、低2個(gè)優(yōu)先級。高優(yōu)先級用“1”表示,低優(yōu)先級用“0”表示。各中斷源的優(yōu)先級由中斷優(yōu)先級寄存器(IP)進(jìn)行設定。IP寄存器地址0B8H,位地址為0BFH~0B8H。寄存器的內容及位地址表示如下:
位地址0BFH0BEH0BDH0BCH0BBH0BAH0B9H0B8H
位符號///PSPT1PX1PT0PX0
其中:
PX0——外部中斷0優(yōu)先級設定位;
PT0——定時(shí)中斷0優(yōu)先級設定位;
PX1——外部中斷1優(yōu)先級設定位;
PT1——定時(shí)中斷1優(yōu)先級設定位;
PS——串行中斷優(yōu)先級設定位。
以上各位設置為“0”時(shí),則相應的中斷源為低優(yōu)先級;設置為“1”時(shí),則相應的中斷源為高優(yōu)先級。
優(yōu)先級的控制原則是:
? 低優(yōu)先級中斷請求不能打斷高優(yōu)先級的中斷服務(wù);但高優(yōu)先級中斷請求可以打斷低優(yōu)先級的中斷服務(wù),從而實(shí)現中斷嵌套。
? 如果一個(gè)中斷請求已被響應,則同級的其它中斷服務(wù)將被禁止。即同級不能嵌套。
? 如果同級的多個(gè)中斷同時(shí)出現,則按CPU查詢(xún)次序確定哪個(gè)中斷請求被響應。其查詢(xún)次序為:外部中斷0→定時(shí)中斷→外部中斷→定時(shí)中斷→串行中斷。
中斷優(yōu)先級控制,除了中斷優(yōu)先級控制寄存器之外,還有兩個(gè)不可尋址的優(yōu)先級狀態(tài)觸發(fā)器。其中一個(gè)用于指示某一高優(yōu)先級中斷正在進(jìn)行服務(wù),從而屏蔽其它高優(yōu)先級中斷;另一個(gè)用于指示某一低優(yōu)先級中斷正在進(jìn)行服務(wù),從而屏蔽其它低優(yōu)先級中斷,但不能屏蔽高優(yōu)先級的中斷。此外,對于同級的多個(gè)中斷請求查詢(xún)的次序安排,也是通過(guò)專(zhuān)門(mén)的內部邏輯實(shí)現的。



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

評論


相關(guān)推薦

技術(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>