51單片機定時器初值的計算
什么是時鐘周期?什么是機器周期?什么是指令周期?
本文引用地址:http://m.butianyuan.cn/article/201611/318666.htm時鐘周期時鐘周期也稱為振蕩周期,定義為時鐘脈沖的倒數(shù)(可以這樣來理解,時鐘周期就是單片機外接晶振的倒數(shù),例如12M的晶振,它的時間周期就是1/12 us),是計算機中最基本的、最小的時間單位。在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。對于某種單片機,若采用了1MHZ的時鐘頻率,則時鐘周期為1us;若采用4MHZ的時鐘頻率,則時鐘周期為250ns。由于時鐘脈沖是計算機的基本工作脈沖,它控制著計算機的工作節(jié)奏(使計算機的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種機型的計算機,時鐘頻率越高,計算機的工作速度就越快。但是,由于不同的計算機硬件電路和器件的不完全相同,所以其所需要的時鐘周頻率范圍也不一定相同。我們學習的8051單片機的時鐘范圍是1.2MHz-12MHz。 在8051單片機中把一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示)。
機器周期
在計算機中,為了便于管理,常把一條指令的執(zhí)行過程劃分為若干個階段,每一階段完成一項工作。例如,取指令、存儲器讀、存儲器寫等,這每一項工作稱為一個基本操作。完成一個基本操作所需要的時間稱為機器周期。一般情況下,一個機器周期由若干個S周期(狀態(tài)周期)組成。8051系列單片機的一個機器周期同6個S周期(狀態(tài)周期)組成。前面已說過一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示),8051單片機的機器周期由6個狀態(tài)周期組成,也就是說一個機器周期=6個狀態(tài)周期=12個時鐘周期。
指令周期
指令周期是執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期數(shù)也不同。對于一些簡單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機器周期。對于一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。
通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。
一、10MS定時器初值的計算:
1.晶振12M
12MHz除12為1MHz,也就是說一秒=1000000次機器周期。10ms=10000次 機器周期。
65536-10000=55536(d8f0)
TH0=0xd8,TL0=0xf0
2.晶振11.0592M
11.0592MHz除12為921600Hz,就是一秒921600次機器周期,10ms=9216次機器周期。
65536-9216=56320(dc00)
TH0=0xdc,TL0=0x00
二、50MS定時器初值的計算:
1.晶振12M
12MHz除12為1MHz,也就是說一秒=1000000次機器周期。50ms=50000次 機器周期。
65536-50000=15536(3cb0)
TH0=0x3c,TL0=0xb0
2.晶振11.0592M
11.0592MHz除12為921600Hz,就是一秒921600次機器周期,50ms=46080次機器周期。
65536-46080=19456(4c00)
TH0=0x4c,TL0=0x00三、使用說明
以12M晶振為例:每秒鐘可以執(zhí)行1000000次機器周期個機器周期。而T 每次溢出最多65536 個機器周期。我們盡量應該讓溢出中斷的次數(shù)最少(如50ms),這樣對主程序的干擾也就最小。 開發(fā)的時候可能會根據(jù)需要更換不同頻率的晶振(比如c51單片機,用11.0592M的晶振,很適合產(chǎn)生串口時鐘,而12M晶振很方便計算定時器的時間),使用插接式比較方便。
對12MHz 1個機器周期 1us 12/fosc = 1us
方式0 13位定時器最大時間間隔 = 2^13 = 8.192ms
方式1 16位定時器最大時間間隔 = 2^16 = 65.536ms
方式2 8位定時器最大時間間隔 = 2^8 = 0.256ms =256 us 定時5ms,計算計時器初值 M = 2^K-X*Fosc/12 12MHz 方式0: K=13,X=5ms,Fosc=12MHz 則 M = 2^13 - 5*10^(-3)*12*10^6/12= 3192 = 0x0C78 THx = 0CH,TLx = 78H,
方式1: K=16,X=5ms,Fosc=12MHz 則 M = 2^16 - 5*10^(-3)*12*10^6/12= 60536 = 0xEC78 THx = ECH,TLx = 78H,
50ms 12MHz THx = 3CH,TLx = B0H, 10ms THx = D8H,TLx = F0H,
方式2: 最大時間 2^8Fosc/12 = 0.256ms
十進制數(shù)是怎么來的? 6MHz 一個機器周期 12/6 = 2us 定時1ms 計數(shù)初值x (2^16-x)*2us = 1000usx = 2^16 - 500 ,TH,TL 可置 -50012MHz 一個機器周期 12/12 = 1us 12MHz 一個機器周期 12/12 = 1us 定時50ms 計數(shù)初值x (2^16-x)*1us = 50000usx = 2^16 - 50000 ,TH,TL 可置 -500 定時器 計內(nèi)部晶振頻率
計數(shù)器 計外部輸入CPU腳上的脈沖個數(shù) P3.4(T0) P3.5(T1) 負跳變加一
當晶振為6MHz時,最高計數(shù)頻率500KHz
評論