了解這個問題之前首先需要知道什么是晶振。
1
晶振,顧名思義晶體振蕩器的意思。它起到的作用是為單片機系統(tǒng)提供基準(zhǔn)時鐘信號,類似于我們?nèi)说男奶纹瑱C內(nèi)部所有的工作都是以這個時鐘信號為步調(diào)基準(zhǔn)來進行工作的。
【資料圖】
之前的文章第一次認識壓電換能器中簡單描述了晶體的壓電效應(yīng)。那么這里還有一個概念,一般情況下,無論是機械振動的振幅,還是交變電場的振幅都非常小。但是,當(dāng)交變電場的頻率為某一特定值時,振幅驟然增大,產(chǎn)生共振,稱之為壓電振蕩。這一特定頻率就是石英晶體的固有頻率,也稱為諧振頻率。
STC89C52單片機的18腳和19腳是晶振引腳,一般我們會接一個11.0592MHz的晶振(它每秒鐘振蕩11,059,200次),外加兩個20pF的電容,電容的作用是輔助晶振起振,并維持振蕩信號的穩(wěn)定。
51單片時鐘源硬件連接原理圖
2
計算機訪問一次存儲器的時間,稱之為一個機器周期,這是一個時間基準(zhǔn)。一個機器周期包括12個時鐘周期。我們算一下一個機器周期是多長時間。設(shè)一個單片機工作于11.0592M晶振,它的時鐘周期是1/11.0592MHz(微秒)。它的一個機器周期是12*(1/11059200)微秒。計算出來并不是一個整數(shù),這為什么還要選用它呢?
3
51單片機里有非常重要的概念——定時器和計數(shù)器。定時器和計數(shù)器是單片機內(nèi)部的同一個模塊,通過配置 SFR(特殊功能寄存器)可以實現(xiàn)兩種不同的功能,我們大多數(shù)情況下是使用定時器功能,來完成比如延時、中斷等任務(wù)。
TMOD寄存器:定時器模式寄存器(地址0x89、不可位尋址)
TMOD定時器模式列表
那么這個又跟選用11.0592MHz的晶振有什么關(guān)聯(lián)?
4
在這里需要借助串口(串行數(shù)據(jù)通信接口)做說明,串口收發(fā)數(shù)據(jù)有一個非常重要的概念——波特率(比特率Baud)。波特率就是發(fā)送一位二進制數(shù)據(jù)位的速率,即發(fā)送一位二進制數(shù)據(jù)的持續(xù)時間為1/Baud。這也是兩個獨立的系統(tǒng)之間進行串行數(shù)據(jù)通信前需要確定的一個重要因素。
以定時器T1作為波特率發(fā)生器來講解,方式 1 下的波特率發(fā)生器必須使用定時器T1的模式2,也就是自動重裝載模式,定時器的重載值計算公式為:
TH1 = TL1 = 256 - 晶振值/12 /2/16 /波特率 和波特率有關(guān)的還有一個寄存器,是一個電源管理寄存器 PCON,他的最高位可以把波特率提高一倍,也就是如果寫 PCON |= 0x80 以后,計算公式就成了: TH1 = TL1 = 256 - 晶振值/12 /16 /波特率 公式中數(shù)字的含義這里解釋一下,256是8位定時器的溢出值,也就是TL1的溢出值,晶振值就是11059200,12是說1個機器周期等于12個時鐘周期,16是說把一個信號采集16次。
由此可以知道當(dāng)時鐘頻率選用11.0592MHz時,是很容易獲得標(biāo)準(zhǔn)波特率的,所以很多單片機系統(tǒng)會選用這個看起來比較怪參數(shù)的晶振了。
定時器T1工作于模式2時的常用波特率及初值
單片機的定時器一直是一個非常重要的部分,無論是51單片還是其它架構(gòu)的單片機,熟悉和理解定時器都是非常有必要的。
標(biāo)簽: