在開始寫中斷函數之前,我們來一起回顧一下,單片機的中斷系統。
中斷的意思(學習過微機原理與接口技術的同學,沒學過單片機,也應該知道),我們在這裡就不講了,首先來回憶下中斷系統涉及到哪些問題。
(1)中斷源:中斷請求信號的來源。(8051有3個內部中斷源T0,T1,串行口,2個外部中斷源INT0,INT1(這兩個低電平有效,上面的那個橫槓不知道怎麼加上去))
(2)中斷響應與返回:CPU採集到中斷請求信號,怎樣轉向特定的中斷服務子程序,並在執行完之後返回被中斷程序繼續執行。期間涉及到CPU響應中斷的條件,現場保護,現場恢復。
(3)優先級控制:中斷優先級的控制就形成了中斷嵌套(8051允許有兩級的中斷嵌套,優先權順序為INT0,T0,INT1,T1,串行口),同一個優先級的中斷,還存在優先權的高低。優先級是可以編程的,而優先權是固定的。
80C51的原則是①同優先級,先響應高優先權②低優先級能被高優先級中斷③正在進行的中斷不能被同一級的中斷請求或低優先級的中斷請求中斷。
80C51的中斷系統涉及到的中斷控制有中斷請求,中斷允許,中斷優先級控制
(1)3個內部中斷源T0,T1,串行口,2個外部中斷源INT0,INT1
(2)中斷控制寄存器:定時和外中斷控制寄存器TCON(包括T0、T1,INT0、INT1),串行控制寄存器SCON,中斷允許寄存器IE,中斷優先級寄存器IP
具體的是什麼,包括哪些標誌位,在這裡不講了,所有書上面都會講。
在這裡我們講下注意的事項
(1)CPU響應中斷後,TF0(T0中斷標誌位)和TF1由硬件自動清0。
(2)CPU響應中斷後,在邊沿觸發方式下,IE0(外部中斷INT0請求標誌位)和IE1由硬件自動清零;在電平觸發方式下,不能自動清楚IE0和IE1。所以在中斷返回前必須撤出INT0和INT1引腳的低電平,否則就會出現一次中斷被CPU多次響應。
(3)串口中斷中,CPU響應中斷後,TI(串行口發送中斷請求標誌位)和RI(接收中斷請求標誌位)必須由軟件清零。
(4)單片機復位後,TCON,SCON給位清零。
C51語言允許用戶自己寫中斷服務子程序(中斷函數)
首先來了解程序的格式:
void 函數名() interrupt m [using n]
{}
關鍵字 interrupt m [using n]
在開始寫中斷函數之前,我們來一起回顧一下,單片機的中斷系統。
中斷的意思(學習過微機原理與接口技術的同學,沒學過單片機,也應該知道),我們在這裡就不講了,首先來回憶下中斷系統涉及到哪些問題。
(1)中斷源:中斷請求信號的來源。(8051有3個內部中斷源T0,T1,串行口,2個外部中斷源INT0,INT1(這兩個低電平有效,上面的那個橫槓不知道怎麼加上去))
(2)中斷響應與返回:CPU採集到中斷請求信號,怎樣轉向特定的中斷服務子程序,並在執行完之後返回被中斷程序繼續執行。期間涉及到CPU響應中斷的條件,現場保護,現場恢復。
(3)優先級控制:中斷優先級的控制就形成了中斷嵌套(8051允許有兩級的中斷嵌套,優先權順序為INT0,T0,INT1,T1,串行口),同一個優先級的中斷,還存在優先權的高低。優先級是可以編程的,而優先權是固定的。
80C51的原則是①同優先級,先響應高優先權②低優先級能被高優先級中斷③正在進行的中斷不能被同一級的中斷請求或低優先級的中斷請求中斷。
80C51的中斷系統涉及到的中斷控制有中斷請求,中斷允許,中斷優先級控制
(1)3個內部中斷源T0,T1,串行口,2個外部中斷源INT0,INT1
(2)中斷控制寄存器:定時和外中斷控制寄存器TCON(包括T0、T1,INT0、INT1),串行控制寄存器SCON,中斷允許寄存器IE,中斷優先級寄存器IP
具體的是什麼,包括哪些標誌位,在這裡不講了,所有書上面都會講。
在這裡我們講下注意的事項
(1)CPU響應中斷後,TF0(T0中斷標誌位)和TF1由硬件自動清0。
(2)CPU響應中斷後,在邊沿觸發方式下,IE0(外部中斷INT0請求標誌位)和IE1由硬件自動清零;在電平觸發方式下,不能自動清楚IE0和IE1。所以在中斷返回前必須撤出INT0和INT1引腳的低電平,否則就會出現一次中斷被CPU多次響應。
(3)串口中斷中,CPU響應中斷後,TI(串行口發送中斷請求標誌位)和RI(接收中斷請求標誌位)必須由軟件清零。
(4)單片機復位後,TCON,SCON給位清零。
C51語言允許用戶自己寫中斷服務子程序(中斷函數)
首先來了解程序的格式:
void 函數名() interrupt m [using n]
{}
關鍵字 interrupt m [using n]