最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

單片機(jī)時(shí)間管理系統(tǒng)——定時(shí)器/計(jì)數(shù)器

2023-07-04 22:22 作者:機(jī)電一體化學(xué)長(zhǎng)  | 我要投稿

定時(shí)和計(jì)數(shù)的基本概念
中國(guó)古代先賢發(fā)明過(guò)一種通過(guò)流水計(jì)時(shí)的器皿,名為“滴漏”。它通過(guò)固定孔令水滴入容器,每滴3下為一秒,每滴180下為一分,每滴10800下為一時(shí),以此形成了最早的計(jì)時(shí)器。

計(jì)數(shù)是指對(duì)事件或事物的數(shù)量進(jìn)行統(tǒng)計(jì),常以1為單位進(jìn)行累加,如統(tǒng)計(jì)水滴的數(shù)量。當(dāng)被統(tǒng)計(jì)事件的產(chǎn)生存在時(shí)間規(guī)律的時(shí)候,計(jì)數(shù)的結(jié)果乘以事件發(fā)生的時(shí)間間隔,就變成了計(jì)時(shí)。

在單片機(jī)中,對(duì)應(yīng)的“水滴”由時(shí)鐘源提供。假設(shè)時(shí)鐘源為12MHz,時(shí)鐘周期為1/12 μs,則可以通過(guò)編程設(shè)置單片機(jī)按照1個(gè)時(shí)鐘周期的速度或者是按照12個(gè)時(shí)鐘周期的速度進(jìn)行加1統(tǒng)計(jì)。

STC15W4K32S4單片機(jī)的定時(shí)器/計(jì)數(shù)器
STC15W4K32S4系列單片機(jī)內(nèi)部設(shè)置了5個(gè)16位定時(shí)器/計(jì)數(shù)器:T0,T1,T2,T3和T1。

這5個(gè)16位定時(shí)器/計(jì)數(shù)器都具有計(jì)數(shù)和定時(shí)兩種工作方式。對(duì)定時(shí)器/計(jì)數(shù)器10和T1而言,用它們?cè)谔厥夤δ芗拇嫫鱐MOD中相對(duì)應(yīng)的控制位C/T)來(lái)選擇10或1為定時(shí)器還是計(jì)數(shù)器。

對(duì)定時(shí)器/計(jì)數(shù)器T2,用特殊功能寄存器AUXR中的控制位(T2C/ī)來(lái)選擇T2為定時(shí)器還是計(jì)數(shù)器。

定時(shí)器/計(jì)數(shù)器的核心部件是一個(gè)加法計(jì)數(shù)誓,其本質(zhì)是對(duì)脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)和定時(shí)的區(qū)別只在于計(jì)數(shù)脈沖的來(lái)源:如果計(jì)數(shù)來(lái)沖來(lái)自系統(tǒng)時(shí)鐘,則為定時(shí)方式,此時(shí)定時(shí)器/計(jì)數(shù)器每12個(gè)時(shí)鐘或者每1個(gè)時(shí)鐘得到了個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)值加1;如果計(jì)數(shù)脈沖來(lái)自單片機(jī)外部引腳(TO為P3.4,T1為F5.5.12為F3.1,T3為Po.5,T4為P0.7),則為計(jì)數(shù)方式,每來(lái)1個(gè)脈沖加工。

溢出和溢出標(biāo)志
當(dāng)水滴持續(xù)滴入時(shí),因?yàn)槿萜鞔笮∮邢?,盛滿(mǎn)了就會(huì)溢出,就需要清空容器。對(duì)單片機(jī)而言,就是通過(guò)定時(shí)器/計(jì)數(shù)器溢出標(biāo)志(查詢(xún)方式下)/中斷請(qǐng)求標(biāo)志(中斷方式下)對(duì)單片機(jī)進(jìn)行提醒,通知單片機(jī)定時(shí)時(shí)間到,或者是計(jì)數(shù)次數(shù)到。

設(shè)置定時(shí)器/計(jì)數(shù)器的初值
STC15W4K32S4單片機(jī)的定時(shí)器/計(jì)數(shù)器的核心是一個(gè)16位的加法計(jì)數(shù)器,其本質(zhì)是對(duì)脈沖進(jìn)行計(jì)數(shù),其取值范圍是0~65535。運(yùn)行的過(guò)程一旦開(kāi)始,就不再需要CPU的關(guān)注而獨(dú)立運(yùn)行,直到對(duì)應(yīng)的溢出標(biāo)志位的狀態(tài)發(fā)生了改變,進(jìn)而通過(guò)軟件查詢(xún)的方式進(jìn)行處理,或是通過(guò)觸發(fā)中斷來(lái)讓CPU執(zhí)行中斷服務(wù)子程序。

因此,在實(shí)際應(yīng)用中用戶(hù)需要采用預(yù)設(shè)初值的方式,讓定時(shí)器/計(jì)數(shù)器在達(dá)到合理的時(shí)間或計(jì)數(shù)值的時(shí)候產(chǎn)生溢出。
現(xiàn)在假設(shè)時(shí)鐘源為12MHz,分別有如下要求:

(1)計(jì)數(shù)到10800溢出
定時(shí)器/計(jì)數(shù)器最大計(jì)數(shù)值為65 535,即計(jì)數(shù)到65536時(shí)會(huì)產(chǎn)生溢出。如果需要計(jì)數(shù)到10800時(shí)產(chǎn)生溢出,則應(yīng)該設(shè)置計(jì)數(shù)器初始值:
X=65 536-10 800=54 736=D5D0H

(2)定時(shí)10000 μs溢出
定時(shí)器/計(jì)數(shù)器最大定時(shí)值為65 536次×1 μs/次=65 536 μs。若需定時(shí)10 000 μs之后產(chǎn)生溢出,則需要統(tǒng)計(jì)計(jì)數(shù)脈沖10000次,此時(shí)設(shè)置定時(shí)器初始值:
X=65 536-10 000=55 536=D8F0H
單片機(jī)中定時(shí)器通常要求不斷地重復(fù)定時(shí),溢出以后需要再次把初
始值送入到定時(shí)器中,如此來(lái)保證下一輪的定時(shí)時(shí)間還是10000μs。


定時(shí)器/計(jì)數(shù)器TO,T1的特殊功能寄存器
STC15W4K32S4系列單片機(jī)內(nèi)部定時(shí)器/計(jì)數(shù)器TO,T1的工作方式和控制主要由TCON,TMOD和AUXR三個(gè)特殊功能寄存器進(jìn)行管理。

利用定時(shí)器/計(jì)數(shù)器T 作方式0)控制流水燈
由于采用的是軟件查詢(xún)方式,因此每1s定時(shí)時(shí)間到觸發(fā)溢出標(biāo)志后,必須用軟件清零溢出標(biāo)志。定時(shí)器的具體設(shè)置如下:

TMOD =0x00;
AUXR=0x00; //設(shè)置T1作為定時(shí)器工作在方式0,可省
//設(shè)置T1為12T模式,可省
TH1=(65536-50000)/256;//設(shè)置定時(shí)器初值,單次定時(shí)50ms
TI1=(65536-50000)256;
//啟動(dòng) T1
TR1=1;
while(!TF1); //軟件查詢(xún)TF1的狀態(tài),等待50ms定時(shí)時(shí)間到
TF1=0;//清零溢出標(biāo)志,為循環(huán)定時(shí)做準(zhǔn)備

通過(guò)軟件編程的方式反復(fù)查詢(xún)溢出標(biāo)志TF1的狀態(tài)。當(dāng)定時(shí)時(shí)間到后,TF1會(huì)被置
1,因此,只需要查詢(xún)TF1是否等于1即可得知定時(shí)時(shí)間是否到,所以程序中用“while
(!TF1)”這一循環(huán)語(yǔ)句來(lái)查詢(xún)判斷,等待50 ms定時(shí)時(shí)間到。

利用定時(shí)器/計(jì)數(shù)器T1中斷方式(工作方式0)控制流水燈
由于定時(shí)器工作在中斷模式下,每一次50 ms定時(shí)時(shí)間到均會(huì)觸發(fā)中斷標(biāo)志位TF1,單片機(jī)響應(yīng)中斷后,內(nèi)部硬件電路會(huì)自動(dòng)將TF1清零,因此在編寫(xiě)程序時(shí)不需要使用軟件對(duì)TF1清零。定時(shí)器的具體設(shè)置如下:

TMOD= 0x00; //設(shè)置T1作為定時(shí)器工作在方式0,可省
TH1=(65536-50000)/256; //設(shè)置定時(shí)器初值,定時(shí)50ms
TL1=(65536-50000)號(hào)256;
EA=1; //使能中斷允許總控制位
ET1=1; //使能T1中斷允許控制位
TR1=1; //啟動(dòng) T1
T1工作在中斷方式時(shí),當(dāng)定時(shí)時(shí)間50 ms到后,會(huì)自動(dòng)觸發(fā)中斷執(zhí)行中斷服務(wù)子程序。



單片機(jī)時(shí)間管理系統(tǒng)——定時(shí)器/計(jì)數(shù)器的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
德令哈市| 宝鸡市| 十堰市| 淳安县| 会昌县| 莱芜市| 苍南县| 杭锦后旗| 德阳市| 商水县| 松滋市| 如东县| 涿州市| 庄浪县| 英德市| 安吉县| 密云县| 色达县| 莒南县| 关岭| 阳东县| 绿春县| 彭泽县| 新营市| 保靖县| 岳普湖县| 江陵县| 定西市| 临颍县| 沧源| 珠海市| 宽城| 怀宁县| 平塘县| 乌拉特中旗| 桃江县| 永登县| 临猗县| 固安县| 瑞安市| 通州区|