六、51单片机之定时器/计数器_理论
1、什么是定時(shí)器、計(jì)數(shù)器
定時(shí)器就是單片機(jī)設(shè)定一個(gè)時(shí)間間隔,時(shí)間間隔到后通知單片機(jī)。例如設(shè)置100ms的定時(shí)器,100ms后定時(shí)器通知單片機(jī)時(shí)間到了。
(1)定時(shí)器是單片機(jī)的一種內(nèi)部外設(shè)。(以前的單片機(jī)只有CPU,也就是只有運(yùn)算器和控制器。伴隨集成電路的發(fā)展,定時(shí)器、串口等也集成到單片機(jī)內(nèi)部,所以定時(shí)器稱為內(nèi)部外設(shè))。
(2)定時(shí)器就相當(dāng)是單片機(jī)的"鬧鐘"。
(3)一定程度上定時(shí)器就是計(jì)數(shù)器,計(jì)數(shù)器就是定時(shí)器,往后看就能理解了。
(4)計(jì)數(shù)器用于記錄外部脈沖產(chǎn)生的個(gè)數(shù),如果外部脈沖產(chǎn)生的時(shí)間間隔是可知且固定的,就可以通過脈沖個(gè)數(shù)?脈沖時(shí)間間隔得到定時(shí)時(shí)間。
2、定時(shí)器如何工作
定時(shí)器定時(shí)器本質(zhì)上是計(jì)數(shù)時(shí)鐘脈沖的個(gè)數(shù)。時(shí)鐘脈沖一般由晶振和起振電路產(chǎn)生(這句話了解可)。
一般定時(shí)器的工作流程:
(1)第一步:設(shè)定定時(shí)器的時(shí)鐘源(51單片機(jī)中不需要,因?yàn)檫@種簡(jiǎn)單的單片機(jī)只有一個(gè)時(shí)鐘源,沒得選)
(2)第二步:初始化時(shí)鐘相關(guān)的寄存器
(3)第三步:設(shè)定定時(shí)時(shí)間(即設(shè)定脈沖計(jì)數(shù)個(gè)數(shù))
(4)第四步:通過脈沖個(gè)數(shù)判斷定時(shí)時(shí)間是否到了,但通常情況是設(shè)置中斷,時(shí)間到后(計(jì)數(shù)值到后)會(huì)自動(dòng)通知單片機(jī)。這一步也可以理解為設(shè)置中斷處理程序。
(5)第五步:打開定時(shí)器
(6)運(yùn)行時(shí):定時(shí)器計(jì)數(shù)值到后產(chǎn)生中斷,在中斷中做想做的事。
3、軟件控制硬件的關(guān)鍵——寄存器
3.1、什么是寄存器
(1)寄存器的英文是Register。
(2)寄存器,既可以往里面寫內(nèi)容,也可以把里面的內(nèi)容讀出來。一般按位定義。
(3)寄存器使用地址訪問,編程上像內(nèi)存一樣。(了解即可)
3.2、寄存器的工作原理
(1)寄存器與硬件之間有雙向影響,寄存器可能影響硬件,硬件也可能影響寄存器。
(2)硬件可以讀寫寄存器
(3)寄存器可以抽象理解為硬件和軟件之間的橋梁。
(4)在復(fù)雜單片機(jī)中,IO口的輸入輸出功能,輸出高低電平,也可以通過寄存器來配置。
(5)總結(jié):寄存器是軟件能夠控制硬件的關(guān)鍵。
3.3、單片機(jī)學(xué)習(xí)的關(guān)鍵就是各種寄存器
(1)單片機(jī)學(xué)習(xí)主要包括2個(gè):CPU和各種內(nèi)部外設(shè)
(2)各種內(nèi)部外設(shè)的編程就是操縱寄存器。
(3)熟悉一款單片機(jī)其實(shí)就是熟悉他的寄存器。
(4)寄存器會(huì)隨著單片機(jī)的復(fù)雜而復(fù)雜。
4、51單片機(jī)定時(shí)器簡(jiǎn)介
細(xì)節(jié)可參照具體型號(hào)單片機(jī)數(shù)據(jù)手冊(cè)/參考手冊(cè)。
4.1、數(shù)據(jù)手冊(cè)部分內(nèi)容
在STC89C51RC單片機(jī)中手冊(cè)部分內(nèi)容:
(1)定時(shí)器/計(jì)數(shù)器的核心部件是一個(gè)加法(也有減法)的計(jì)數(shù)器,其本質(zhì)是對(duì)脈沖進(jìn)行計(jì)數(shù)。只是計(jì)數(shù)脈沖來源不同:如果計(jì)數(shù)脈沖來自系統(tǒng)時(shí)鐘,則為定時(shí)方式,此時(shí)的定時(shí)器/計(jì)數(shù)器每12個(gè)晶振時(shí)鐘或者每6個(gè)晶振時(shí)鐘得到一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)值加1;如果計(jì)數(shù)脈沖來自單片機(jī)外部引腳,則為計(jì)數(shù)方式,每來一個(gè)脈沖加1。
(2)該單片機(jī)可工作在12T或6T工作模式下。當(dāng)外部晶振頻率為12MHz時(shí),12T工作模式下相當(dāng)于12分頻,6T工作模式下6分頻。分頻后得到的時(shí)鐘頻率才是CPU的工作時(shí)鐘。該單片機(jī)默認(rèn)是12T工作模式,可通過stc-isp下載程序軟件勾選是能6T(雙倍速)模式,這樣下載程序,單片機(jī)便工作在6T模式下。
(3)在STM32單片機(jī)中是外部晶振頻率倍頻后的時(shí)鐘為CPU工作時(shí)鐘。
4.2、51單片機(jī)相關(guān)周期知識(shí)補(bǔ)充
(1)兆赫茲是波動(dòng)頻率單位之一。波動(dòng)頻率的基本單位是赫茲,采千進(jìn)位制;1兆赫相當(dāng)于1000千赫(KHz),也就是10^6赫茲。
(2)赫茲是國(guó)際單位制中頻率的單位,它是每秒鐘的周期性變動(dòng)重復(fù)次數(shù)的計(jì)量。?赫茲簡(jiǎn)稱赫。每秒鐘振動(dòng)(或振蕩、波動(dòng))一次為1赫茲,或可寫成次/秒。
(3)單片機(jī)中的常見周期
晶振周期:晶振的振蕩周期,也就是晶振震動(dòng)一次所花的時(shí)間,比如1MHz晶振震蕩周期是 1/1MHz(1/1000000)s,也就是1微妙。一般也稱為振蕩周期。
時(shí)鐘周期:時(shí)鐘周期,如果晶振的輸出沒有經(jīng)過分頻或倍頻就直接作為cpu的工作時(shí)鐘,則時(shí)鐘周期就等于晶振的振蕩周期;如果晶振的輸出經(jīng)過分頻或倍頻后作為cpu的工作時(shí)鐘,則時(shí)鐘周期就就是分頻或倍頻后的。即,時(shí)鐘周期是CPU的實(shí)際工作頻率的倒數(shù),是時(shí)序中最小的時(shí)間單位。51單片機(jī)沒有分頻或倍頻,而STM32中有。51單片機(jī)中晶振周期等于時(shí)鐘周期。
注:學(xué)習(xí)51單片機(jī)經(jīng)常看見時(shí)鐘周期就是振蕩周期這種說法是不夠嚴(yán)謹(jǐn)?shù)摹?/p>
機(jī)器周期:機(jī)器周期也稱為CPU周期。在計(jì)算機(jī)中,為了便于管理,常把一條指令的執(zhí)行過程劃分為若干個(gè)階段(如取指、譯碼、執(zhí)行等),每一階段完成一個(gè)基本操作。完成一個(gè)基本操作所需要的時(shí)間稱為機(jī)器周期。一般情況下,一個(gè)機(jī)器周期由若干個(gè)時(shí)鐘周期組成。
5、51單片機(jī)定時(shí)器的主要寄存器
定時(shí)器/計(jì)數(shù)器0和1的相關(guān)寄存器。(STC89C52RC單片機(jī)數(shù)據(jù)手冊(cè))
(1)51單片機(jī)中寄存器可以按位訪問。
5.1、定時(shí)器/計(jì)數(shù)器控制寄存器TCON
| SFR name | Address | bit | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
| TCON | 88H | name | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
(1)TF:Time Flag,定時(shí)器溢出標(biāo)志位。
(2)8個(gè)位。名稱后面帶1的對(duì)應(yīng)定時(shí)器1,名稱帶0的對(duì)應(yīng)定時(shí)器0。
(3)定時(shí)器為加法定時(shí)器。
(4)IT位設(shè)置外部中斷觸發(fā)方式。外部中斷觸發(fā)方式一般就是:邊沿觸發(fā)和電平觸發(fā)2種。邊沿觸發(fā)又分為:上升沿觸發(fā)、下降沿觸發(fā)、雙邊沿觸發(fā)(上升沿下降沿都會(huì)觸發(fā));電平觸發(fā)方式分為:高電平觸發(fā)、低電平觸發(fā)2種。
5.2、定時(shí)器/計(jì)數(shù)器工作模式寄存器TMOD
5.3、TL0
5.4、TL1
5.5、TH0
5.6、TH1
總結(jié)
以上是生活随笔為你收集整理的六、51单片机之定时器/计数器_理论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 戴尔服务器2003系统,Dell Pow
- 下一篇: 反爬机制之验证setcookie