學了51單片機之后,開發板上的CPU是STC89S52RC的,就是說52單片機,里面比51的多了一個定時器2看了很多書,就是沒怎么理解,於是乎決定看AT89S52的數據手冊,翻譯一遍,可能會加深自己的理解,以后對C8051F的單片機也好好預熱一下。
定時計數器2是一個16位定時/計數器,通過T2CON寄存器的C/T2位可以選擇定時還是計數功能。定時器2 有3種操作模式:捕獲、自動重新裝載(遞增或遞減計數)和波特率發生器,這3種模式由T2CON 中的位進行選擇,具體的選擇方式見表1。定時器2有兩個8為寄存器:TH2和TL2。在定時模式狀態下,TL2寄存器每一個機器周期加1,。由於52單片機的每一個機器周期等於12的振盪周期,所以他的計數頻率是振盪頻率的1/12。
表1
RCLK+TCLK |
CP/RL2 |
TR2 |
MODE |
0 |
0 |
1 |
16位自重載 |
0 |
1 |
1 |
16位捕獲 |
1 |
X |
1 |
波特率發生器 |
X |
X |
0 |
關 |
在計數狀態下,外部引腳由1-0的負跳變是,寄存器就加1。並且在這種情況下,每當一個機器周期的S5P2的時科,單片機就對外部引腳進行采樣,如果在下一個周期里信號變為低電平,則計數器加1。在下一個周期的S3P1時刻,若檢測到有跳變,則計數器計數加1。識別1-0的跳變需要兩個機器周期(24個振盪周期),所以計數信號的最大的頻率只能是振盪頻率的1/24。為了確保采樣頻率能夠被采樣,被采用的電平必須保持一個機器周期不變。
1、 捕獲模式
在捕獲模式,寄存器T2CON的位EXEN2有兩方式可供選擇:
若EXEN2=0,定時器2為16位定時/計數器,當計數溢出是,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、 自重載模式(遞增/遞減計數器)
定時器2可以設置為遞增/遞減自動重載計數器,並通過DCEN(Down Counter Enable)位來控制其模式。見表2,一旦CPU復位,DCEN被清0,意味着定時器2默認是遞增計數器,當DCEN置為1時,允許定時器2遞增或遞減計數,由T2EX的電平來控制器計數方向。
表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遞增或遞減計數 |
圖1 T2捕獲原理圖
圖2所示為定時器2自動遞增模式(DCEN=0)原理圖。在這種模式下由T2CON中的EXEN位選擇。
當EXEN=0;當計數器向上計數到0FFFFH是就會置位溢出標志位TF2,此時,寄存器RCAP2H和RCAP2L的值會自動裝載到寄存器TH2和TL2中。寄存器RCAP2H和RCAP2L的值有軟件預設。
當EXEN=1;16位重載可由兩個方式觸發:計數溢出或T2EX引腳的負跳變。同時置位EXF2為1。在中斷允許的條件下,TF2和EXTF2都可以觸發中斷。
圖2 T2自重載模式(DCEN=0)原理圖
當DCEN為1時,允許定時器2遞增計數或者遞減計數,就如圖2所示。在這種模式下,T2EX引腳控制計數的方向。
T2EX若為邏輯“1”,定時器2遞增計數,直到0FFFFH是計數器溢出,置位TF2為1,同時溢出之后,寄存器RCAP2H和RCAP2L的值會自動裝載到寄存器TH2和TL2中。
T2EX若為邏輯“0”,定時器2遞減計數,當寄存器TH2和TL2的值分別和寄存器RCAP2H和RCAP2L的值相等時,計數器向下溢出,同時立即置位TF2,並把定時計數器賦值為0FFFFH。
//The EXF2 bit toggles whenever Timer 2 overflows or underflows and can be used as a 17th bit of resolution. In this operating mode, EXF2 does not flag an interrupt.
// (這段話不好翻譯)
圖3
未完待續。。。