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