單片機定時器/計數(shù)器基本原理
本文主要學(xué)習(xí)定時器/計數(shù)器的基本概念。首先從日常生活中的計數(shù)和定時的概念入手,來理解定時器/計數(shù)器功能的實現(xiàn)邏輯。一個比較重要的知識點是溢出,當(dāng)定時器/計數(shù)器計滿時,會產(chǎn)生“溢出”的動作,進而產(chǎn)生中斷。同時,還可以進一步了解實現(xiàn)定時或計數(shù)的三種主要的方法。一、定時/計數(shù)的基本概念定時和計數(shù)是日常生活和生產(chǎn)中最常見和最普遍的問題。
定時器和計數(shù)器功能基本上都是使用相同的邏輯實現(xiàn)的,而且這兩個功能都包含輸入的計數(shù)信號,本質(zhì)上都是對脈沖計數(shù)。計數(shù)器用來計數(shù)并指示在任意間隔內(nèi)輸入信號(事件)的個數(shù),而定時器則對規(guī)定間隔內(nèi)輸入的信號個數(shù)進行計數(shù),用來指示經(jīng)歷的時間。
在單片機中,定時/計數(shù)器作定時功能用時,對機器周期計數(shù)(由單片機的晶體振蕩器經(jīng)過12分頻后得到),因每次計數(shù)的周期是固定的,所以根據(jù)它計數(shù)的多少就可以很方便的計算出它計數(shù)的時間。如圖1所示。
圖1 計數(shù)與定時二、溢出的基本概念
從一個生活中的例程看起:一個水盆在水龍頭下,水龍頭沒關(guān)緊,水一滴滴地滴入盆中。盆的容量是有限的,水滴持續(xù)落下,盆中的水持續(xù)變滿,最終有一滴水使得盆中的水滿了,這就是“溢出”。
如果一個空的盆要1萬滴水滴進去才會滿,開始滴水之前可以先放入一部分水,叫做計數(shù)初值。如果現(xiàn)在要計數(shù)9000,那么可以先放入1000滴水,也就是計數(shù)初值為1000,再計數(shù)9000就可以溢出產(chǎn)生中斷。
單片機中通常采用計數(shù)初值的辦法,如果每個脈沖是1微秒,則計滿256個脈沖需時256微秒,如果現(xiàn)在要定時100微妙,只要在計數(shù)器里面先放進156,然后計數(shù)100就可以就可以溢出產(chǎn)生中斷了。如圖2所示。
圖2 定時器/計數(shù)器的溢出 三、定時/計數(shù)的主要方法
實現(xiàn)定時或計數(shù),主要有三種方法。
(1)軟件延時
軟件延時利用微處理器執(zhí)行一個延時程序段實現(xiàn)。因為微處理器執(zhí)行每條指令都需要一定時間,通過指令的循環(huán)實現(xiàn)軟件延時。軟件定時具有不使用硬件的特點,但卻占用了大量CPU時間。另外,軟件定時精度不高,在不同系統(tǒng)時鐘頻率下,執(zhí)行一條指令的時間不同,同一個軟件延時程序的定時時間也會不同。
(2)硬件定時
硬件定時采用數(shù)字電路中的分頻器將系統(tǒng)時鐘進行適當(dāng)分頻產(chǎn)生需要的定時信號,也可以采用單穩(wěn)電路或簡易定時電路(如常用的555定時器)由外接RC(電阻、電容)電路控制定時時間。這樣的定時電路較簡單,利用不同分頻倍數(shù)或改變電阻阻值、電容容值使定時時間在一定范圍內(nèi)改變。
(3)可編程的硬件定時
可編程定時器/計數(shù)器最大特點是可以通過軟件編程來實現(xiàn)定時時間的改變,通過中斷或查詢方法來完成定時功能或計數(shù)功能。這種電路不僅定時值和定時范圍可用程序改變,而且具有多種工作方式,可以輸出多種控制信號,具備較強的功能。
編輯:admin 最后修改時間:2018-05-08