51微控制器定時器初值計算:
void main(void)
{
s1=1;
TMOD=0x01; //使用定時器T0的模式1
TH0=(65536-46083)/256; //定時器T0的高8位設定初值
TL0=(65536-46083)%256; //定時器T0的低8位設定初值
函式功能:定時器T0的中斷服務函式
void Time0(void ) interrupt 1 using 0 //定時器T0的中斷編號為1,使用第1組工作暫存器
count++; //每產生1次中斷,中斷累計次數加1
if(count==20) //如果中斷次數計滿20次
count=0; //中斷累計次數清0
s++; //秒加1
定時器初值 46083 是怎麼計算出來的? 一般我們如用 AT892051的話 定時50MS 就是 TH0=(65536-50000)/256。使用的12M晶體 ,20次為1S。
擴充套件資料:
使用說明
以12M晶振為例:每秒鐘可以執行1000000次機器週期個機器週期。而T 每次溢位最多65536 個機器週期。我們儘量應該讓溢位中斷的次數最少(如50ms),這樣對主程式的干擾也就最小。
開發的時候可能會根據需要更換不同頻率的晶振(比如c51微控制器,用11.0592M的晶振,很適合產生串列埠時鐘,而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。
51微控制器定時器初值計算:
void main(void)
{
s1=1;
TMOD=0x01; //使用定時器T0的模式1
TH0=(65536-46083)/256; //定時器T0的高8位設定初值
TL0=(65536-46083)%256; //定時器T0的低8位設定初值
函式功能:定時器T0的中斷服務函式
void Time0(void ) interrupt 1 using 0 //定時器T0的中斷編號為1,使用第1組工作暫存器
{
count++; //每產生1次中斷,中斷累計次數加1
if(count==20) //如果中斷次數計滿20次
count=0; //中斷累計次數清0
s++; //秒加1
定時器初值 46083 是怎麼計算出來的? 一般我們如用 AT892051的話 定時50MS 就是 TH0=(65536-50000)/256。使用的12M晶體 ,20次為1S。
擴充套件資料:
使用說明
以12M晶振為例:每秒鐘可以執行1000000次機器週期個機器週期。而T 每次溢位最多65536 個機器週期。我們儘量應該讓溢位中斷的次數最少(如50ms),這樣對主程式的干擾也就最小。
開發的時候可能會根據需要更換不同頻率的晶振(比如c51微控制器,用11.0592M的晶振,很適合產生串列埠時鐘,而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。