C51程式設計15 中斷篇(定時器中斷2)

2021-10-20 11:14:58 字數 1906 閱讀 9407

使用定時器/計數器中斷,需要將滿足以下的條件。

1)中斷總允許開啟 ea = 1;

2)中斷源允許開啟  et0 = 1或者 et1= 1;

3)設定定時器計/計數器的工作方式(設定tmod)

4)裝載定時器,設定計數器的初始計算值。

5)開啟定時器(tcon中的tr0 = 1或者tr1 = 1)

6)中斷服務函式

在滿足上面的條件後,就使用定時器了,但為了對定時器的4種方式更深入的了解,下面從邏輯圖上講解4種方式。

方式0:

邏輯結構圖

從上面的邏輯結構圖中,邏輯結構主要分為三個部分;

1)計數源:計數源可以選擇振盪器12分頻(機器週期);計數源也可以選擇t0(p3.4)引腳。當c/t = 0,選擇機器週期;當c/t = 1,選擇p3.4引腳。

2)定時器啟動控制:t0啟動控制關係為tr0&((!gate)+int0),當gate=0,啟動僅有tr0控制,tr0=1啟動定時器;當gate=1,需要啟動定時器啟動,需要保證tr0 = 1,還需要保證int0=1。 

3)計數器位數,tl0(5)+th0(8) = 13,因此方式0為13位的定時器/計數器。

注:1)選擇t0引腳計數,是負跳變(下降沿)的計數;

2)t1的啟動控制關係為tr1&((!gate)+int1);

3)  方式0中,tl有8位,只有低5位起作用。

4)當資料溢位時,tf0/tf1置1,響應中斷後(tf0/tf1復位),進入定時器中斷服務函式(因為資料溢位已經th與tl清空,需要再次重灌初值)。

方式1的邏輯結構與方式0的相似,方式1是16位的定時器/計數器,因此tl的8位資料全部用完 tl0(8)+th0(8) = 16

方式2:

邏輯結構圖:

從邏輯結構圖上看,計數源選擇、定時器/計數器啟動控制與方式0(1)是一樣的。tl0的8位,用於計數;th0的(8位)用於自動重灌。也就是說設定的時候tl0 = th0,當tl0計數時,cpu響應響應中斷,th0重新自動複製給tl0,不需要在函式中再設定tl的數值。

方式3:

邏輯結構圖:

從方式3中,可以看到藍色區域與與綠色區域的構成的定時器/計數器與方式0、1的一致,不過它是tl0是8位定時器/計數器。

而紅色區域則是當使用方式3,定時器/計數器t0的th0將會占用t1的中斷標記tf1與tr1控制定時器啟動,th0只能對機器週期進行計數。

總結:

1)除了方式2,以外其餘的方式都要在定時器中斷函式中,對th0與tl0重新賦值;

2)方式3,將會占用t0將會占用t1的tr1與tf1。而且th0構成的定時器/計數器只用於機器週期的計數。

如果覺得文章還不錯,那就掃碼關注吧!

C51程式設計12 中斷篇(中斷原理2)

中斷可以用下面的例子理解 工程師a在自己的位置做著自己的工作 寫 工程師b有個問題需要請教工程師a,於是工程師b就會跑過來跟工程a請教。這時工程師a的寫 的工作會被打斷,開始回答工程b的問題,解答完問題後,工程師a又開始愉快的寫 從工程師b打斷工程師a,到工程師a繼續寫 這者整個過程叫中斷。1 工程...

C51 中斷 個人筆記

控制各個中斷源的遮蔽與允許 各個中斷源的請求標誌位 有效訊號的規定 中斷號寫程式的時候要用 1.cpu同時接收到幾個中斷時,首先響應優先級別最高的中斷請求。2.正在進行的中斷過程不能被新的同級或低優先順序的中斷請求所中斷。3.正在進行的低優先順序中斷服務,能被高優先順序中斷請求所中斷。中斷源有中斷請...

STM32中斷 外部中斷和定時器中斷

spi,iic的中斷和51微控制器不一樣,這些在stm32屬於外設,是外部中斷。因為stm32的中斷非常多,因此必須設定中斷優先順序 stm32有兩個優先順序的概念 搶占式優先順序和響應式優先順序 亞優先順序,副優先順序 搶占式優先順序 高搶占式優先順序的中斷事件會打斷當前主程式以及中斷程式執行,俗...