




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.定時器 計數器的基本結構及工作原理80C51單片機內部設有兩個16位的可編程定時器/計數器??删幊痰囊馑际侵钙涔δ?如工作方式、定時時間、量程、啟動方式等)均可由指令來確定和改變。在定時器/計數器中除了有兩個16位的計數器之外,還有兩個特殊功能寄存器(控制寄存器和方式寄存器)。定時器/計數器的結構:從上面定時器/計數器的結構圖中我們可以看出,16位的定時/計數器分別由兩個8位專用寄存器組成,即:T0由TH0和TL0構成;T1由TH1和TL1構成。其訪問地址依次為8AH-8DH。每個寄存器均可單獨訪問。這些寄存器是用于存放定時或計數初值的。此外,其內部還有一個8位的定時器方式寄存器TMOD和一
2、個8位的定時控制寄存器TCON。這些寄存器之間是通過內部總線和控制邏輯電路連接起來的。TMOD主要是用于選定定時器的工作方式;TCON主要是用于控制定時器的啟動停止,此外TCON還可以保存T0、T1的溢出和中斷標志。當定時器工作在計數方式時,外部事件通過引腳T0(P3.4)和T1(P3.5)輸入。定時計數器的原理:16位的定時器/計數器實質上就是一個加1計數器,其控制電路受軟件控制、切換。當定時器/計數器為定時工作方式時,計數器的加1信號由振蕩器的12分頻信號產生,即每過一個機器周期,計數器加1,直至計滿溢出為止。顯然,定時器的定時時間與系統的振蕩頻率有關。因一個機器周期等于12個振蕩周期,所
3、以計數頻率fcount=1/12osc。如果晶振為12MHz,則計數周期為:T=1/(12×106)Hz×1/12=1s這是最短的定時周期。若要延長定時時間,則需要改變定時器的初值,并要適當選擇定時器的長度(如8位、13位、16位等)。當定時器/計數器為計數工作方式時,通過引腳T0和T1對外部信號計數,外部脈沖的下降沿將觸發計數。計數器在每個機器周期的S5P2期間采樣引腳輸入電平。若一個機器周期采樣值為1,下一個機器周期采樣值為0,則計數器加1。此后的機器周期S3P1期間,新的計數值裝入計數器。所以檢測一個由1至0的跳變需要兩個機器周期,故外部事年的最高計數頻率為振蕩頻率的
4、1/24。例如,如果選用12MHz晶振,則最高計數頻率為0.5MHz。雖然對外部輸入信號的占空比無特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計數脈沖的高電平與低電平保持時間均需在一個機器周期以上。當CPU用軟件給定時器設置了某種工作方式之后,定時器就會按設定的工作方式獨立運行,不再占用CPU的操作時間,除非定時器計滿溢出,才可能中斷CPU當前操作。CPU也可以重新設置定時器工作方式,以改變定時器的操作。由此可見,定時器是單片機中效率高而且工作靈活的部件。綜上所述,我們已知定時器/計數器是一種可編程部件,所以在定時器/計數器開始工作之前,CPU必須將一些命令(稱為控制字)寫入定時
5、/計數器。將控制字寫入定時/計數器的過程叫定時器/計數器初始化。在初始化過程中,要將工作方式控制字寫入方式寄存器,工作狀態字(或相關位)寫入控制寄存器,賦定時/計數初值。下面我們就提出的控制字的格式及各位的主要功能與大家詳細的講解??刂萍拇嫫鞫〞r器/計數器T0和T1有2個控制寄存器-TMOD和TCON,它們分別用來設置各個定時器/計數器的工作方式,選擇定時或計數功能,控制啟動運行,以及作為運行狀態的標志等。其中,TCON寄存器中另有4位用于中斷系統。定時器/計數器方式寄存器TMOD:定時器方式控制寄存器TMOD在特殊功能寄存器中,字節地址為89H,無位地址。TMOD的格式如下圖所示。由圖可見,
6、TMOD的高4位用于T1,低4使用于T0,4種符號的含義如下:GATE:門控制位。GATE和軟件控制位TR、外部引腳信號INT的狀態,共同控制定時器/計數器的打開或關閉。C/T:定時器/計數器選擇位。C/T=1,為計數器方式;C/T=0,為定時器方式。M1M0:工作方式選擇位,定時器/計數器的4種工作方式由M1M0設定。工作方式功能描述0 00 11 01 1工作方式0工作方式1工作方式2工作方式313位計數器16位計數器自動再裝入8位計數器定時器0:分成兩個8位計數器定時器1:停止計數定時器/計數器方式控制寄存器TMOD不能進行位尋址,只能用字節傳送指令設置定時器工作方式,低半字節定義為定時
7、器0,高半字節定義為定時器1。復位時,TMOD所有位均為0。例:設定定時器1為定時工作方式,要求軟件啟動定時器1按方式2工作。定時器0為計數方式,要求由軟件啟動定時器0,按方式1工作。我們怎么來實現這個要求呢?大家先看上面TMOD寄存器各位的分布圖第一個問題:控制定時器1工作在定時方式或計數方式是哪個位?通過前面的學習,我們已知道,C/T位(D6)是定時或計數功能選擇位,當C/T=0時定時/計數器就為定時工作方式。所以要使定時/計數器1工作在定時器方式就必需使D6為0。第二個問題:設定定時器1按方式2工作。上表中可以看出,要使定時/計數器1工作在方式2,M0(D4)M1(D5)的值必須是1 0
8、。第三個問題:設定定時器0為計數方式。與第一個問題一樣,定時/計數器0的工作方式選擇位也是C/T(D2),當C/T=1時,就工作在計數器方式。第四個問題:由軟件啟動定時器0,前面已講過,當門控位GATE=0時,定時/計數器的啟停就由軟件控制。第五個問題:設定定時/計數器工作在方式1,使定時/計數器0工作在方式1,M0(D0)M1(D1)的值必須是0 1。從上面的分析我們可以知道,只要將TMOD的各位,按規定的要求設置好后,定時器/計靈敏器就會按我們預定的要求工作。我們分析的這個例子最后各位的情況如下:D7 D6 D5 D4 D3 D2 D1 D0 00 10 01 01二進制數00100101
9、=十六進制數25H。所以執行MOV TMOD,#25H這條指令就可以實現上述要求。定時器/計數器控制寄存器TCON:TCON在特殊功能寄存器中,字節地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,十分便于進行位操作。TCON的作用是控制定時器的啟、停,標志定時器溢出和中斷情況。TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時器/計數器;IEl,ITl,IE0和IT0位用于中斷系統。各位定義如下:TF1:定時器1溢出標志位。當字時器1計滿溢出時,由硬件使TF1置"1",并且申請中斷。進入中斷服務程序后,由硬件自動清"0&q
10、uot;,在查詢方式下用軟件清"0"。TR1:定時器1運行控制位。由軟件清"0"關閉定時器1。當GATE=1,且INT1為高電平時,TR1置"1"啟動定時器1;當GATE=0,TR1置"1"啟動定時器1。TF0:定時器0溢出標志。其功能及操作情況同TF1。TR0:定時器0運行控制位。其功能及操作情況同TR1。IE1:外部中斷1請求標志。IT1:外部中斷1觸發方式選擇位。IE0:外部中斷0請求標志。IT0:外部中斷0觸發方式選擇位。TCON中低4位與中斷有關,我們將在下節課講中斷時再給予講解。由于TCON是可以位尋址
11、的,因而如果只清溢出或啟動定時器工作,可以用位操作命令。例如:執行"CLR TF0"后則清定時器0的溢出;執行"SETB TR1"后可啟動定時器1開始工作(當然前面還要設置方式定)。定時器/計數器的初始化:由于定時器/計數器的功能是由軟件編程確定的,所以一般在使用定時/計數器前都要對其進行初始化,使其按設定的功能工作。初始貨的步驟一般如下:1、確定工作方式(即對TMOD賦值);2、預置定時或計數的初值(可直接將初值寫入TH0、TL0或TH1、TL1);3、根據需要開放定時器/計數器的中斷(直接對IE位賦值);4、啟動定時器/計數器(若已規定用軟件啟動,則
12、可把TR0或TR1置"1";若已規定由外中斷引腳電平啟動,則需給外引腳步加啟動電平。當實現了啟動要求后,定時器即按規定的工作方式和初值開始計數或定時)。下面介紹一下確定時時/計數器初值的具體方法。因為在不同工作方式下計數器位數不同,因而最大計數值也不同?,F假設最大計數值為M,那么各方式下的最大值M值如下:方式0:M=213=8 192方式1:M=216=65 536方式2:M=28=256方式3:定時器0分成兩個8位計數器,所以兩個M均為256。因為定時器/計數器是作"加1"計數,并在計數滿溢出時產生中斷,因此初值X可以這樣計算:X=M-計數值下面舉例說
13、明初值的確定方法。例1、選擇T1方式0用于定時,在P1.1輸出周期為1ms方波,晶振fosc=6MHz。解:根據題意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定時時間為500us,因定時時間不長,取方式0即可。則M1 M0=0;因是定時器方式,所以C/T=0;在此用軟件啟動T1,所以GATE=0。T0不用,方式字可任意設置,只要不使其進入方式3即可,一般取0,故TMOD=00H。系統復位后TMOD為0,可不對TMOD重新清0。下面計算500us定時T1初始值:機器周期T=12/fosc=12/(6×106)Hz=2s設初值為X,則:(1013-X)
14、5;2×10-6s=500×10-6s X=7942D=1111100000110 B=1F06H因為在作13位計數器用時,TL1的高3位未用,應填寫0,TH1占用高8位,所以X的實際填寫應為:X=111100000000110 B=F806H結果:TH1=F8H,TL1=06H源程序如下:ORG 2000H MOV TL1,#06H;給TL1置初值MOV TH1,#0F8H;給TH1置初值SETB TR1;啟動T1 LP1:JBC TF1,LP2;查詢計數溢出否?AJMP LP1 LP2:MOV TL1,#06H;重新設置計數初值MOV TH1,#0F8H CPL P1.
15、1;輸出取反AJMP LP1;重復循環定時器/計數器的四種工作方式:定T0或T1無論用作定時器或計數器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作狀態。下面以T1為例,分述各種工作方式的特點和用法。工作方式0:13位方式由TL1的低5位和TH1的8位構成13位計數器(TL1的高3位無效)。工作方式0的結構見下圖:為定時/計數選擇:C/T=0,T1為定時器,定時信號為振蕩周期12分頻后的脈沖;C/T=l,T1為計數器,計數信號來自引腳T1的外部信號。定時器T1能否啟動工作,還受到了R1、GATE和引腳信號INT1的控制。由圖中的邏輯電路可知,當GATE
16、=0時,只要TR1=1就可打開控制門,使定時器工作;當GATE=1時,只有TR1=1且INT1=1,才可打開控制門。GATE,TR1,C/T的狀態選擇由定時器的控制寄存器TMOD,TCON中相應位狀態確定,INT1則是外部引腳上的信號。在一般的應用中,通常使GATE=0,從而由TRl的狀態控制Tl的開閉:TRl=1,打開T1;TRl=0,關閉T1。在特殊的應用場合,例如利用定時器測量接于INT1引腳上的外部脈沖高電平的寬度時,可使GATE=1,TRl=1。當外部脈沖出現上升沿,亦即INT1由0變1電平時,啟動T1定時,測量開始;一旦外部脈沖出現下降沿,亦即INT1由l變O時就關閉了T1。定時器
17、啟動后,定時或計數脈沖加到TLl的低5位,從預先設置的初值(時間常數)開始不斷增1。TL1計滿后,向THl進位。當TL1和THl都計滿之后,置位T1的定時器回零標志TFl,以此表明定時時間或計數次數已到,以供查詢或在打開中斷的條件下,可向CPU請求中斷。如需進一步定時/計數,需用指令重置時間常數。方式0是13位計數結構的工作方式,其計數器由TH0全部8位和TL0的低5位構成。當TL0的低5位計數溢出時,向TH0進位,而全部13位計數溢出時,則向計數溢出標志位TF0進位。在方式0下,當為計數工作方式時,計數值的范圍是:18192(213)當為定時工作方式時,定時時間的計算公式為:(213-計數初
18、值)×晶振周期×12或(213-計數初值)×機器周期其時間單位與晶振周期或機器周期相同(ms)。例題1:當某單片機系統的外接晶振頻率為6MHz,該系統的最小定時時間為:213-(213-1)×1/(6×106)×12=2×10-6=2(ms)最大定時時間為:(213-0)×1/(6×106)×12=16384×10-6=16384(ms)或:最小定時單位×1013=16384(ms)例題2:設某單片機系統的外接晶振頻率為6MHz,使用定時器1以方式0產生周期為500ms的等寬
19、正方波連續脈沖,并由P1.0輸出。以查詢方式完成。計算計數初值欲產生500ms的等寬正方波脈沖,只需在P1.0端以250ms為周期交替輸出高低電平即可實現,為此定時時間應為250ms。使用6MHz晶振,根據上例的計算,可知一個機器周期為2ms。方式0為13位計數結構。設待求的計數初值為X,則:(213-X)×2×10-6=250×10-6求解得:X=213-(250÷2)=8067。二進制數表示為1111110000011。十六進制表示,高8位為FCH,放入TH1,即TH1=FCH;低5位為03H。放入TL1,即TL1=03H。TMOD寄存器初始化為把定
20、時器/計數器1設定為方式0,則M1M0=00;為實現定時功能,應使C/T=0;為實現定時器/計數器1的運行控制,則GATE=0。定時器/計數器0不用,有關位設定為0。因此TMOD寄存器應初始化為00H。由定時器控制寄存器TCON中的TR1位控制定時的啟動和停止TR1=1啟動,TR1=0停止。程序設計:MOV TMOD,#00H;設置T1為工作方式0 MOV TH1,#OFCH;設置計數初值MOV TL1,#03H MOV IE,#00H;禁止中斷LOOP:SETB TR1;啟動定時JBC TF1,LOOP1;查詢計數溢出AJMP LOOP LOOP1:MOV TH1,#FCH;重新設置計數初值
21、MOV TL1,#03H CLR TF1;計數溢出標志位清0 CPL P1.0;輸出取反AJMP LOOP;重復循環工作方式1:方式1是16位計數結構的工作方式,計數器由TH0全部8位和TL0全部8位構成。與工作方式0基本相同,區別僅在于工作方式1的計數器TL1和TH1組成16位計數器,從而比工作方式0有更寬的定時/計數范圍。當為計數工作方式時,計數值的范圍是:165536(216)當為定時工作方式時,定時時間計算公式為:(216-計數初值)×晶振周期×12或(216-計數初值)×機器周期例題1:當某單片機系統的外部晶振頻率為6MHz,則最小定時時間為:216-(
22、216-1)×1/6×10-6×12=2×10-6=2(ms)最大定時時間為:(216-0)×1/6×10-6×12=131072×10-6(s)=131072(ms)131(ms)例題2:某單片機系統外接晶振頻率為6MHz,使用定時器1以工作方式1產生周期為500ms的等寬連續正方波脈沖,并在P1.0端輸出。,但以中斷方式完成。計算計數初值TH1=FFH TL1=83HTMOD寄存器初始化TMOD=10H程序設計主程序:MOV TMOD,#10H;定時器1工作方式1 MOV TH1,#0FFH;設置計數初值MOV
23、 TL1,#0A1H SETB EA;開中斷SETB ET1;定時器1允許中斷LOOP:SETB TR1;定時開始HERE:SJMP$;等待中斷中斷服務程序:MOV TH1,#0FFH;重新設置計數初值MOV TL1,#0A1H CPL P1.0;輸出取反RETI;中斷返回工作方式2 8位自動裝入時間常數方式。由TLl構成8位計數器,THl僅用來存放時間常數。啟動T1前,TLl和THl裝入相同的時間常數,當TL1計滿后,除定時器回零標志TFl置位,具有向CPU請求中斷的條件外,THl中的時間常數還會自動地裝入TLl,并重新開始定時或計數。所以,工作方式2是一種自動裝入時間常數的8位計數器方式。
24、由于這種方式不需要指令重裝時間常數,因而操作方便,在允許的條件下,應盡量使用這種工作方式。當然,這種方式的定時/計數范圍要小于方式0和方式1。工作方式2的結構見下圖.當計數溢出后,不是像前兩種工作方式那樣通過軟件方法,而是由預置寄存器TH以硬件方法自動給計數器TL重新加載。變軟件加載為硬件加載。初始化時,8位計數初值同時裝入TL0和TH0中。當TL0計數溢出時,置位TF0,同時把保存在預置寄存器TH0中的計數初值自動加載TL0,然后TL0重新計數。如此重復不止。這不但省去了用戶程序中的重裝指令,而且也有利于提高定時精度。但這種工作方式下是8位計數結構,計數值有限,最大只能到255。這種自動重新
25、加載工作方式非常適用于循環定時或循環計數應用,例如用于產生固定脈寬的脈沖,此外還可以作串行數據通信的波特率發送器使用。例題1:使用定時器0以工作方式2產生100ms定時,在P1.0輸出周期為200ms的連續正方波脈沖。已知晶振頻率fosc=6MHz。計算計數初值6MHz晶振下,一個機器周期為2ms,以TH0作重裝載的預置寄存器,TL0作8位計數器,假設計數初值為X,則:(28-X)×2×10-6=100×10-6求解得:X=206D=11001110 B=0CEH把0CEH分別裝入TH0和TL0中:TH0=0CEH,TL0=0CEHTMOD寄存器初始化定時器/計數
26、器0為工式方式2,M1M0=10;為實現定時功能C/T=0;為實現定時器/計數器0的運行GATE=0;定時器/計數器1不用,有關位設定為0。綜上情況TMOD寄存器的狀態應為02H。程序設計(查詢方式)MOV IE,#00H;禁止中斷MOV TMOD,#02H;設置定時器0為方式2 MOV TH0,#0CEH;保存計數初值MOV TL0,#0CEH;設置計數初值SETB TR0;啟動定時LOOP:JBC TF0,LOOP1;查詢計數溢出AJMP LOOP LOOP1:CPL P1.0;輸出方波AJMP LOOP;重復循環由于方式2具有自動重裝載功能,因此計數初值只需設置一次,以后不再需要軟件重置
27、。程序設計(中斷方式)主程序:MOV TMOD,#02H;定時器0工作方式2 MOV TH0,#0CEH;保存計數初值MOV TL0,#0CEH;設置計數初值SETB EA;開中斷SETB ET0;定時器0允許中斷LOOP:SETB TR0;開始定時HERE:SJMP$;等待中斷CLP TF0;計數溢出標志位清0 AJMP LOOP中斷服務中斷:CPL P1.0;輸出方波RETI;中斷返回例題2:用定時器1以工作方式2實現計數,每計100次進行累加器加1操作。計算計數初值28-100=156D=09CH則TH1=09CH,TL1=09CHTMOD寄存器初始化M1M0=10,C/T=1,GATE
28、=0因此TMOD=60H程序設計MOV IE,#00H;禁止中斷MOV TMOD,#60H;設置計數器1為方式2 MOV TH1,#9CH;保存計數初值MOV TL1,#9CH;設置計數初值SETB TR1;啟動計數DEL:JBC TF1,LOOP;查詢計數溢出AJMP DEL LOOP:INC A;累加器加1 AJMP DEL;循環返回工作方式3 2個8位方式。工作方式3只適用于定時器0。如果使定時器1為工作方式3,則定時器1將處于關閉狀態。當T0為工作方式3時,THo和TL0分成2個獨立的8位計數器。其中,TL0既可用作定時器,又可用作計數器,并使用原T0的所有控制位及其定時器回零標志和中
29、斷源。TH0只能用作定時器,并使用T1的控制位TRl、回零標志TFl和中斷源,見下圖。通常情況下,T0不運行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時,T1往往用作串行口波特率發生器(見1.4),TH0用作定時器,TL0作為定時器或計數器。所以,方式3是為了使單片機有1個獨立的定時器/計數器、1個定時器以及1個串行口波特率發生器的應用場合而特地提供的。這時,可把定時器l用于工作方式2,把定時器0用于工作方式3。下才可能使用。這時,T1往往用作串行口波特率發生器,TH0用作定時器,TL0作為定時器或計數器。所以,方式3是為了使單片機有1個獨立的定時器/計數器、1
30、個定時器以及1個串行口波特率發生器的應用場合而特地提供的。這時,可把定時器l用于工作方式2,把定時器0用于工作方式3。理解內容定時器/計數器的應用例1、設fosc=6MHz,利用單片機內定時/計數器及P10口線輸出1000個脈沖,脈沖周期為2ms,試編程。解:T=12×1/fosc=2us選取T0定時;T1計數。設T0采用中斷方式產生周期為2ms方波,T1對該方波計數,當輸出至第1000個脈沖時,使TF1置1。在主程序中用查詢方法,檢測到TF1變1時,關掉T0,停止輸出方波。T0、T1參數的確定:T0模式0、定時:脈寬為脈沖周期的一半所以,X=213-1ms/2us=0001 1110 0000 1100B TH0=0F0H TL0=0CH T1模式1、計數:N=1000則X=65
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CWAN 0015-2020釬焊接頭質量評價規范
- T/CSRA 21-2022塑料成分測試塑料制品中聚乙烯(PE)、聚丙烯(PP)、聚苯乙烯(PS)、聚氯乙烯(PVC)、乙烯-醋酸乙烯共聚物(EVA)、聚對苯二甲酸乙二醇酯(PET)定性分析方法
- T/CSPSTC 44-2019城市軌道交通運營保護區安全管理技術規范
- T/CSIQ 8005-2018背包與手袋
- T/CSIQ 1000-2015藝術品鑒證質量溯源規程總則
- T/CSBME 076-2023血液透析器中二甲基乙酰胺(DMAC)溶出量的測定方法氣相色譜法
- T/CRIA 16016-2023防物料粘附織物芯輸送帶
- T/CNCA 011-2021井工煤礦自然災害承災體調查技術要求
- T/CMES 37003-2022景區玻璃類觀景設施安全規范
- T/CIE 164-2023上合國家間企業信用調查報告格式規范
- 互聯網金融時代大學生消費行為影響因素研究
- 食品藥品安全監管的問題及對策建議
- 信號檢測與估計知到章節答案智慧樹2023年哈爾濱工程大學
- 國家開放大學一平臺電大《法律社會學》我要考形考任務2及3題庫答案
- 公司收文處理箋
- 6G 移動通信系統
- 環境因素識別評價表(一)
- 《三毛流浪記》作者簡介張樂平
- 2023年山西建設投資集團有限公司招聘筆試題庫及答案解析
- 鐵皮石斛的抗氧化、保濕功效研究和應用現狀
- GB/Z 18620.4-2008圓柱齒輪檢驗實施規范第4部分:表面結構和輪齒接觸斑點的檢驗
評論
0/150
提交評論