定時器/計數(shù)器的結(jié)構(gòu)及工作原理是什么
單片機定時器其實跟我們平時常說的計數(shù)器,是同一個電子元件,只不過計數(shù)器記錄的是單片機外部情況,所接收的也是外部脈沖,而定時器則是由單片機自身提供的一個非常穩(wěn)定的計數(shù)器,這個穩(wěn)定的計數(shù)器就是單片機上連接的晶振部件。
二、單片機定時器的類型
在單片機中,分為軟件定時器,不可編程硬件定時器,可編程定時器。
1、軟件定時:CPU每執(zhí)行一條指令時,是需要固定時間的,所以,通過執(zhí)行空指令可以達到延時的效果,這樣子做的代價是占用CPU時間,所以一般很少這么做。
2、不可編程硬件定時器:是由電路和硬件來完成定時功能的,一般采用基本電路,外接定時部件(電阻和電容),通過改變電阻的阻值和電容的電容值來修改定時值,一旦確定后件不能通過軟件修改,這樣子做的優(yōu)點是不需要占用CPU時間。
3、可編程定時器:通過軟件來確定定時值及其范圍,可編程定時器功能強大,靈活性高。這是本文詳細講解的定時器。
MCS 51 單片機內(nèi)部帶有兩個 16 位定時器/計數(shù)器(8052 則有 3 個), 以及一個全雙工的異步通信串行接口,這給用戶帶來了極大的方便。本文介紹 8051 系列單片機內(nèi)部定時器/計數(shù)器和串行口的結(jié)構(gòu)及工作原理。
定時器/計數(shù)器的結(jié)構(gòu)及工作原理
定時器/計數(shù)器實質(zhì)上是加法計數(shù)器,當它對具有固定時間間隔的內(nèi)部機器周期進行計數(shù)時,它是定時器;當它對外部事件進行計數(shù)時,它是計數(shù)器。
定時器/計數(shù)器的基本結(jié)構(gòu)如圖 6.1 所示。
圖 6.1 定時器/計數(shù)器結(jié)構(gòu)框圖
圖中,基本部件是兩個 8 位的計數(shù)器,其中 TH1 、TL1 是 T1 的計數(shù)器,TH0 、TL0 是 T0 的計數(shù)器。TH1 和 TL1 、TH0 和 TL0 構(gòu)成兩個 16 位加法計數(shù)器,它的工作狀態(tài)及工作方式由定時器/計數(shù)器的工作方式寄存器 TMOD 及定時器/計數(shù)器控制寄存器 TCON 的各位決定。工作狀態(tài)有定時和計數(shù)兩種 , 由 TMOD 中的一位控制 。工作方式有方式 0~3 共四種 ,由 TMOD 中的兩位編碼決定 。TMOD 和 TCON 的內(nèi)容 由軟件寫入。定時器/計數(shù)器的輸出是加法計數(shù)器的計滿 出信號,它使 TCON 的某位(TF0 或 TF1) 置 1,作為定時器/計數(shù)器的溢出中斷標志。
當加法計數(shù)器的初值被設(shè)置,用指令改變 TMOD 和 TCON 的 內(nèi)容后,就會在下一條 指令的第一個機器周期的 S1P1 時按設(shè)定的方式自動進行工作。
工作方式在后面討論,這里先討論定時和計數(shù)工作狀態(tài)。在作定時器使用時,輸入的時鐘脈沖是由晶體振蕩器的輸出經(jīng) 12 分頻后得到的,所 以定時器可看做是對計算機機器周期的計數(shù)器(因為每個機器周期包含 12 個振蕩周期,故每個機器周期定時器加 1 ,可以把輸入的時鐘脈沖看成機器周期信號), 故其頻率為晶振頻率的 1/12 。如晶振頻率為 12 MHz,則定時器每接收一個輸入脈沖的時間為 1 μs 。
當它用作對外部事件計數(shù)時,接相應(yīng)的外部輸入端 T0(P3.4) 或 T1(P3.5)。 在這種情況下 ,當檢測到輸入端的電平由高跳變到低時,計數(shù)器就加 1(它在每個機器周期 的 S5P2 時采樣外部輸入 ,當采樣值在這個機器周期為高,在下一個機器周期為低時,則計數(shù)器加 1)。 加 1 操作發(fā)生在檢測到這種跳變后的一個機器周期中的 S3P1 ,因此需要兩個機器周期來識別一個從“1”到“0”的跳變,故最高計數(shù)頻率為晶振頻率的 1/24 。這就要求輸入信號的電平要在跳變后至少應(yīng)在一個機器周期內(nèi)保持不變,以保證在給定的電平再次變化前至少被采樣一次。
這里要注意的是:加法計數(shù)器是計滿溢出時才申請中斷,所以在給計數(shù)器賦初值時,不能直接輸入所需的計數(shù)值,而應(yīng)輸入的是計數(shù)器計數(shù)的最大值與這一計數(shù)值的差值,設(shè) 最大值為 M,計數(shù)值為 N,初值為 X,則 X 的計算方法如下:
計數(shù)狀態(tài):X=M-N
定時狀態(tài):X=M-定時時間/T
其中 T=12÷晶振頻率