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