⑴ 單片機如何精確定時1秒鍾
採用定時器定時很精確的,如果定時時間為1ms,那循環1000次就是1s。定時初值要看你採用的晶振頻率了,下面是12M晶振,定時器0的定時1ms程序。
timer0() interrupt 1 // 1ms延時(12.0MHz)
{
TR0=0;
ET0=0;
TH0=0xfc;
TL0=0x18;
if(delayTimes1!=0) delayTimes1--;
TR0=1;
ET0=1;
}
當要程序中把delayTimes1賦值1000後,等到delayTimes1為0的時候定時1s鍾到
⑵ 單片機中定時器的初值產生1ms的定時,到底是65536-1000還是65535-1000 為什麼啊急急急
定時器計數最大值為65535,再計一次則溢出,產生中斷。也就是說初值設置成65535(65536-1)時,定時1個機器周期。所以正確答案是65536-1000,此時定時1000個機器周期,12M晶振1個機器周期為1微秒,1000個就是1ms啦!
⑶ 51單片機的定時器的時間怎麼算
51單片機1個機器周期=12個時鍾周期,頻率為12MHZ,則一個機器周期為1US,具體到定時器程序就是,假如你想定1MS,那麼單片機每次加一個一,就要過1US,那麼1MS就要加1000次,所以用65535-1000=64535;再把64535換成16進制為FC17,把FC付給TH0,17給TLO,即可定時1MS,因為65535他就溢出進入中斷。
⑷ 單片機編寫一個能延時1秒的子程序
通用辦法,可以類推:
DELAY1s:
MOVR5,#08H;∵1s=1000000us
MOVR6,#0A2H;∴1000000/2=500000
MOVR7,#20H;500000用16進製表示為:07A120
;所以R5=07H+1=08H
;R6=0A1H+1=0A2H
;R7=20H
loop:DJNZR7,$;延時時間≈2×[(R5-1)×256+R6-1]×256+R7
DJNZR6,loop;當R5、R6等於0,相當於256參與運算
DJNZR5,loop;當R5、R6等於0,相當於256參與運算
RET
⑸ 單片機關於定時器,定時1ms,定時器中寄存器高低位的值如何設置
你要定時 1ms 即是 1000uS,之所以是減 1000,就是認定計數器的計數脈沖周期為 1uS,
而 1uS 就是晶振(12MHz)的12分頻;
這些你理解就好;
至於計數分頻值是 0xfc18 還是 0xfc67 不必太在意,如果真的想得到准確的定時,則是需要通過測量以便調節分頻值來得到最接近值;