01
什么是中斷
前面的文章中我舉上課的例子簡單描述了中斷,那么單片機系統里中斷是什么呢?
中斷,是指當計算機執行正常程序時,系統中出現某些急需處理的異常情況和特殊請求,CPU暫時中止正在運行的程序,轉去對隨機發生的更為緊迫的事件進行處理,處理完畢后,CPU自動返回原來的程序繼續執行。
實現中斷功能的硬件和軟件系統稱為中斷系統。能向CPU發出中斷請求的事件稱為中斷源。
若有多個中斷源同時請求中斷時,或者CPU正在處理某外部事件時,又有另一外部事件申請中斷,CPU通常會根據中斷源的緊急程度,將其進行排列,規定每個中斷源都有一個中斷優先級。
中斷優先級可由硬件排隊或軟件排隊來設定,CPU按其優先順序處理中斷源的中斷請求。優先級高的事件可以中斷CPU正在處理的低級的中斷服務程序,待完成了高級中斷服務程序之后,再繼續執行被中斷了的低級中斷服務程序,這就是中斷的嵌套。
02
中斷源與中斷優先級
C51有如下5個中斷源:
? INT0(P3.2)外部中斷0。當IT0(TCON.0)=0時,低電平有效;
當IT0(TCON.0)=1時,下降沿有效。
? INT1(P3.3)外部中斷1。當IT1(TCON.2)=0時,低電平有效;
當IT1(TCON.2)=1時,下降沿有效。
? TF0定時/計數器T0溢出中斷。
? TF1定時/計數器T1溢出中斷。
? RX,TX串行中斷。
C52又增加了一個中斷源,即定時/計數器T2溢出中斷。
中斷優先級是在列表越前面的優先級又高,表中列出了默認優先級,數字越小的優先級越高。當然也可以通過設置改變這個順序。
當然現在新上市的51單片機可能包含更多的中斷源,但是基本的這幾個肯定都有的,其他額外添加的也是大同小異,都能根據芯片手冊看明白。比如STC89系列單片機就有8個中斷源,如圖:
03
中斷控制寄存器
51單片機的中斷相關控制寄存器包括了中斷控制寄存器(Interrupt Enable register,IE)和中斷優先級控制寄存器(Interrupt Priority register,IP),前者用于對 MCS-51單片機的中斷工作狀態進行控制,后者用于對MCS-51單片機的中斷優先級進行控制。
允許中斷寄存器IE的各位定義如下:
EA是總中斷允許位。當EA=0時,禁止所有中斷;當EA=1時,每個中斷源是允許還是禁止由各自的允許位確定。
ET2是定時器2中斷允許位。當ET2=0時,禁止定時器2中斷。
ES是串行口中斷允許位。當ES=0時,禁止串行口中斷。
ET1是定時器1中斷允許位。當ET1=0時,禁止定時器1中斷。
EX1是外部中斷1允許位。當EX1=0時,禁止外部中斷1。
ET0是定時器0中斷允許位。當ET0=0時,禁止定時器0中斷。
EX0是外部中斷0允許位。當EX0=0時,禁止外部中斷0。
中斷優先級寄存器IP的各位定義如下:
PT2是定時器2中斷優先級設定位。
PS是串行口中斷優先級設定位。
PT1是定時器1中斷優先級設定位。
PX1是外部中斷1優先級設定位。
PT0是定時器0中斷優先級設定位。
PX0是外部中斷0優先級設定位。
IP寄存器中各位均具有以下特點,即當為0時,為低中斷優先級;當為1時,為高中斷優先級。系統復位后,IP寄存器中各位均為0,即此時全部設定為低中斷優先級。在中斷執行過程中,低優先級中斷可被高優先級中斷所中斷,反之不能。
另外,同級的中斷不能互相中斷。當幾個同級的中斷源同時向CPU申請中斷時,CPU按硬件次序排定優先權,依次為外部中斷0(INT0)、定時/計數器T0溢出中斷、外部中斷1(INT1)、定時/計數器T1溢出中斷、串行口中斷、定時/計數器T2溢出中斷。
-
51單片機
+關注
關注
274文章
5702瀏覽量
123493 -
中斷系統
+關注
關注
1文章
96瀏覽量
61015 -
STC89
+關注
關注
1文章
20瀏覽量
16280 -
中斷控制器
+關注
關注
0文章
59瀏覽量
9452 -
定時器中斷
+關注
關注
0文章
49瀏覽量
11167
發布評論請先 登錄
相關推薦
評論