精品精品国产自在久久-人妻少妇精品久久中文字幕-精品人妻一区二区三区久久免费-人妻一区二区视频在线观看

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 單片機定時器學習匯總

單片機定時器學習匯總

關鍵字:單片機 定時器 作者:admin 來源:不詳 發(fā)布時間:2018-05-18  瀏覽:45

 1時鐘周期=1/晶振頻率M

1機器周期=12(51系列12T,若1T則為1)X時鐘周期 = 12(1)X(1/晶振頻率M) = 1 us(1/12 us)

1us機器周期脈沖數(shù)=晶振頻率f/12

假設12MHZ晶振工作在51單片機12T模式下,需要使用定時器進行50MS定時操作,定時器工作在方式1;

12M的晶振每秒(s)可產(chǎn)生1M(10^6 us)個機器周期

50ms就需要50×1000 us × 1us(1機器周期)個機器周期 = 50000

定時器在方式1工作,是16位計數(shù)器,最大值為65536(2^16),也就是能進行最大65536次計數(shù)

50ms定時操作需要50000個機器周期,1個機器周期=1us,所以需要50000次計數(shù)操作

為了計數(shù)器定時器工作,需要預先填充定時器初值(初值=定時器計數(shù)最大計數(shù)次數(shù) - 所需定時計數(shù)次數(shù))

所以需設置定時器初值15536 = 65536 -50000,即3CB0H(10進制15536轉換成16進制數(shù)3CB0),所以TH0=0x3c,TL0=0xb0,高位就是TH0的值,低位為TL0的值

若假設使用11.0592MHZ的晶振,其他條件不變

11.0592M的晶振每秒可產(chǎn)生0.9216M個機器周期,50ms就需要46080個機器周期

定時器在方式1工作,是16位計數(shù)器,最大值為65536,所以需設置初值19456 = 65536 - 46080,即4C00H

所以TH0=0x4c,TL0=0x00。

推導方式1 ,16位定時器/計數(shù)器初值設定高8位TH0,低TL0的公式為:

TH0=(65536- 所需計數(shù)次數(shù))/256 = 初值/256;

TL0=(65536 - 所需技術次數(shù))%256 = 初值%256;

為什么除以256,因為我們的計時器是兩個8位組成的,那么要把那些差值裝進這兩個8位,計數(shù)從低8位開始,那么低8位最多能裝256個機器周期,那么256計滿了就用高8位的,就是說低8位滿一次高8位加1,那么高8位裝多少,低8位就滿了幾次,算法就是用差值除一下256取其整數(shù),剩下的,就是還剩了小于256次數(shù)的就放在低8位,就是差值 的余數(shù)。

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag++;

if(flag==20)//當定時到1秒時執(zhí)行花括號里面的語句

{ }

}

---------------------------------------------------------------------------------------

at89s52,晶振頻率12m

其程序如下:

#include

#include

void timer0_init()

{

TMOD=0x01;//方式1

TL0=0xb0;

TH0=0x3c;

TR0=1;

ET0=1;

}

void timer0_ISR(void) interrupt 1

{

TL0=0xb0;

TH0=0x3c;//50ms中斷一次

single++;

if(single==20)

{ kk++;

single=0;

}

}

void main()

{

int kk=0;//計數(shù)器

int single=0;

timer0_init();

}

編輯:admin  最后修改時間:2018-05-18

聯(lián)系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A09

Copyright © 2014-2025 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4