發表於 2019-06-17 09:19:32
單片機定時器/計數器基本原理
目前常用的單片機中往往都配備了定時器/計數器。在AT89S52晶片內包含有三個16位的定時器/計數器:T0、T1和T2,其核心是加1計數器。我們主要要求掌握T0和T1的結構和功能。學習中要注意從電路結構上來理解功能的實現。定時器/計數器方式寄存器TMOD和定時器/計數器控制寄存器TCON是用以設定定時器/計數器的工作方式、定時或計數功能,控制啟動或停止以及產生溢出中斷的重要模塊,應該對這兩個寄存器中的逐位的定義和功能進行學習和掌握。
一、定時器/計數器的功能
AT89S52單片機定時器/計數器的基本部件是兩個8位的計數器(T1計數器分為高8位TH1和低8位TL1,T0計數器的高8位是TH0,低8位是TL0)。如圖1所示。
圖1 T0和T1的基本構成
定時器/計數器的核心是一個加1計數器,在作定時器使用時,它對機器周期進行計數,每過一個機器周期計數器加1,直到計數器計滿溢出。
當它用作對外部事件計數時,計數器接相應的外部輸入引腳T0(P3.4)或T1(P3.5)並在每個機器周期的S5P2時採樣,當採樣到1—0的負跳變時,計數器加1。
二、定時器/計數器的結構
AT89S52單片機內部的定時/計數器的結構如圖2所示。定時器T0由特殊功能寄存器TL0(低8位)和TH0(高8位)構成,定時器T1由特殊功能寄存器TL1(低8位)和TH1(高8位)構成。每個寄存器均可單獨訪問。
圖2 定時器/計數器的內部結構
一、定時/計數的基本概念
定時和計數是日常生活和生產中最常見和最普遍的問題。
定時器和計數器功能基本上都是使用相同的邏輯實現的,而且這兩個功能都包含輸入的計數信號,本質上都是對脈衝計數。計數器用來計數並指示在任意間隔內輸入信號(事件)的個數,而定時器則對規定間隔內輸入的信號個數進行計數,用來指示經歷的時間。
在單片機中,定時/計數器作定時功能用時,對機器周期計數(由單片機的晶體振蕩器經過12分頻後得到),因每次計數的周期是固定的,所以根據它計數的多少就可以很方便的計算出它計數的時間。如圖1所示。
圖1 計數與定時
二、溢出的基本概念
從一個生活中的例程看起:一個水盆在水龍頭下,水龍頭沒關緊,水一滴滴地滴入盆中。盆的容量是有限的,水滴持續落下,盆中的水持續變滿,最終有一滴水使得盆中的水滿了,這就是「溢出」。
如果一個空的盆要1萬滴水滴進去才會滿,開始滴水之前可以先放入一部分水,叫做計數初值。如果現在要計數9000,那麼可以先放入1000滴水,也就是計數初值為1000,再計數9000就可以溢出產生中斷。
單片機中通常採用計數初值的辦法,如果每個脈衝是1微秒,則計滿256個脈衝需時256微秒,如果現在要定時100微妙,只要在計數器裡面先放進156,然後計數100就可以就可以溢出產生中斷了。如圖2所示。
圖2 定時器/計數器的溢出
三、定時/計數的主要方法
實現定時或計數,主要有三種方法。
(1)軟體延時
軟體延時利用微處理器執行一個延時程序段實現。因為微處理器執行每條指令都需要一定時間,通過指令的循環實現軟體延時。軟體定時具有不使用硬體的特點,但卻佔用了大量CPU時間。另外,軟體定時精度不高,在不同系統時鐘頻率下,執行一條指令的時間不同,同一個軟體延時程序的定時時間也會不同。
(2)硬體定時
硬體定時採用數字電路中的分頻器將系統時鐘進行適當分頻產生需要的定時信號,也可以採用單穩電路或簡易定時電路(如常用的555定時器)由外接RC(電阻、電容)電路控制定時時間。這樣的定時電路較簡單,利用不同分頻倍數或改變電阻阻值、電容容值使定時時間在一定範圍內改變。
(3)可編程的硬體定時
可編程定時器/計數器最大特點是可以通過軟體編程來實現定時時間的改變,通過中斷或查詢方法來完成定時功能或計數功能。這種電路不僅定時值和定時範圍可用程序改變,而且具有多種工作方式,可以輸出多種控制信號,具備較強的功能。
打開APP閱讀更多精彩內容
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴