定時計數(shù)器2是一個16位定時/計數(shù)器,通過T2CON寄存器的C/T2位可以選擇定時還是計數(shù)功能。定時器2 有3種操作模式:捕獲、自動重新裝載(遞增或遞減計數(shù))和波特率發(fā)生器,這3種模式由T2CON 中的位進行選擇,具體的選擇方式見表1。定時器2有兩個8為寄存器:TH2和TL2。在定時模式狀態(tài)下,TL2寄存器每一個機器周期加1,。由于52單片機的每一個機器周期等于12的振蕩周期,所以他的計數(shù)頻率是振蕩頻率的1/12。
表1
RCLK+TCLK
CP/RL2
TR2
MODE
0
0
1
16位自重載
0
1
1
16位捕獲
1
X
1
波特率發(fā)生器
X
X
0
關(guān)
在計數(shù)狀態(tài)下,外部引腳由1-0的負跳變是,寄存器就加1。并且在這種情況下,每當一個機器周期的S5P2的時科,單片機就對外部引腳進行采樣,如果在下一個周期里信號變?yōu)榈碗娖?,則計數(shù)器加1。在下一個周期的S3P1時刻,若檢測到有跳變,則計數(shù)器計數(shù)加1。識別1-0的跳變需要兩個機器周期(24個振蕩周期),所以計數(shù)信號的最大的頻率只能是振蕩頻率的1/24。為了確保采樣頻率能夠被采樣,被采用的電平必須保持一個機器周期不變。
1、捕獲模式
在捕獲模式,寄存器T2CON的位EXEN2有兩方式可供選擇:
若EXEN2=0,定時器2為16位定時/計數(shù)器,當計數(shù)溢出是,T2CON中的TF2置1,并向CPU申請中斷;
若EXEN2=1,定時器2出來擁有和上述一樣的功能外,還有捕獲功能:即在引腳T2EX有1-0跳變的時候,RCAP2H和RCAP2L分別捕獲并保存TH2和TL2的當前值(即RCAP2H=TH2,RCAP2L=TL2),另外T2EX腳的跳變也會使T2CON寄存器里的位EXF2值1,和TF2一樣向CPU申請中斷。
2、自重載模式(遞增/遞減計數(shù)器)
定時器2可以設(shè)置為遞增/遞減自動重載計數(shù)器,并通過DCEN(Down Counter Enable)位來控制其模式。見表2,一旦CPU復(fù)位,DCEN被清0,意味著定時器2默認是遞增計數(shù)器,當DCEN置為1時,允許定時器2遞增或遞減計數(shù),由T2EX的電平來控制器計數(shù)方向。
表1
T2MOD Address = 0C9H Reset Value = XXXX XX00B
Not Bit Address
Bit
-
-
-
-
-
-
T2OE
DCEN
7
6
5
4
3
2
1
0
Symbol
Function
-
保留
T2OE
定時器2輸出使能
DCEN
DCEN=1,允許定時器2遞增或遞減計數(shù)
圖1T2捕獲原理圖
圖2所示為定時器2自動遞增模式(DCEN=0)原理圖。在這種模式下由T2CON中的EXEN位選擇。
當EXEN=0;當計數(shù)器向上計數(shù)到0FFFFH是就會置位溢出標志位TF2,此時,寄存器RCAP2H和RCAP2L的值會自動裝載到寄存器TH2和TL2中。寄存器RCAP2H和RCAP2L的值有軟件預(yù)設(shè)。
當EXEN=1;16位重載可由兩個方式觸發(fā):計數(shù)溢出或T2EX引腳的負跳變。同時置位EXF2為1。在中斷允許的條件下,TF2和EXTF2都可以觸發(fā)中斷。
圖2T2自重載模式(DCEN=0)原理圖
當DCEN為1時,允許定時器2遞增計數(shù)或者遞減計數(shù),就如圖2所示。在這種模式下,T2EX引腳控制計數(shù)的方向。
T2EX若為邏輯“1”,定時器2遞增計數(shù),直到0FFFFH是計數(shù)器溢出,置位TF2為1,同時溢出之后,寄存器RCAP2H和RCAP2L的值會自動裝載到寄存器TH2和TL2中。
T2EX若為邏輯“0”,定時器2遞減計數(shù),當寄存器TH2和TL2的值分別和寄存器RCAP2H和RCAP2L的值相等時,計數(shù)器向下溢出,同時立即置位TF2,并把定時計數(shù)器賦值為0FFFFH。
//The EXF2 bit toggles wheneverTimer 2 overflows or underflows and can be used as a 17th bit of resolution. Inthis operating mode, EXF2 does not flag an interrupt.
// (這段話不好翻譯)
圖3
未完待續(xù)。。。