當前位置:招聘信息大全網 - 求職招聘 - 請明確介紹定時計數器的四種工作模式。

請明確介紹定時計數器的四種工作模式。

1工作模式0定時器/計數器的工作模式0稱為13位定時/計數模式。它由TL(1/0)的低5位和TH(0/1)的8位組成,TL(1/0)的高3位未使用。我們用這個圖來討論幾個問題:M1M0:定時器/計數器-* *,有四種工作模式,由M1M0控制,兩位正好是四位。

1工作模式0

定時器/計數器的工作模式0稱為13位定時/計數模式。它由TL(1/0)的低5位和TH(0/1)的8位組成,TL(1/0)的高3位未使用。

M1M0:定時器/計數器I * *有四種工作模式,由M1M0控制,兩位正好是四種組合。

C/T:正如我們之前所說,計時器/計數器既可用於計時,也可用於計數。由我們來決定怎麽做,也就是由我們程序員來決定。如果C/T為0,則用作計時器(向上切換),如果C/T為1,則用作計數器(向下切換)。對了,壹個定時器/計數器既可以用來計時,也可以同時用來計數,這是壹個非常常識,不能同時使用。很少有教材會提到這壹點,但很多初學者會很困惑。

大門:看圖。當我們選擇計時或計數模式時,計時/計數脈沖可能無法到達計數器。中間還有壹個開關。顯然,如果這個開關沒有連接,計數脈沖就不能通過。那麽這個轉變什麽時候會過去呢?有兩種情況。

GATE=0,分析邏輯,門是1,或門總是輸出1,與或門的另壹個輸入端INT1無關。這種情況下,開關只依賴於TR1,只要TR1是65438+。

GATE=1。在這種情況下,計數脈沖路徑上的開關不僅應由TR1控制,還應由INT1引腳控制。只有當TR1為1且INT1引腳為高電平時,開關才會閉合,計數脈沖才會通過。這壹特性可用於測量信號高電平的寬度。想想吧。怎麽會?

這種模式為什麽只用13位?為什麽不用16位?這是為了兼容51機器的前身48系列而設計的工作模式。如果覺得不好用,那就幹脆用第二種工作模式。

2工作模式1

工作模式1是16位的計時/計數模式。只需將M1M0設置為01,其他特性與工作模式0相同。

3工作模式2

在介紹這個方法之前,我們先思考壹個問題:上次我們提到了任意計數和任意計時的問題。比如我想計數1000,但是16位的計數器要到65536才會滿。我該怎麽辦?經過我們的討論,解決方案是使用預置數,先把64536放入計數器,然後是1000個脈沖。這還不夠嗎?是的,但是當計價器是滿的時候我們應該做什麽?要知道,計數永遠是重復的,管道滿了之後馬上開始下壹次計數。下壹次計數還是1000嗎?當計數器滿溢出時,計數器中的值變成0(為什麽,請參考前面課程中的解釋),所以下次滿65536後就會溢出,不符合要求。我該怎麽辦?當然方法很簡單,就是每次溢出就執行壹個程序(這往往是必須的,不然為什麽會溢出呢?)在這個程序中,妳可以把預置數64536送入計數器。因此,當采用工作模式0或1時,需要在溢出後重新設置預置數。當然,做這項工作需要時間。壹般來說,這個時間不算什麽,但是有些場合我們還是要在意,於是就有了第三種工作模式,自動重新加載預置號。

既然預置號是要自動加載的,那麽預置號壹定要放在壹個地方,不然要加載什麽呢?那麽預置號放在哪裏呢?放在T的高8位(0/1),所以高8位不能參與計數?是的,在工作模式2下,只有低8位參與計數,高8位不參與計數,是用來存儲預置數的,所以計數範圍小很多。當然,做任何事情總有代價,關鍵是值不值得。如果我不需要數那麽多,那麽我可以用這個方法。如圖4所示,每當計數溢出時,T(0/1)的高、低8位之間的開關就會打開,預設計數進入低8位。這是由硬件自動完成的,無需人工幹預。

這種方法常用於波特率發生器(我們會在串口中解釋)。當用於此目的時,定時器提供時間參考。計數溢出後,就沒辦法了。要做的只有壹件事,就是重新加載預置數,重新開始計數,中間沒有任何延遲。可以看出,這個任務是通過工作方法2完成的。

4工作模式3

這樣,定時器/計數器0被分成兩個獨立的定時器/計數器使用。其中,TL0可以作為8位定時器或計數器工作,而TH0只能作為定時器使用。我們知道它需要被控制來用作計時器和計數器。當儀表充滿時,需要溢出標記。T0壹分為二,所以需要兩組控制和以及溢出標誌。它從哪裏來?TL0仍然標著原來的T0,而TH0借用了T1。所以T1沒有標記,控件可用?是

通常,只有當T1在模式2下運行時(當使用波特率發生器時),T0才能在模式3下運行。