官术网_书友最值得收藏!

相關知識

1.2.1 單片機定時器

1.2.1 定時計數器的結構

1.定時/計數器的基本知識

定時/計數器是單片機系統一個重要的部件,其工作方式靈活、編程簡單、使用方便,可用來實現定時控制、延時、頻率測量、脈寬測量、信號發生、信號檢測等。此外,定時/計數器還可作為串行通信中波特率發生器。定時/計數器的結構如圖1-45所示。

圖1-45 定時/計數器結構

8051單片機內有兩個定時/計數器,分別為T0和T1。

T0和T1有兩種功能:定時和計數。

(1)定時功能 啟動后,開始定時,定時時間到,中斷標志位TF0/TF1自動置1,向CPU申請中斷。

定時功能也是以計數方式來工作的,此時是對單片機內部的脈沖進行加1計數,此脈沖的周期正好等于機器周期。

定時時間=(溢出值-計數初值)×機器周期

(2)計數功能 啟動后,對外部輸入脈沖(負跳變)進行加1計數,T0的脈沖由P3.4輸入,T1的脈沖由P3.5輸入。

計數器加滿溢出時,將中斷標志位TF0/TF1置1,向CPU申請中斷。

計數脈沖個數=溢出值-計數初值

2.定時/計數器寄存器

(1)定時器、計數器模式控制寄存器TMOD(見表1-2)

表1-2 控制寄存器TMOD

TMOD的高4位與低4位是相似的。只要了解了高4位的含義,低4位也就相應地知曉了。下面介紹每一位的含義。

GATE位:門控位,當GATE=0,只要軟件控制TR0或TR1即可啟動定時計數器工作,稱為軟件啟動。

GATE=1時,稱為硬件啟動,只有TR0或TR1等于1且INT0或INT1為高電平時才能啟動相應的定時器開始工作。

對于定時器T0,定時器的啟動與P3.2有關,對于定時器T1,定時器的啟動與P3.3有關。

C/T:定時計數功能選擇位。

M1M0:定時/計數器工作方式設置位。

M1M0=00 工作方式0 13位定時/計數器,最大計數值213=8192。

M1M0=01 工作方式1 16位定時/計數器,最大計數值216=65536。

M1M0=10 工作方式2 初值自動重裝8位定時/計數器,最大計數值28=256。

M1M0=11 工作方式3 兩個獨立8位定時/計數器,僅適用于T0。

(2)定時/計數器控制寄存器TCON

1)TF1:定時器1溢出標志位。當定時器1計滿數產生溢出時,由硬件自動置TF1=1。

2)TR1:定時器1運行控制位。由軟件置1或清0來啟動或關閉定時器1。當GATE=1,且為高電平時,TR1置1啟動定時器1;當GATE=0時,TR1置1即可啟動定時器1。

3)TF0:定時器0溢出標志位。其功能及操作情況同TF1。

4)TR0:定時器0運行控制位。其功能及操作情況同TR1。

(3)定時/計數器的工作過程

定時/計數器的工作過程主要包含以下四個步驟:

1)確定定時/計數器工作方式。

2)預置定時/計數器的初值。

3)啟動定時器/計數器。

4)等待定時/計數溢出。

3.定時/計數器的工作方式

(1)工作方式0 T0有四種工作方式,T1有三種工作方式。

方式0——13位計數器方式,溢出值是:213=8192。

方式1——16位計數器方式,溢出值是:216=65536。

方式2——8位自動重裝初值方式,溢出值是:28=256。

方式3——T0分成兩個獨立的8位計數器方式。

當方式控制寄存器TMOD中定時/計數器的M1M0=00時,定時/計數器處于工作方式0。工作方式0是13位計數器工作方式,其計數器由TH0或TH1的8位和TL0或TL1的低5位構成,TL0和TL1的高3位未使用,組成13位的定時計數器。TL0或TL1低5位計數滿(32)時不向TL0或TL1第6位進位,而是向TH0或TH1進位,高8位計數滿(256)時發生溢出,TF0或TF1置“1”,并申請中斷。

當寄存器TMOD中的計數/定時(C/T)控制位=0時,多路開關接通振蕩脈沖的12分頻輸出,13位計數器依次進行計數,這就是定時工作方式。

當C/T=1時,多路開關接通計數引腳P3.4,外部計數脈沖由單片機引腳P3.4輸入。當計數脈沖發生負跳變時,計數器加1,這就是T0的計數工作方式,如圖1-46所示。

圖1-46 定時/計數器T0工作方式0的電路邏輯結構

(2)定時/計數器的工作方式1 當方式控制寄存器TMOD中定時/計數器的M1M0=01時,定時/計數器處于工作方式1。工作方式1為16位的定時計數器,計數范圍為216=65536。計數值由定時器的低8位和高8位組成。低8位計數滿時向高8位進位,16位計滿溢出,溢出標志TF0或TF1置“1”,申請中斷,其電路邏輯結構如圖1-47所示。

圖1-47 定時/計數器T0工作方式1的電路邏輯結構

(3)定時/計數器的工作方式2 當方式控制寄存器TMOD中定時/計數器的M1M0=10時,定時/計數器處于工作方式2。工作方式2為8位初值自動重裝的定時/計數器,計數范圍為256。計數值由定時器的低8位數值確定,高8位用以存放計數初值。當低8位計數器計數滿溢出時,高8位初值自動重裝到低8位中。此步驟由單片機自動完成,不需要硬件操作和軟件編程實現。電路邏輯結構如圖1-48所示。

圖1-48 定時/計數器T0工作方式2的電路邏輯結構

(4)定時/計數器的工作方式3 在51單片機中,定時器T0才有工作方式3,定時器T1沒有此種工作方式。

當方式控制寄存器TMOD中定時/計數器T0的M1M0=11時,定時/計數器處于工作方式3。在工作方式3模式下,定時/計數器T0被拆成兩個獨立的8位計數器TL0和TH0。TL0由T0的控制位來控制,而TH0則由T1的控制位來控制。其中TL0既可以作為計數器使用,也可以作為定時器使用,定時/計數器T0的各控制位和引腳信號全歸它使用。其功能和操作與方式0或方式1完全類似。而TH0只能作為簡單的定時器使用。

定時/計數器T0工作方式3的電路邏輯結構如圖1-49所示。

由于TL0既能作定時器也能作計數器使用,而TH0只能作定時器使用而不能作計數器使用,因此在方式3模式下,定時/計數器T0可以構成兩個定時器或者一個定時器和一個計數器。

圖1-49 定時/計數器T0工作方式3的電路邏輯結構

主站蜘蛛池模板: 渝中区| 巴塘县| 桃江县| 墨脱县| 新化县| 绍兴县| 沐川县| 鲁山县| 布尔津县| 岳池县| 大港区| 武城县| 宝丰县| 佛坪县| 德格县| 涞源县| 钟祥市| 延津县| 襄樊市| 永胜县| 徐水县| 栖霞市| 汝阳县| 西贡区| 阳泉市| 拜泉县| 金坛市| 长兴县| 长泰县| 江津市| 静宁县| 信丰县| 溧阳市| 盱眙县| 藁城市| 炉霍县| 长寿区| 旬阳县| 曲水县| 奇台县| 汝州市|