一、結構
51單片機有2個16位的定時器/計數器,它們有四種工作方式。定時器系統的結構如下:

定時器的工作方式由寄存器TMOD選擇,TMOD如下:

定時器的四種工作方式由M1,M0選擇,對應如下:
M1 M0
0 0 方式0
0 1 方式1
1 0 方式2
1 1 方式3
C/T(非)則選擇定時器/計數器是工作在計數方式還是定時方式。1:counter 0:timer
GATE為1時選擇定時/計數器工作在門控方式
定時器的的工作由寄存器TCON控制,TCON如下:

TCON的高四位與定時/計數器有關,低四位與外部中斷有關,TRX=1時開啟定時/計數器,THX+TLX開始計數,當THX 和TLX溢出時,TFX被置1.
THX(X=0,1)和TLX(X=0,1)兩個8位的寄存器共同組成16位的寄存器,一起記錄定時/計數器的計數值。
二、四種工作方式:
1.工作方式0
當TMOD中的M0=0,M1=0時,定時/計數器工作在方式0.
定時/計數器0(t0)在工作方式0時的結構圖如下(t1與t0完全一樣):

暫時不管下半部分。從圖中可以看出,計數寄存器TH0的8位和TL0的低5位位組成13位計數器,TR0=1時(打開計數器----也和GATE有關,此時GATE=0),當C/T(非)=0時,計數時鍾源接通晶振的的12分頻,晶振每12個周期產生一個計數脈沖,計數寄存器+1,這時t0作定時器用;當C/T(非)=1時,計數時鍾源接通外部引腳P3.4,外部輸入一個脈沖,計數寄存器+1,這時t0作計數器。
當13位的計數寄存器溢出時,會把TF0位置1,如果設置了中斷,則會產生定時中斷。
書接上回,下面是定時器的其他工作方式。
一、工作方式1:(還是拿t0做說明)
定時/ 計數器的工作方式1是用的比較多的,它的結構圖如下:
(圖片遺失,轉移的時候找不到鏈接了。。。。。)
TH0的八位和TL0的八位構成一個16位定時/計數器,可以定時時間最長
在工作方式1下,計數器的計數值范圍是:
1—65536(216)
當為定時工作方式1時,定時時間的計算公式為:
(216—計數初值)╳晶振周期╳12
或 (216—計數初值)╳機器周期
其時間單位與晶振周期或機器周期相同。
如果單片機的晶振選為6.000MHz,則最小定時時間為:
[213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)
(216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。
下面說GATE:
“GATE”顧名思意既門,它通過一個反相器與INT0(非)引腳,又叫T0引腳相或(圖是在網上截的,估計有錯),如果GATE=1,或門由INT0引腳控制,INT0=1時,或門打開,與TR0相與,事先打開TR=1,那么在INT0=1的這段時間內,內部計數器就可以計數,等INT0=0時,此時計數器的計數值(TH0<<8|TL0)*(12/osc)就是外部輸入的脈沖高電平的持續時間,這種門控方式可以用來計算外部引腳輸入的脈沖頻率等。
定時器0應用舉例:
