22.1184晶振的單片機(jī) 作者: 時間:2016-11-28 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 首先說說晶振與51單片機(jī)的機(jī)器周期得關(guān)系:晶振的倒數(shù)是一個時鐘周期單位為秒,一個機(jī)器周期等于12乘時鐘周期。 再說說指令周期與時鐘周期得關(guān)系:對于8031等早期的51來說,指令周期和機(jī)器周期是一樣的等于12乘時鐘周期,但后來出現(xiàn)了很多改進(jìn)型的51系列單片機(jī)如80320等,指令周期等于4個時鐘周期,也就是說同樣的晶振速度是原來的3倍。但無論如何變,T0、T1等定時器的計時任然按機(jī)器周期來計算的,也就是說12乘時鐘周期。 定時器是按溢出產(chǎn)生中斷的,所以要用溢出值65536減你所希望的值得到定時器的初值。 那么怎么計算賦值所決定的時間呢: 首先計算出機(jī)器周期:12*(1/22.1184/1000000)秒(應(yīng)該是22.1184兆吧), 因為你需要計時50毫秒那么就換算成毫秒吧,該值乘1000就是毫秒了。這個值就是定時器的機(jī)器周期,也就是定時器增加一個計數(shù)值的值。 那么對你而言需要定時50毫秒,需要多少個定時值呢?很簡單用50除這個值就OK了,你可以算算應(yīng)該是:92160. 現(xiàn)在問題來了,我們需要92160個計數(shù)值,但51定時器最大只能是65536,容不下怎么辦?只能在中斷服務(wù)程序中處理了,比如兩次中斷做一次計時到時判據(jù)那么就可以,于是計數(shù)值就可以除以2得46080小于65536可以處理了。 那么初值就是65536-46080=19456了,你可以用電腦計算器換算成16進(jìn)制填入TH1和TL1。
評論