日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1時(shí)鐘周期=1/晶振頻率M1機(jī)器周期=12(51系列12T,若1T則為1)X時(shí)鐘周期 = 12(1)X(1/晶振頻率M) = 1 us(1/12 us)1us機(jī)器周期脈沖數(shù)=晶振頻率f/12假設(shè)12MHZ晶振工作在51單片機(jī)12T模式下,需要使用定時(shí)器進(jìn)行50MS定時(shí)操作,

1時(shí)鐘周期=1/晶振頻率M

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

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

假設(shè)12MHZ晶振工作在51單片機(jī)12T模式下,需要使用定時(shí)器進(jìn)行50MS定時(shí)操作,定時(shí)器工作在方式1;

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

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

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

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

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

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

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

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

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

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

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

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

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

為什么除以256,因?yàn)槲覀兊挠?jì)時(shí)器是兩個(gè)8位組成的,那么要把那些差值裝進(jìn)這兩個(gè)8位,計(jì)數(shù)從低8位開(kāi)始,那么低8位最多能裝256個(gè)機(jī)器周期,那么256計(jì)滿(mǎn)了就用高8位的,就是說(shuō)低8位滿(mǎn)一次高8位加1,那么高8位裝多少,低8位就滿(mǎn)了幾次,算法就是用差值除一下256取其整數(shù),剩下的,就是還剩了小于256次數(shù)的就放在低8位,就是差值 的余數(shù)。

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag++;

if(flag==20)//當(dāng)定時(shí)到1秒時(shí)執(zhí)行花括號(hào)里面的語(yǔ)句

{ }

}

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

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;//計(jì)數(shù)器

int single=0;

timer0_init();

}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉