單片機(jī)定時(shí)器介紹
定時(shí)器是單片機(jī)系統(tǒng)的一個(gè)重點(diǎn),但并不是難點(diǎn),大家一定要完全理解并且熟練掌握定時(shí)器的應(yīng)用。
1) 時(shí)鐘周期
時(shí)鐘周期 T 是時(shí)序中最小的時(shí)間單位,具體計(jì)算的方法就是 1/時(shí)鐘源頻率,我們 KST-51 單片機(jī)開(kāi)發(fā)板上用的晶振是 11.0592M,那么對(duì)于我們這個(gè)單片機(jī)系統(tǒng)來(lái)說(shuō),時(shí)鐘周期=1/11059200 秒。
2) 機(jī)器周期
我們的單片機(jī)完成一個(gè)操作的最短時(shí)間。機(jī)器周期主要針對(duì)匯編語(yǔ)言而言,在匯編語(yǔ)言下程序的每一條語(yǔ)句執(zhí)行所使用的時(shí)間都是機(jī)器周期的整數(shù)倍,而且語(yǔ)句占用的時(shí)間是可以計(jì)算出來(lái)的,而 C 語(yǔ)言一條語(yǔ)句的時(shí)間是不確定的,受到諸多因素的影響。51單片機(jī)系列,在其標(biāo)準(zhǔn)架構(gòu)下一個(gè)機(jī)器周期是 12 個(gè)時(shí)鐘周期,也就是 12/11059200 秒?,F(xiàn)在有不少增強(qiáng)型的 51 單片機(jī),其速度都比較塊,有的 1 個(gè)機(jī)器周期等于 4 個(gè)時(shí)鐘周期,有的 1個(gè)機(jī)器周期就等于 1 個(gè)時(shí)鐘周期,也就是說(shuō)大體上其速度可以達(dá)到標(biāo)準(zhǔn) 51 架構(gòu)的 3 倍或 12倍。因?yàn)槲覀兪侵v標(biāo)準(zhǔn)的 51 單片機(jī),所以我們后邊的課程如果遇到這個(gè)概念,全部是指 12個(gè)時(shí)鐘周期。
這兩個(gè)概念了解即可,下邊就來(lái)我們的重頭戲,定時(shí)器和計(jì)數(shù)器。定時(shí)器和計(jì)數(shù)器是單片機(jī)內(nèi)部的同一個(gè)模塊,通過(guò)配置 SFR(特殊功能寄存器)可以實(shí)現(xiàn)兩種不同的功能,我們大多數(shù)情況下是使用定時(shí)器功能,因此我們的課程也是主要來(lái)講定時(shí)器功能,計(jì)數(shù)器功能大家自己了解下即可。
顧名思義,定時(shí)器就是用來(lái)進(jìn)行定時(shí)的。定時(shí)器內(nèi)部有一個(gè)寄存器,我們讓它開(kāi)始計(jì)數(shù)后,這個(gè)寄存器的值每經(jīng)過(guò)一個(gè)機(jī)器周期就會(huì)自動(dòng)加 1,因此,我們可以把機(jī)器周期理解為定時(shí)器的計(jì)數(shù)周期。就像我們的鐘表,每經(jīng)過(guò)一秒,數(shù)字自動(dòng)加 1,而這個(gè)定時(shí)器就是每過(guò)一個(gè)機(jī)器周期的時(shí)間,也就是 12/11059200 秒,數(shù)字自動(dòng)加 1。還有一個(gè)特別注意的地方,就是鐘表是加到 60 后,秒就自動(dòng)變成 0 了,這種情況在單片機(jī)或計(jì)算機(jī)里我們稱之為溢出。
那定時(shí)器加到多少才會(huì)溢出呢?后面會(huì)講到定時(shí)器有多種工作模式,分別使用不同的位寬(指使用多少個(gè)二進(jìn)制位),假如是 16 位的定時(shí)器,也就是 2 個(gè)字節(jié),最大值就是 65535,那么加到 65535 后,再加 1 就算溢出,如果有其他位數(shù)的話,道理是一樣的,對(duì)于 51 單片機(jī)來(lái)說(shuō),溢出后,這個(gè)值會(huì)直接變成 0。從某一個(gè)初始值開(kāi)始,經(jīng)過(guò)確定的時(shí)間后溢出,這個(gè)過(guò)程就是定時(shí)的含義。