定時(shí)器配置有哪些步驟 55定時(shí)器使用方法?
55定時(shí)器使用方法?準(zhǔn)備:設(shè)置里特殊功能控制寄存器TMOD,配置如何好工作模式。第二步:系統(tǒng)設(shè)置數(shù)器寄存器TH0和TL0的初始屬性。第十步:設(shè)置中TCON,通過(guò)TR0置1來(lái)讓定時(shí)中斷正在定時(shí)計(jì)數(shù)。第四
55定時(shí)器使用方法?
準(zhǔn)備:設(shè)置里特殊功能控制寄存器TMOD,配置如何好工作模式。
第二步:系統(tǒng)設(shè)置數(shù)器寄存器TH0和TL0的初始屬性。
第十步:設(shè)置中TCON,通過(guò)TR0置1來(lái)讓定時(shí)中斷正在定時(shí)計(jì)數(shù)。
第四步:判斷TCON通用寄存器的TF0位,時(shí)時(shí)監(jiān)測(cè)計(jì)數(shù)器滴下的情況下。
寫(xiě)系統(tǒng)程序前,你們要先來(lái)學(xué)會(huì)換算怎么用時(shí)間繼電器有定時(shí)一天的時(shí)間。我們也的晶振是11.0592M,時(shí)鐘周期變化是1/11059200,機(jī)器本身周期變化是12/11059200,若果要按時(shí)20ms,那是0.02秒,要當(dāng)經(jīng)過(guò)x個(gè)機(jī)器本身周期變化能得到0.02秒,你們來(lái)算再看看x*12/110592000.02,能得到x18432。16位時(shí)間繼電器的逸出值是65536(因65535再加1才是流出),索性我們現(xiàn)在就可以不這樣的話(huà)能操作,先給TH0和TL0個(gè)當(dāng)前值,讓那些生物經(jīng)18432個(gè)機(jī)器周期后剛好提升到65536,也就是溢出,滴下后是可以通過(guò)檢測(cè)檢測(cè)TF0的值打探出,就只是0.02秒。那么初始屬性y65536-1843247104,轉(zhuǎn)成16十六進(jìn)制就是0x9b800,也就是TH04ea8,TL00x1200。
這樣0.02秒的按時(shí)我們是就做成什么了,細(xì)心的同學(xué)啊會(huì)才發(fā)現(xiàn),假如初始屬性真接給兩個(gè)0x110000,一直在到65536流出,外部中斷每隔幾小時(shí)值最大也就是71ms500左右,那你我們想每隔幾小時(shí)更長(zhǎng)時(shí)間內(nèi)該怎么辦呢?用你小學(xué)和中學(xué)學(xué)過(guò)的形式邏輯,乘積任何關(guān)系就也可以解決的辦法此問(wèn)題很簡(jiǎn)單。
完了,我們是下面就用程序啟動(dòng)來(lái)實(shí)現(xiàn)這個(gè)功能一樣。
#include
ucharled燈P0^0;
uart1ADDR0P1^0;
uart1ADDR1P1^1;
sbitADDR2P1^2;
char*ADDR3P1^3;
#defineENLEDP1^4;
voidmain(){
size_tunsignedmos20;//定義方法三個(gè)計(jì)數(shù)中間變量,記錄T0流出上限
ENLED0;//使能,選擇獨(dú)立led
ADDR31;
ADDR21;
ADDR11;
ADDR00;
TMOD0x2001;//設(shè)置中T0為其他模式1
TH00x9b8;//為T(mén)0賦屬性值0xce800
TL00x2000;
TR01;//起動(dòng)T0while(1)
stm32定時(shí)器中預(yù)分頻系數(shù)是什么作用? 72MHz想要讓定時(shí)器100次/s該怎么寫(xiě)配置代碼?
999是裝到值,7199是預(yù)套裝喇叭系數(shù),72M%(9991)%(71991)40hz,即10次/s,interrupt_merekat(TIM2,99,7199)利用的是100次/s。