上一篇教程我們簡單認(rèn)識和學(xué)習(xí)了中斷怎么使用,認(rèn)識了單片機(jī)里面的幾種中斷源,學(xué)習(xí)了怎么配置中斷的設(shè)置
這里簡單的復(fù)習(xí)一下幾種中斷源
中斷符號 | 中斷名稱 |
---|---|
IE0 | 外部中斷0(INT0) |
ET0 | Timer0中斷 |
IE1 | 外部中斷1(INT1) |
ET1 | Timer1中斷 |
ES | UART串口中斷 |
ET2 | Timer2中斷 |
陽光明媚的秋日,你坐在琴桌前輕撫古琴,這時(shí)候門外傳來敲門聲,你正要起身,身旁茶桌上的水壺里的水燒開了……
你起身,從爐上拿起燒水壺放在一旁,再來到門前打開了門……
提起水壺和開門是兩個(gè)事件,當(dāng)兩個(gè)事件發(fā)生的時(shí)候總要有順序的,先提起水壺再開門或者先開門后提起水壺所造成的結(jié)果是不同的。往往為了安全,我們會先提起水壺再去開門,這就是我們處理兩個(gè)事件的順序
在單片機(jī)中,倘若同一個(gè)時(shí)刻Timer0觸發(fā)了中斷,Timer1也觸發(fā)了中斷,這時(shí)候外部中斷又觸發(fā)了。單片機(jī)會先執(zhí)行哪個(gè)中斷操作呢?
是不是隨意執(zhí)行一個(gè)操作呢?
顯然不是的,為了保證程序的有序執(zhí)行,單片機(jī)根據(jù)“中斷優(yōu)先級”判斷中斷是否需要優(yōu)先執(zhí)行
優(yōu)先級越高的中斷,越優(yōu)先執(zhí)行
單片機(jī)的默認(rèn)中斷優(yōu)先級
單片機(jī)里面,已經(jīng)對中斷的優(yōu)先級進(jìn)行設(shè)置,這是C51的所有中斷優(yōu)先級
中斷優(yōu)先級(數(shù)字越大越優(yōu)先) | 中斷符號 | 中斷名稱 |
---|---|---|
6 | IE0 | 外部中斷0(INT0) |
5 | ET0 | Timer0中斷 |
4 | IE1 | 外部中斷1(INT1) |
3 | ET1 | Timer1中斷 |
2 | ES | UART串口中斷 |
1 | ET2 | Timer2中斷 |
中斷的嵌套
(1)低優(yōu)先級的中斷和高優(yōu)先級的中斷同時(shí)觸發(fā),單片機(jī)優(yōu)先執(zhí)行高優(yōu)先級的中斷
由于中斷A的優(yōu)先級大于中斷B的優(yōu)先級,所以單片機(jī)先處理完中斷A的任務(wù),再跳轉(zhuǎn)處理中斷B的任務(wù),最后跳轉(zhuǎn)回原來的位置,繼續(xù)執(zhí)行程序
(2)低優(yōu)先級中斷執(zhí)行過程中高優(yōu)先級中斷觸發(fā)中斷,單片機(jī)跳轉(zhuǎn)執(zhí)行高優(yōu)先級中斷,再返回執(zhí)行低優(yōu)先級中斷,執(zhí)行結(jié)束后返回程序
中斷A的優(yōu)先級大于中斷B的優(yōu)先級,中斷B觸發(fā),單片機(jī)跳轉(zhuǎn)處理中斷B的任務(wù),執(zhí)行到一半的時(shí)候,中斷A觸發(fā),由于中斷A的優(yōu)先級更高,所以單片機(jī)先去處理中斷A的任務(wù),處理完再跳轉(zhuǎn)回來處理中斷B的任務(wù)
(3)高優(yōu)先級的中斷處理的過程中低優(yōu)先級的中斷觸發(fā),單片機(jī)優(yōu)先處理完高優(yōu)先級的中斷的任務(wù),再執(zhí)行低優(yōu)先級的中斷的任務(wù)
中斷A的優(yōu)先級大于中斷B的優(yōu)先級,中斷A觸發(fā),單片機(jī)先去執(zhí)行中斷A,執(zhí)行的過程中中斷B觸發(fā),由于中斷B的優(yōu)先級小于中斷A的優(yōu)先級,所以單片機(jī)在執(zhí)行完中斷A后才會執(zhí)行中斷B的任務(wù)
上面中斷的執(zhí)行過程就叫中斷的嵌套
到此我們簡單的復(fù)習(xí)一下
中斷優(yōu)先級(數(shù)字越大越優(yōu)先) | 中斷符號 | 中斷名稱 |
---|---|---|
6 | IE0 | 外部中斷0(INT0) |
5 | ET0 | Timer0中斷 |
4 | IE1 | 外部中斷1(INT1) |
3 | ET1 | Timer1中斷 |
2 | ES | UART串口中斷 |
1 | ET2 | Timer2中斷 |
下面用這個(gè)圖示實(shí)踐以下中斷的嵌套
Timer0先觸發(fā),Timer0運(yùn)行的過程中Timer1觸發(fā),由于Timer1的優(yōu)先級不及Timer0,所以單片機(jī)執(zhí)行完Timer0才處理Timer1,在Timer1的處理過程中遇上了外部中斷INT0的觸發(fā),單片機(jī)先執(zhí)行INT0的任務(wù),再返回執(zhí)行Timer1的任務(wù),最后所有的任務(wù)都完成了以后,退回主程序
設(shè)置中斷優(yōu)先級
我們再看看單片機(jī)的默認(rèn)優(yōu)先級
中斷優(yōu)先級(數(shù)字越大越優(yōu)先) | 中斷符號 | 中斷名稱 |
---|---|---|
6 | IE0 | 外部中斷0(INT0) |
5 | ET0 | Timer0中斷 |
4 | IE1 | 外部中斷1(INT1) |
3 | ET1 | Timer1中斷 |
2 | ES | UART串口中斷 |
1 | ET2 | Timer2中斷 |
有的時(shí)候,如果使用默認(rèn)的優(yōu)先級,可能難以滿足我們對程序的需求,事實(shí)上,我們可以手動(dòng)設(shè)置單片機(jī)內(nèi)中斷的優(yōu)先級。
手動(dòng)設(shè)置單片機(jī)的優(yōu)先級涉及到一個(gè)寄存器
IP寄存器,0xB8,可位尋址
位 | 符號 | 說明 |
---|---|---|
7 | - | - |
6 | - | - |
5 | PT2 | Timer2優(yōu)先級設(shè)置 |
4 | PS | UART串口優(yōu)先級設(shè)置 |
3 | PT1 | Timer1優(yōu)先級設(shè)置 |
2 | PX1 | 外部中斷INT1優(yōu)先級設(shè)置 |
1 | PT0 | Timer0優(yōu)先級設(shè)置 |
0 | PX0 | 外部中斷INT0優(yōu)先級設(shè)置 |
當(dāng)我們給其中的一位寫上1的時(shí)候就說明我們把這一位的中斷優(yōu)先級提前了
舉個(gè)簡單的例子,如果我們要做一個(gè)簡單的秒表+時(shí)鐘電子鐘,秒表使用Timer0,時(shí)鐘使用Timer1,為了讓機(jī)器使用秒表的時(shí)候能讓時(shí)鐘正常走時(shí),所以我們把Timer1的優(yōu)先級提前,如下
PT1 = 1;
優(yōu)先級的設(shè)置我們會在后面的項(xiàng)目中用到的,后面用到的時(shí)候我也會跟大家細(xì)細(xì)說明的哦
-
單片機(jī)
+關(guān)注
關(guān)注
6062文章
44915瀏覽量
646676 -
中斷
+關(guān)注
關(guān)注
5文章
904瀏覽量
42507 -
串口
+關(guān)注
關(guān)注
14文章
1582瀏覽量
78584 -
中斷優(yōu)先級
+關(guān)注
關(guān)注
0文章
22瀏覽量
9530
發(fā)布評論請先 登錄
MCS-96系列單片機(jī)中斷優(yōu)先級的控制方法
單片機(jī)中斷優(yōu)先級應(yīng)用案例

關(guān)于51單片機(jī)中斷嵌套
單片機(jī)中斷多優(yōu)先級的軟件擴(kuò)展方法
單片機(jī)—中斷優(yōu)先級實(shí)驗(yàn)
STM32單片機(jī)優(yōu)先級的定義

如何設(shè)置51單片機(jī)的中斷優(yōu)先級
如何采用STM32單片機(jī)中斷向量控制器NVIC來分配優(yōu)先級的數(shù)量
解析單片機(jī)里的中斷優(yōu)先級

51單片機(jī)的中斷優(yōu)先級和中斷嵌套的詳細(xì)資料概述

為什么51單片機(jī)的默認(rèn)中斷優(yōu)先級都是低級及中斷嵌套

51單片機(jī)的中斷優(yōu)先級及中斷嵌套的詳細(xì)資料說明

單片機(jī)之中斷優(yōu)先級設(shè)置

STM8S105硬件中斷映射表和軟件中斷優(yōu)先級位

51單片機(jī)中斷優(yōu)先級都有啥?如何設(shè)置?

評論