单片机的中断系统课件.pptx
5個中斷源它們分別是:INT0、INT1、C0/T0、C1/T1、串行口中斷;
具有優先順序管理功能,即可分為2個優先順序,其中每個中斷源的優先順序可由程式指定;
每個中斷源都有各自的中斷標誌位。
;IT0=0電平觸發
IT0=1邊沿觸發;12.3中斷的嵌套與優先順序處理;12.4中斷的回應過程;電腦中也是採用的這種方法,五個中斷源,每個中斷產生後都到一個固定的地方去找處理這個中斷的程式,當然在去之前首先要保存下麵將執行的指令的地址,以便處理完中斷後回到原來的地方繼續往下執行程式。
;1、保護中斷點,即保存下一將要執行的指令的地址,就是把這個地址送入堆疊。
2、尋找中斷入口,根據5個不同的中斷源所產生的中斷,查找5個不同的入口地址。以上工作是由電腦自動完成的,與編程者無關。;3、保護現場,執行中斷處理程式。
4、恢復現場,中斷返回:執行完中斷指令後,就從中斷處返回到主程序,繼續執行。;中斷處理過程一般分為3階段:中斷回應、中斷處理、中斷返回。其流程圖如下:;中斷受阻的情況
;關中斷;12.5中斷請求源;;12.6TCON控制寄存器;12.7中斷系統結構;優先順序:單片機採用了自然優先順序和人工設置高、低優先順序的策略,即可以由程式員設定那些中斷是高優先順序、哪些中斷是低優先順序,由於只有兩級,必有一些中斷處於同一級別,處於同一級別的,就由自然優先順序確定。;12.8五個中斷源的自然優先順序與中斷服務入口地址;這樣寫的目的,就是為了讓出中斷源所佔用的向量地址。當然,在程式中沒用中斷時,直接從0000H開始寫程式,在原理上並沒有錯,但在實際工作中最好不這樣做。
;12.9外部中斷(P3.2/P3.3);兩種觸發方式的區別;12.10定時器/計數器中斷;12.11串行口接收/發送中斷
;12.12中斷允許控制寄存器IE;12.13中斷優先順序控制寄存器IP;開機時,每個中斷都處於低優先順序,我們可以用指令對優先順序進行設置。;例1:設有如下要求,將T0、外中斷1設為高優先順序,其他為低優先順序,求IP的值。
IP的首3位沒用,可任意取值,設為000,後面根據要求寫就可以了
XXXPSPT1PX1PT0PX0
00000110
因此,最終,IP的值就???06H。;例2:在上例中,如果5個中斷請求同時發生,求中斷回應的次序。
答:回應次序為:定時器0->外中斷1->外中斷0->即時器1->串行中斷。;例3如果我們要設置允許外中斷1,定時器1中斷允許,其他不允許,則IE可以為:;12.15基本規則;在下列三種情況之一時,CPU將封鎖對中斷的回應:
1.????CPU正在處理一個同級或更高級別的中斷請求。
2.??????現行的機器週期不是當前正執行指令的最後一個週期。我們知道,單片機有單週期、雙週期、三週期指令,當前執行指令是單字節沒有關係,如果是雙位元組或四位元組的,就要等整條指令都執行完了,才能回應中斷。;;12.16注意的問題;一個完整的主程序看起來應該是這樣的:;;