(七)c52學習之旅 中斷

2021-07-22 04:32:59 字數 4854 閱讀 4113

中斷,顧名思義,在系統執行任務時遇到特定事件會打斷當前任務並保留當前任務而去執行其他任務。

中斷在微控制器開發中是不可或缺的一項,做好準備,搞定它。

(一)、中斷結構

下面是對這幾個中斷源的介紹:

1、int0(p3.2)可由it0(tcon.0)選擇其為低電平有效還是下降沿有效。當cpu檢測到p3.2引腳上出現有效的中斷訊號時,中斷標誌ie0(tcon.1)

置1,向cpu申請中斷。

2、int1(p3.3)可由it1(tcon.2)選擇其為低電平有效還是下降沿有效。當cpu檢測到p3.3引腳上出現有效的中斷訊號時,中斷標誌ie1(tcon.3)置1,向cpu申請中斷。

3、片內定時/計數器t0溢位中斷請求標誌,tf0(tcon.5)。當定時/計數器t0發生溢位時,置位tf0,並向cpu申請中斷。

4、片內定時/計數器t1溢位中斷請求標誌,tf1(tcon.7)。當定時/計數器t1發生溢位時,置位tf1,並向cpu申請中斷。

5、ri(scon.0)或ti(scon.1),序列口中斷請求標誌。當序列口接收完一幀序列資料時置位ri或當序列口傳送完一幀序列資料時置位ti,向cpu申請中斷。

(二)、4個特殊暫存器

分別是scon,ie,ip,tcon。這4個中斷分別控制了不同的開關。

1、scon的中斷標誌

(1)ri(scon.0),序列口接收中斷標誌位。當允許序列口接收資料時,每接收完乙個序列幀,由硬體置位ri。注意,ri必須由軟體清除

(2)ti(scon.1),序列口傳送中斷標誌位。當cpu將乙個傳送資料寫入序列口傳送緩衝器時,就啟動了傳送過程。每傳送完乙個序列幀,由硬體置

位ti。cpu響應中斷時,不能自動清除ti,ti必須由軟體清除

2、ie中斷允許控制

ex0(ie.0):外部中斷0允許位;

et0(ie.1):定時/計數器t0中斷允許位;

ex1(ie.2):外部中斷0允許位;

et1(ie.3):定時/計數器t1中斷允許位;

es (ie.4):序列口中斷允許位;

ea (ie.7): cpu中斷允許(總允許)位。

3、ip中斷優先順序控制

80c52微控制器有兩個中斷優先順序,即可實現二級中斷服務巢狀。每個中斷源的中斷優先順序都是由中斷優先順序暫存器ip中的相應位的狀態來規定的 。

px0(ip.0):外部中斷0優先順序設定位;

pt0(ip.1):定時/計數器t0優先順序設定位;

px1(ip.2):外部中斷0優先順序設定位;

pt1(ip.3):定時/計數器t1優先順序設定位;

ps (ip.4):序列口優先順序設定位;

pt2(ip.5):定時/計數器t2優先順序設定位。

4、控制暫存器tcon,後面的定時器再分析。

同一優先順序中的中斷申請不止乙個時,則有中斷優先權排隊問題。同一優先順序的中斷優先權排隊,由中斷系統硬體確定的自然優先順序形成,其排列如所示:

(三)、微控制器的中斷優先順序有三條原則:

1、cpu同時接收到幾個中斷時,首先響應優先級別最高的中斷請求。

2、正在進行的中斷過程不能被新的同級或低優先順序的中斷請求所中斷。

3、正在進行的低優先順序中斷服務,能被高優先順序中斷請求所中斷。

為了實現上述後兩條原則,中斷系統內部設有兩個使用者不能定址的優先順序狀態觸發器。其中乙個置1,表示正在響應高優先順序的中斷,它將阻斷後來所有的中斷請求;另乙個置1,表示正在響應低優先順序中斷,它將阻斷後來所有的低優先順序中斷請求。

(四)、中斷響應條件

1、中斷源有中斷請求;

2、此中斷源的中斷允許位為1;

3、cpu開中斷(即ea=1)。

以上三條同時滿足時,cpu才有可能響應中斷

(五)、一次中斷過程的完整步驟

1、中斷請求:中斷事件一旦發生,中斷源就提交中斷請求(將中斷

標誌位置1),欲請求cpu暫時放下目前的工作轉向為該中斷作專項

服務。

2、中斷使能:雖然中斷源提交了中斷請求,但是,能否得到cpu的

響應,還要取決於該中斷請求能否通過若干關卡送達cpu(中斷使能

位等於1,關卡放行),這些關卡有以下兩類:

此中斷源的中斷允許位;

全域性中斷允許位。

3、中斷響應:如果一路放行,則cpu響應該中斷請求,記錄斷點,

跳轉到中斷服務程式。對於int和tmr中斷,中斷響應時中斷標誌位

會被硬體自動清零。

4、中斷處理:對中斷源進行有針對性的服務。

5、中斷返回:返回到主程式斷點處,繼續執行主程式。

1、3、5由硬體自動完成。2、4是使用者程式設計完成

(六)、中斷請求標記的置位和清除

1、外部中斷

下降沿觸發方式條件下,在產生中斷請求時由硬體置位(置1)中

斷請求標記,當cpu響應中斷時由硬體清除(清0 )

電平觸發方式條件下,中斷請求標記由外部中斷源控制。具體

是:當cpu檢測到int引腳上出現低電平時,中斷標誌ie由硬體置

位,int引腳上出現高電平時,中斷標誌ie由硬體清除

2、定時器中斷

計數溢位時由硬體置位中斷請求標記,當cpu響應中斷由硬體清

3、串列埠中斷

序列口接收完一幀資料後請求中斷,由硬體置位中斷請求標記

ri,ri必須由軟體清除

序列口傳送完一幀資料後請求中斷,由硬體置位中斷請求標記

ti,ti必須由軟體清除

(七)、中斷使能位

每個中斷源的3個位:

1、pxn:(priority)外部中斷優先順序定義位。

• =0:低優先順序; =1:高優先順序;

• 也可不設定,上電時,預設=0:低優先順序。

2、exn:外部中斷使能位。

• =0:使不能; =1:使能;

• 上電時,預設=0:使不能

3、ien:外部中斷請求標記位。

• =0:無中斷請求; =1:有中斷請求;

• 上電時,預設=0:無中斷請求。

所有中斷源相關的1個位:

ea (enable all) :全域性中斷使能位。

• =0:使不能; =1:使能;

• 上電時,預設=0:使不能

int中斷多了1個需要設定的位:

itn(int trigger)外部中斷觸發方式控制位。

• =0:電平觸發方式; =1:下降沿觸發方式

• 也可不設定,上電時,預設=0:電平觸發方式

(八)、中斷號

1、外部中斷0(int0),中斷號0, 中斷入口位址0003h

2、定時/計數器0(t1),中斷號1 ,中斷入口位址000bh

3、外部中斷1(int1),中斷號2 入口位址0013h

4、定時/計數器1(t1)中斷號3 入口位址001bh

5、序列口中(ri/ti)中斷號4 入口位址0023h

上面是c51的5個中斷源,下面是c52多出來的乙個中斷源

6、定時/計數器2(t2)中斷號5,入口位址002bh

定義中斷函式的一般形式:

viod 函式名() interrupt n //n是中斷號

使用中斷函式時應遵循以下規則:

1、 中斷函式不能進行引數轉遞;

2、在任何情況下,都不能直接呼叫中斷函式。

(五)c52學習之旅 靜態數碼管

數碼管的可顯示內容 數字 小數點和部分英文本元 符號。特點 1 自發光 亮度高,特別適合環境亮度低的場合使用。2 牢固,不怕衝擊。數碼管是一種半導體發光器件,其基本單元是發光二極體。數碼管分共陰和共陽,在開發過程要區分好。從圖里很快可以發現,共陰和共陽,無非就是乙個一端接地,另乙個一端接電源。這裡我...

STC89C52中斷系統

80c51的中斷系統有5個中斷源 80c52有6個 2個優先順序,可實現二級中斷巢狀。根據它的原理圖就可以看出,80c51一共有4個暫存器 tcon,scon,ie,ip 附件有她們的詳細的暫存器示例圖。img upload attachment 88246 4f31826e 53a5 30c4 8...

C 學習之旅 陣列

二 c 11新增的模板類array 三 stl模板中的陣列vector typename arrayname arraysize 陣列宣告必須指明 儲存在陣列中每個元素的型別 typename 陣列名稱 arrayname 陣列大小 arraysize 必須是整型常數或者常數表示式。陣列只能在定義的...