版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第7章章 定時定時/計數(shù)器計數(shù)器 寄存器寄存器 5151系列單片機片內(nèi)有二個十六位定時系列單片機片內(nèi)有二個十六位定時/ /計數(shù)器:計數(shù)器:定時器定時器0(T0)0(T0)和定時器和定時器1(T1)1(T1)。 兩個定時器都有定時或事件計數(shù)的功能,可用兩個定時器都有定時或事件計數(shù)的功能,可用于定時控制、延時、對外部事件計數(shù)和檢測等場合于定時控制、延時、對外部事件計數(shù)和檢測等場合 定時定時/ /計數(shù)器實際上是計數(shù)器實際上是1616位加位加1 1計數(shù)器。計數(shù)器。 T0T0由由2 2個個8 8位特殊功能寄存器位特殊功能寄存器TH0TH0和和TL0TL0構(gòu)成,構(gòu)成, T1T1由由2 2個個8 8位特殊
2、功能寄存位特殊功能寄存TH1TH1和和TL1TL1構(gòu)成。構(gòu)成。每個定時器都可由軟件設(shè)置為定時工作方式或每個定時器都可由軟件設(shè)置為定時工作方式或 計數(shù)工作方式。計數(shù)工作方式。T0和和T1受受特殊功能寄存器特殊功能寄存器TMODTMOD和和TCONTCON控制??刂啤?1). 定時工作方式定時工作方式 設(shè)置為定時工作方式時,定時器計數(shù)的脈設(shè)置為定時工作方式時,定時器計數(shù)的脈沖是由沖是由51單片機片內(nèi)振蕩器經(jīng)單片機片內(nèi)振蕩器經(jīng)12分頻后產(chǎn)生分頻后產(chǎn)生的。的。 每經(jīng)過一個機器周期定時器每經(jīng)過一個機器周期定時器(T0或或T1)的數(shù)的數(shù)值加值加1直至計數(shù)滿產(chǎn)生溢出。直至計數(shù)滿產(chǎn)生溢出。如:當(dāng)如:當(dāng)8051
3、采用采用12MHz晶體時,每個機器周晶體時,每個機器周期為期為1s,計,計5 個機器周期即為個機器周期即為5 s,即定時,即定時5 s 。 2). 計數(shù)工作方式計數(shù)工作方式 設(shè)置為計數(shù)工作方式時,通過引腳設(shè)置為計數(shù)工作方式時,通過引腳T0(P3T0(P34)4)和和T1(P3T1(P35)5)對外部脈沖信號計數(shù)。對外部脈沖信號計數(shù)。 當(dāng)輸入脈沖信號產(chǎn)生由當(dāng)輸入脈沖信號產(chǎn)生由1 1至至0 0的下降沿時,計數(shù)器的下降沿時,計數(shù)器的值加的值加1, 1, 在每個機器周期在每個機器周期CPUCPU采樣采樣T0T0和和T1T1的輸入電平。的輸入電平。若前一個機器周期采樣值為高,下一個機器周期采樣若前一個機
4、器周期采樣值為高,下一個機器周期采樣值為低,則計數(shù)器加值為低,則計數(shù)器加 1 1。 由于檢測一個由于檢測一個1 1至至0 0的跳變需要二個機器周期,故的跳變需要二個機器周期,故最高計數(shù)頻率為振蕩頻率的二十四分之一。最高計數(shù)頻率為振蕩頻率的二十四分之一。 雖然對輸入信號的占空比無特殊要求,但為了確雖然對輸入信號的占空比無特殊要求,但為了確保某個電平在變化之前至少被采樣一次,要求電平保保某個電平在變化之前至少被采樣一次,要求電平保持時間至少是一個完整的機器周期。持時間至少是一個完整的機器周期。定時計數(shù)器的內(nèi)部邏輯電路結(jié)構(gòu)定時計數(shù)器的內(nèi)部邏輯電路結(jié)構(gòu) &1C/TC/T寄存器寄存器定時器共有兩
5、個控制寄存器:定時器共有兩個控制寄存器: 定時器工作模式寄存器定時器工作模式寄存器TMOD(89H) 定時器控制定時器控制TCON(88H)1). 工作模式寄存器工作模式寄存器TMOD(89H) TMOD用于控制用于控制T0和和T1的操作模式。其各位的操作模式。其各位的定義如下:的定義如下: TMOD D7D6D5D4 D3D2D1 D0 (89H)GATE C/T M1 M0GATE C/TM1 M0定時器定時器T0 定時器定時器T1 GATE:門控信號:門控信號 GATE=0,TRx=1時即可啟動定時器工作時即可啟動定時器工作 ; GATE=1, TRx=1 INTx=1才可啟動定時器工作
6、。才可啟動定時器工作。 C/T:定時器:定時器/計數(shù)器選擇位計數(shù)器選擇位 C/T=1,為計數(shù)器方式;,為計數(shù)器方式; C/T=0,為定時器方式。,為定時器方式。 M1 M0 工作模式選擇位工作模式選擇位 M1M0=00 工作方式工作方式0(13位方式)。位方式)。 M1M0=01 工作方式工作方式1(16位方式)。位方式)。 M1M0=10 工作方式工作方式2(8位自動再裝入方式)。位自動再裝入方式)。 M1M0=11 工作方式工作方式3(T0為為2個個8位方式)。位方式)。 TF1 TR1TF0 TR0 IE1IT1 IE0IT0T1 請求請求有有/無無 T1工作工作啟啟/停停 T0 請求請
7、求有有/無無 T0 工作工作啟啟/停停 INT1 請求請求有有/無無 INT1方式方式下沿下沿/ 低低電平電平 INT0請求請求有有/無無 INT0方式方式下沿下沿/低低電平電平 2). 控制寄存器控制寄存器TCON(88H) TCON寄存器寄存器 中定時器控制中定時器控制 僅用了其中高四位,其意義僅用了其中高四位,其意義如下:如下: TF1:T1溢出中斷請求標(biāo)志。溢出中斷請求標(biāo)志。 TF1=1,T1有溢出中斷請求。有溢出中斷請求。 TF1=0,T1無溢出中斷請求。無溢出中斷請求。 TR1:T1運行控制位。運行控制位。 TR1=1,啟動,啟動T1工作。工作。 TR1=0,停止,停止T1工作。工
8、作。 TF0:T0溢出中斷請求標(biāo)志。溢出中斷請求標(biāo)志。 TF0=1,T0有溢出中斷請求。有溢出中斷請求。 TF0=0,T0無溢出中斷請求。無溢出中斷請求。 TR0:T0運行控制位。運行控制位。 TR0=1,啟動,啟動T0工作。工作。 TR0=0,停止,停止T0工作。工作。3 定時器的四種工作方式定時器的四種工作方式 對對TMOD寄存器的寄存器的M1、M0位的設(shè)置,可選擇四種工作位的設(shè)置,可選擇四種工作方式,即方式方式,即方式0、方式、方式1、方式、方式2和方式和方式3。下面用下面用THX、TLX(X=1或或0)表示)表示TH1 TL1 TH0 TL0。方式方式 定時器定時器(T0或或T1)工作
9、于工作于13位定時、計數(shù)方式。位定時、計數(shù)方式。用于計數(shù)方式時最大計數(shù)值為用于計數(shù)方式時最大計數(shù)值為 213 8192個脈沖個脈沖用于定時工作時,定時時間為:用于定時工作時,定時時間為: t(213一一T0初值初值) 時鐘周期時鐘周期12在這種模式下,在這種模式下,16位寄存器位寄存器(THx和和TLx)只用只用13位,其位,其中中THx占高占高8位。其中位。其中TLx占低占低5位,位, TLx的高的高3位末用。位末用。當(dāng)當(dāng)TLx的低的低5位溢出時向位溢出時向THx進位進位,而而THx溢出時硬件置溢出時硬件置位位TF0,并申請中斷。,并申請中斷。 定時、計數(shù)溢出否可查詢定時、計數(shù)溢出否可查詢T
10、F0是否置位,如果開是否置位,如果開中斷則產(chǎn)生溢出中斷。中斷則產(chǎn)生溢出中斷。 2) .方式方式1 當(dāng)當(dāng)TMOD中中M1M0=01時,定時計數(shù)器工作在方式時,定時計數(shù)器工作在方式1。該模式是一個該模式是一個16位定時計數(shù)方式。位定時計數(shù)方式。寄存器寄存器TH0和和TL0是以全是以全16位參與操作,位參與操作,計數(shù)方式時最大計數(shù)計數(shù)方式時最大計數(shù) 21665536(個外部脈沖個外部脈沖) 用于定時工作方式時,定時時間為:用于定時工作方式時,定時時間為: t(216一一T0初值初值) 時鐘周期時鐘周期12 16位寄存器位寄存器(THx和和TLx) 中中THx提供高提供高8位、位、TLx提供低提供低8
11、位計數(shù)初值位計數(shù)初值 3 3). .方式方式2 2 當(dāng)當(dāng)TMODTMOD中中M1M0=10M1M0=10時,定時器工作在方式時,定時器工作在方式2 2。方式方式2 2是是8 8位的可自動重裝載的定時計數(shù)方式。位的可自動重裝載的定時計數(shù)方式。1616位的計數(shù)器被拆成兩個位的計數(shù)器被拆成兩個8 8位,其中位,其中TL0TL0用作用作8 8位計數(shù)器,位計數(shù)器, TH0TH0用以保持計數(shù)初值。當(dāng)用以保持計數(shù)初值。當(dāng)TL0TL0計數(shù)溢出,置計數(shù)溢出,置TF0TF0,TH0TH0中的中的初值自動裝入初值自動裝入TL0TL0,繼續(xù)計數(shù),循環(huán)重復(fù)計數(shù)。,繼續(xù)計數(shù),循環(huán)重復(fù)計數(shù)。用于計數(shù)工作方式時,最大計數(shù)值為
12、:用于計數(shù)工作方式時,最大計數(shù)值為: 2 28 8256(256(個外部脈沖個外部脈沖) )。 用于定時工作方式時,其定時時間為;用于定時工作方式時,其定時時間為; t t(2(28 8TH0TH0初值初值) )振蕩周期振蕩周期1212這種工作方式可省去用戶重裝常數(shù)的程序,并可產(chǎn)生精這種工作方式可省去用戶重裝常數(shù)的程序,并可產(chǎn)生精確的定時時間,特別適用作串行口波待率發(fā)生器確的定時時間,特別適用作串行口波待率發(fā)生器。 4 4). .方式方式3 3 當(dāng)當(dāng)TMODTMOD中中M1M0=11M1M0=11時,定時器工作在方式時,定時器工作在方式3 3。若將若將T0T0設(shè)置為模式設(shè)置為模式3 3,TL0
13、TL0和和TH0TH0被分成為兩個互相獨立被分成為兩個互相獨立的的8 8位計數(shù)器位計數(shù)器TH0TH0和和 TL0 TL0 。 TL0TL0可工作為定時方式或計數(shù)方式。占用原可工作為定時方式或計數(shù)方式。占用原T0T0的各控制的各控制位、引腳和中斷源。即位、引腳和中斷源。即C CT T、GATEGATE、TR0TR0、TF0TF0和和T0 (P3.4)T0 (P3.4)引腳、引腳、INT0 (P3.2)INT0 (P3.2)引腳。引腳。 TH0TH0只可用作定時功能,占用定時器只可用作定時功能,占用定時器T1T1的控制位的控制位TR1TR1和和T1T1的中斷標(biāo)志位的中斷標(biāo)志位TF1TF1,其啟動和
14、關(guān)閉僅受,其啟動和關(guān)閉僅受TRlTRl的控制。的控制。定時器定時器T1T1無模式無模式 3, 3, 此時,此時,T1T1可工作于方式可工作于方式0 0、1 1、2 2,但不能使用中斷方式。但不能使用中斷方式。 只有將只有將T1T1用做串行口的波特率發(fā)生器時,用做串行口的波特率發(fā)生器時,T0T0才工作在才工作在方式方式3 3,以便增加一個定時器。,以便增加一個定時器。4 定時定時/計數(shù)器的應(yīng)用程序設(shè)計計數(shù)器的應(yīng)用程序設(shè)計1 1)定時器的計數(shù)初值)定時器的計數(shù)初值C C的計算和裝入的計算和裝入 如前所述,如前所述,8xx518xx51定時器定時器/ /計數(shù)器不同工作方式的模值計數(shù)器不同工作方式的模
15、值不同,由于采用加不同,由于采用加1 1計數(shù),因此計數(shù)初值應(yīng)為負值,計計數(shù),因此計數(shù)初值應(yīng)為負值,計算機中用有符號數(shù)采用補碼表示。算機中用有符號數(shù)采用補碼表示。 計數(shù)初值(計數(shù)初值(C C)的求法如下。)的求法如下。 計數(shù)方式:計數(shù)方式: 計數(shù)初值計數(shù)初值 C=C=模模-X-X(其中(其中X X為要計的脈沖個數(shù))為要計的脈沖個數(shù))定時方式:定時方式: 計數(shù)初值計數(shù)初值 C= t / MCC= t / MC補補= =模模t / MCt / MC 其中其中t t為欲定時時間,為欲定時時間,MCMC為為8xx518xx51的機器周期的機器周期MC=12/foscMC=12/fosc 當(dāng)采用當(dāng)采用12
16、MHZ12MHZ晶振時,晶振時,MC=1usMC=1us; 當(dāng)采用當(dāng)采用6MHZ6MHZ晶振時,晶振時,MC=2usMC=2us。方式0( 13位方式): C=(-64H)補=2000H64H=1F9CH 1F9CH0001 1111 1001 1100B 把把13位中的高八位1111 1100B1111 1100B裝入裝入TH0TH0, 而把而把13位中的低五位低五位xxx1 1100Bxxx1 1100B裝裝入TL0TL0。 MOV TH0MOV TH0,#0FCH#0FCH; MOV TL0MOV TL0,#1CH#1CH;( (xxxxxx用用“0 0”填入填入)方式方式1(161(1
17、6位方式位方式) ): C=C=(-64H-64H)補補=10000H-64H=FF9CH=10000H-64H=FF9CH 用指令裝入計數(shù)初值用指令裝入計數(shù)初值: MOV TH0MOV TH0,#0FFH#0FFH MOV TL0 MOV TL0,#9CH#9CH例例 要計要計100個脈沖的計數(shù)初值個脈沖的計數(shù)初值方式方式2(8位自動再裝入方式)位自動再裝入方式) C=(64H)補)補=100H64H=9CH 初值既要裝入初值既要裝入TH0,也要裝入,也要裝入TL0: MOV TH0,#9CH MOV TL0,#9CH2) 定時計數(shù)器的初始化編程定時計數(shù)器的初始化編程 定時計數(shù)器的初始化編程
18、步驟定時計數(shù)器的初始化編程步驟:(1)根據(jù)定時時間要求或計數(shù)要求計算計數(shù)器初值;)根據(jù)定時時間要求或計數(shù)要求計算計數(shù)器初值;(2)工作方式控制字送)工作方式控制字送TMOD寄存器;寄存器;(3)送計數(shù)初值的高八位和低八位到)送計數(shù)初值的高八位和低八位到THX和和TLX寄存寄存 器中;器中;(4)啟動定時(或計數(shù)),即將)啟動定時(或計數(shù)),即將TRX置位。置位。 如果工作于中斷方式,需要置位如果工作于中斷方式,需要置位EA(中斷總開關(guān))(中斷總開關(guān))及及ETX(允許定時(允許定時/計數(shù)器中斷)。并編中斷服務(wù)程序。計數(shù)器中斷)。并編中斷服務(wù)程序。1)方式)方式0的應(yīng)用的應(yīng)用 例例1:利用:利用T
19、0方式方式0產(chǎn)生產(chǎn)生1 ms的定時,在的定時,在P1.2 引引腳上輸出周期為腳上輸出周期為2ms的方波。設(shè)單片機晶振頻的方波。設(shè)單片機晶振頻率率fosc12MHz。 解:解:(1) 確定工作方式確定工作方式 : (TMOD)=00H (2)計算計算1 ms定時時定時時T0的初值的初值 機器周期機器周期 T = 1fosc12 = 1s 計數(shù)個數(shù):計數(shù)個數(shù):X =1ms/ls = 1000 設(shè)設(shè)T0的計數(shù)初值為,則的計數(shù)初值為,則 x0 (213一一X) 81921000 7192D3 3 應(yīng)用編程舉例應(yīng)用編程舉例 解得:解得:T0初值初值=7192=1C18H=0001110000011000
20、B,其中將高,其中將高8位位11100000 B=E0H賦給賦給TH0,低,低5位位00011000=18H賦給賦給TL0。 (3) 編程方法編程方法 方法一:采用中斷工作方式,編程如下:方法一:采用中斷工作方式,編程如下:ORG 0000HAJMP MAIN ;轉(zhuǎn)主程序;轉(zhuǎn)主程序MAIN ORG 000BHAJMP IT0P ;轉(zhuǎn);轉(zhuǎn)T0中斷服務(wù)程序中斷服務(wù)程序IT0P ORG 1000H MAIN: MOV SP,#60H ;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD,#00H :設(shè)置:設(shè)置T0為方式為方式0,定時,定時 MOV TL0 , #18H ;送定時初值;送定時初值 MOV TH0
21、,#0E0H SETB EA ;CPU開中斷開中斷 SETB ET0 ;T0允許中斷允許中斷 SETB TR0 ;啟動;啟動T0定時定時 HERE: SJMP HERE ;等待中斷;等待中斷 中斷服務(wù)程序:中斷服務(wù)程序: ORG 0200H ;T0中斷入口中斷入口 CPL P1.2 ;輸出方波;輸出方波 MOV TL0,#18H ;重新裝入計數(shù)初值;重新裝入計數(shù)初值 MOV TH0,#0E0H RETI ;中斷返回;中斷返回 END 查詢方式查詢方式 MOV TMOD,#00H ;設(shè)置;設(shè)置T0為方式為方式0,定時,定時 MOV TL0,#18H ;送初值;送初值 MOV TH0,#0E0H
22、SETB TR0 ;啟動;啟動T0定時定時LOOP: JBC TF0,NEXT ;查詢定時時間到否;查詢定時時間到否? SJMP LOOPNEXT:MOV TL0,#18H ;重新裝入計數(shù)初值;重新裝入計數(shù)初值 MOV TH0,#0E0H CPL P1.2 ;輸出方波;輸出方波 SJMP LOOP ;重復(fù)循環(huán);重復(fù)循環(huán)2)方式)方式1的應(yīng)用的應(yīng)用例例2 如圖所示,如圖所示,P1接有八個發(fā)光二極管,接有八個發(fā)光二極管,編程使八個管輪流點亮,編程使八個管輪流點亮,每個管亮每個管亮100ms,設(shè)晶,設(shè)晶振為振為6MHz。分析分析 利用利用T1T1完成完成100ms100ms的定時,當(dāng)?shù)亩〞r,當(dāng)P1P
23、1口線輸出口線輸出“1 1”時,發(fā)光二極管亮,每隔時,發(fā)光二極管亮,每隔100ms100ms”1 1”左移一次,采用左移一次,采用定時方式定時方式1 1,先計算計數(shù)初值:,先計算計數(shù)初值: MC= =2MC= =2s s 100ms/2 100ms/2s =50000=C350H s =50000=C350H (C350HC350H)補補 =10000H-C350H=3CB0H=10000H-C350H=3CB0H 查詢方式如下:查詢方式如下: ORG 0000HORG 0000H MOV A MOV A,#01H#01H:置第一個:置第一個LEDLED亮亮NEXTNEXT:MOV P1MOV
24、 P1,A A MOV TMOD MOV TMOD,#10H #10H ;T1T1工作于定時方式工作于定時方式1 1 MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H#0B0H; 定時定時100100ms ms SETB TR1 SETB TR1 AGAI: JBC TF1,SHIAGAI: JBC TF1,SHI; 100100msms到轉(zhuǎn)到轉(zhuǎn)SHI,SHI,并清并清TF1TF1 SJMP AGAI SJMP AGAISHISHI: RL ARL A SJMP NEXT SJMP NEXT END END中斷方式中斷方式 ORG 0000H ORG
25、 0000H AJMP MAIN AJMP MAIN ;單片機復(fù)位后從;單片機復(fù)位后從0000H0000H開始執(zhí)行開始執(zhí)行 ORG 001BHORG 001BH AJMP IV1 AJMP IV1 ;轉(zhuǎn)移到;轉(zhuǎn)移到IV1IV1 ORG 0030H ORG 0030H ;主程序;主程序MAINMAIN:MOV AMOV A,#01H #01H MOV P1 MOV P1,A A ;置第一個;置第一個LEDLED亮亮 MOV TMODMOV TMOD,#10H #10H ;T1T1工作于定時方式工作于定時方式1 1 MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,
26、#0B0H #0B0H ;定時;定時100ms100ms SETB ET1 SETB ET1 ;啟動;啟動T1T1工作工作SETB EASETB EA SETB TR1 SETB TR1 ;允許;允許T1T1中斷中斷WAITWAIT:SJMP WAIT SJMP WAIT ;等待中斷;等待中斷 IV1IV1:RL A RL A ;中斷服務(wù)程序,左移一位;中斷服務(wù)程序,左移一位 MOV P1MOV P1,A A ;下一個發(fā)光二極管亮;下一個發(fā)光二極管亮 MOV TH1MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H #0B0H ;重裝計數(shù)初值;重裝計數(shù)初值 RETI
27、RETI ;中斷返回;中斷返回 ENDEND以上程序進入循環(huán)執(zhí)行以上程序進入循環(huán)執(zhí)行, ,八個八個LEDLED一直循環(huán)輪流點亮。一直循環(huán)輪流點亮。 3). 方式方式2的應(yīng)用的應(yīng)用例例4 由由P3.4引腳引腳(T0)輸入一低頻信號輸入一低頻信號(其小于其小于0.5kHZ),要求要求P3.4每每發(fā)生一次負跳變時,發(fā)生一次負跳變時, P1.0輸出一個輸出一個500us同步負脈沖,同時同步負脈沖,同時P1.1輸出一個輸出一個1ms的同步正脈沖。已知晶振頻率為的同步正脈沖。已知晶振頻率為6MHZ。P3.4P3.4500us500us1ms1ms定時方式定時方式計數(shù)方式計數(shù)方式 計數(shù)方式計數(shù)方式(初值(初
28、值FFH)定時方式定時方式1ms1ms500us500usP1.0P1.0P1.1P1.1CLR P1.0 ; P1.0清清0SETB P1.1 ; P1.1置置1SETB TR0 ; 啟動定時計數(shù)器啟動定時計數(shù)器DEL2: JBC TF0, RESP2 ;檢測第一次;檢測第一次500us到否到否 AJMP DEL2RESP2: SETB P1.0 ;P1.0恢復(fù)恢復(fù)1DEL3: JBC TF0,RESP3 ;檢測第二次;檢測第二次500us到否到否 AJMP DEL3RESP3: CLR P1.1 ; P1.1復(fù)復(fù)0 CLR TR0 AJMP BEGIN4) 門控位的應(yīng)用門控位的應(yīng)用 門控位
29、門控位GATE為為1時,時,TRx=1,INTx=1才能啟動定時器。才能啟動定時器。利用這個特性可以測量外部輸入脈沖的寬度。利用這個特性可以測量外部輸入脈沖的寬度。例例4 利用利用T0門控位測試門控位測試 INT0引腳上出現(xiàn)的正脈沖寬度,已知引腳上出現(xiàn)的正脈沖寬度,已知晶振頻率為晶振頻率為12MHz,將所測得值最高位存入片內(nèi),將所測得值最高位存入片內(nèi)71H單元,單元,低位存入低位存入70H單元。單元。解:設(shè)外部脈沖解:設(shè)外部脈沖 由由(P3.2)輸入,輸入,T0工作于定時方式工作于定時方式 1 (16位計數(shù)位計數(shù)),GATE設(shè)為設(shè)為1。測試時,應(yīng)在。測試時,應(yīng)在INT0 低電平時,低電平時,設(shè)
30、置設(shè)置TR0為為1(16位計數(shù)位計數(shù));當(dāng);當(dāng)INT0 變?yōu)楦唠娖綍r,就啟動計變?yōu)楦唠娖綍r,就啟動計數(shù);數(shù); 再次變低時,停止計數(shù)。此計數(shù)值與機器周期的乘積再次變低時,停止計數(shù)。此計數(shù)值與機器周期的乘積即為被測正脈沖的寬度。因即為被測正脈沖的寬度。因fosc=12MHZ,機器周期為,機器周期為1us,測試過程如下。測試過程如下。源程序如下:源程序如下: MOV TMOD,#09H ; 設(shè)設(shè)T0為方式為方式1 MOV TL0,#00H ;設(shè)計數(shù)初值取最大值;設(shè)計數(shù)初值取最大值 MOV TH0,#00H MOV R0,#70H JB P3.2, $ ;等;等P3.2(INT0 )變低變低 SETB
31、 TR0 ;啟動;啟動T0準(zhǔn)備工作準(zhǔn)備工作 JNB P3.2, $ ;等待;等待P3.2(INT0 ) JB P3.2,$ ; 等待等待P3.2(INT0 ) CLR TR0 ;停止計數(shù)停止計數(shù)T0從從0開始計數(shù)開始計數(shù)INT0INT0 09H (TMOD) 1 TR0 0 TR0T0停止計數(shù)停止計數(shù) MOV R0,TL0 ;存放結(jié)果;存放結(jié)果 INC R0 MOV R0,TH0 SJMP $由于靠軟件啟動和停止計數(shù),有一定的測量誤差。由于靠軟件啟動和停止計數(shù),有一定的測量誤差。其可能的最大誤差與指令的執(zhí)行時間有關(guān)。其可能的最大誤差與指令的執(zhí)行時間有關(guān)。 此例中,在讀取定時器的計數(shù)之前,已把它
32、停住。此例中,在讀取定時器的計數(shù)之前,已把它停住。但在某些情況下,不希望在讀計數(shù)值時打斷定時的過但在某些情況下,不希望在讀計數(shù)值時打斷定時的過程,由于我們不可能在同一時刻讀取程,由于我們不可能在同一時刻讀取THX和和TLX的內(nèi)的內(nèi)容。讀取一個時恰好另一個產(chǎn)生溢出,在這種情況下,容。讀取一個時恰好另一個產(chǎn)生溢出,在這種情況下,讀取的計數(shù)值有可能是錯的。可以解決錯讀的方法是:讀取的計數(shù)值有可能是錯的??梢越鉀Q錯讀的方法是: 先讀先讀THX后讀后讀TLX,再讀,再讀THX,若兩次,若兩次讀得的讀得的THx沒有發(fā)生變化,則可確定讀到的內(nèi)沒有發(fā)生變化,則可確定讀到的內(nèi)容是正確的。若前后兩次讀到的容是正確
33、的。若前后兩次讀到的THx有變化,有變化,則再重復(fù)上述過程,重復(fù)讀到的內(nèi)容就應(yīng)該則再重復(fù)上述過程,重復(fù)讀到的內(nèi)容就應(yīng)該是正確的了。下面是按此是正確的了。下面是按此思路編寫的程序思路編寫的程序段,讀到的段,讀到的TH0 和和TL0放在放在R1和和R0內(nèi):內(nèi):RP:MOV A,TH0; MOV R0,TL0; CJNE A,TH0,RP; MOV R1,A方法方法1:1:采用采用T0T0產(chǎn)生周期為產(chǎn)生周期為200ms200ms脈沖,即脈沖,即P1.0P1.0每每100ms100ms取反一次作為取反一次作為T1T1的計數(shù)脈沖,的計數(shù)脈沖,T1T1對下降沿計數(shù),因此對下降沿計數(shù),因此T1T1計計5 5
34、個脈沖正好個脈沖正好100ms100ms。T0采用方式采用方式1,X= 得得X=3CB0H,T1采用方式采用方式2,計數(shù)初值計數(shù)初值X = 5=FBH均采用查詢方式,均采用查詢方式,流程圖和程序如下:流程圖和程序如下:1621622101003825)擴大計數(shù)個數(shù)和定時時間)擴大計數(shù)個數(shù)和定時時間例例3 3 在在P1.7P1.7端接一個發(fā)光二極管端接一個發(fā)光二極管LEDLED,要求利用定時控制使,要求利用定時控制使LEDLED亮亮一秒滅一秒周而復(fù)始,設(shè)一秒滅一秒周而復(fù)始,設(shè)fosc=6MHZfosc=6MHZ。解解: 16: 16位定時最大為位定時最大為 * *2us=131.072ms2us
35、=131.072ms,顯然不能滿足要求,顯然不能滿足要求,可用以下兩種方法解決??捎靡韵聝煞N方法解決。 ORG 0000H ORG 0000HMAINMAIN:CLR P1.7CLR P1.7 SETB P1.0 SETB P1.0 MOV TMOD MOV TMOD,#61H#61H MOV TH1 MOV TH1,#0FBH#0FBH MOV TL1 MOV TL1,#0FBH#0FBH SETB TR1 SETB TR1LOOP1:CPL P1.7LOOP1:CPL P1.7 LOOP2 LOOP2:MOV TH0MOV TH0,#3CH#3CH MOV TL0 MOV TL0,#0B0
36、H#0B0H SETB TR0 SETB TR0 LOOP3: JBC TF0 LOOP3: JBC TF0,LOOP4LOOP4 SJMP LOOP3 SJMP LOOP3 LOOP4 LOOP4:CPL P1.0CPL P1.0 JBC TF1 JBC TF1,LOOP1LOOP1 AJMP LOOP2 AJMP LOOP2 END END 程序中用程序中用JBCJBC指令對定時指令對定時/ /計數(shù)溢出標(biāo)志位計數(shù)溢出標(biāo)志位進行檢測,當(dāng)標(biāo)志位為進行檢測,當(dāng)標(biāo)志位為1 1時跳轉(zhuǎn)并清標(biāo)志時跳轉(zhuǎn)并清標(biāo)志。方法方法2:T0每隔每隔100ms中斷一次,利用軟件對中斷一次,利用軟件對T0的中斷的中斷次數(shù)
37、進行計數(shù),中斷次數(shù)進行計數(shù),中斷10次即實現(xiàn)了次即實現(xiàn)了1秒的定時。秒的定時。 ORG 000BH ;T0中斷服務(wù)程序入口中斷服務(wù)程序入口 AJMP IP0 ORG 0030H ;主程序開始;主程序開始 MAIN:CLR P1.7 ;T0定時定時100ms MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA MOV R4 MOV R4,#0AH#0AH;中斷;中斷1010次計數(shù)次計數(shù) SETB TR0SETB TR0 SJMP SJMP ;等待中斷;等待中斷 IP0IP0:DJNZ R4DJNZ R4,RET0RET0; MOV
38、R4MOV R4,#0AH#0AH CPL P1.7 CPL P1.7RET0RET0:MOV TH0MOV TH0,#3CH#3CH MOV TL0 MOV TL0,#0B0H#0B0H SETB TR0 SETB TR0 RETI RETI6 小小 結(jié)結(jié) 定時計數(shù)器應(yīng)用非常廣泛,如定時采定時計數(shù)器應(yīng)用非常廣泛,如定時采樣、時間測量、產(chǎn)生音響、作脈沖源、制樣、時間測量、產(chǎn)生音響、作脈沖源、制作日歷時鐘、測量波形的頻率和占空比、作日歷時鐘、測量波形的頻率和占空比、檢測電機轉(zhuǎn)速等。因此應(yīng)很好掌握。檢測電機轉(zhuǎn)速等。因此應(yīng)很好掌握。 51系列單片機有兩個系列單片機有兩個16位的定時計數(shù)位的定時計數(shù)器
39、,有四種不同的工作方式,歸納于下表:器,有四種不同的工作方式,歸納于下表:每啟動一次工作每啟動一次工作,需裝入一次需裝入一次計數(shù)初值計數(shù)初值28=256=100H28=256=100H216=65536=10000H213=8192=2000H 模模 值值 (計數(shù)最大值計數(shù)最大值)TL0定時,計數(shù)定時,計數(shù)占用占用TR0、TF0 ;TH0定時,使用定時,使用T1 的的TR1、TF1此時此時T1作波特率作波特率發(fā)生器發(fā)生器定時、計數(shù)范圍定時、計數(shù)范圍小,不用重裝時小,不用重裝時間常數(shù),多用于間常數(shù),多用于串行通信的波特串行通信的波特率發(fā)生器率發(fā)生器用于用于定時時間定時時間 65.5ms,計數(shù)脈沖
40、計數(shù)脈沖 65536 個個場合場合用于用于定時時間定時時間 8.19ms ,計數(shù)脈沖計數(shù)脈沖 8192 個個場合場合 應(yīng)用場合應(yīng)用場合(設(shè)設(shè)fosc12MHz)同方式同方式0、1第一次裝入第一次裝入,啟動啟動工作后工作后,每次每次TL回零后回零后,不用程序不用程序裝入裝入,由由TH自動自動裝入到裝入到TL 同左同左 TH TL高八位高八位 TH低八位低八位 TL高八位高八位 TH低五位低五位 TL 計數(shù)初值計數(shù)初值C的裝入的裝入方式方式 3 3T0T0兩個兩個8 8位位 方式方式方式方式 2 28 8位自動位自動重裝方式重裝方式方式方式 116位定時位定時計數(shù)方式計數(shù)方式 方式方式 013位定
41、時位定時計數(shù)方式計數(shù)方式 方方 式式八位八位 定時和計數(shù)實質(zhì)都是對脈沖的計數(shù),只是被定時和計數(shù)實質(zhì)都是對脈沖的計數(shù),只是被計脈沖的來源不同,定時方式的被計脈沖來源于計脈沖的來源不同,定時方式的被計脈沖來源于時鐘時鐘,計數(shù)方式的被計脈沖來源于,計數(shù)方式的被計脈沖來源于外部外部,定時方,定時方式的計數(shù)初值和被計脈沖式的計數(shù)初值和被計脈沖周期周期有關(guān),計數(shù)方式的有關(guān),計數(shù)方式的和被計脈沖的和被計脈沖的個數(shù)個數(shù)有關(guān)。有關(guān)。 無論定時還是計數(shù),當(dāng)計滿規(guī)定的無論定時還是計數(shù),當(dāng)計滿規(guī)定的 脈沖個數(shù)脈沖個數(shù)產(chǎn)生溢出(計數(shù)初值寄存器回零),置位產(chǎn)生溢出(計數(shù)初值寄存器回零),置位TFx , 可可以通過程序查詢
42、,如果允許中斷,會產(chǎn)生中斷。以通過程序查詢,如果允許中斷,會產(chǎn)生中斷。 本章應(yīng)重點掌握定時計數(shù)器的應(yīng)用設(shè)計本章應(yīng)重點掌握定時計數(shù)器的應(yīng)用設(shè)計. 練習(xí):練習(xí): 利用利用51單片機的單片機的T0計數(shù),每計計數(shù),每計10個脈沖,個脈沖,P1.0取反一次,采用查詢和中取反一次,采用查詢和中斷兩種方式編程。斷兩種方式編程。 查詢方式查詢方式ORG 0000HMOV TMOD,#06HMOV TH0,#0F6HMOV TL0,#0F6HSETB TR0ABC: JNB TF0,$CLR TF0CPL P1.0SJMP ABC 中斷方式中斷方式ORG 0000HAJMP MAINORG 000BHCPL P
43、1.0RETIMAIN:MOV TMOD,#06HMOV TH0,#0F6HMOV TL0,#0F0HSETB EASETB ET0SETB TR0SJMP $使用方式使用方式2 ,計數(shù)初值,計數(shù)初值C=100H-0AH=F6H 14以中斷方法設(shè)計單片機秒、分脈沖發(fā)生器,以中斷方法設(shè)計單片機秒、分脈沖發(fā)生器,假定假定P1.0每秒鐘產(chǎn)生一個機器周期的正脈沖,每秒鐘產(chǎn)生一個機器周期的正脈沖,P1.1每分鐘產(chǎn)生一個機器周期的正脈沖。每分鐘產(chǎn)生一個機器周期的正脈沖。 解解 程序程序1(中斷法中斷法): 1s10ms64H10msl00 1min1s3CH1s60 設(shè)設(shè) fosc12MHz T0.01s10ms 定時時間定時時間t(216一定時器初值一定時器
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 員工月工作計劃集合十篇
- 師范生的實習(xí)報告范文合集7篇
- 主題班會演講稿(15篇)
- 計算機維修工標(biāo)準(zhǔn)
- 管理的決策職能名詞解釋1決策2程序化決策3非程序化
- 2024年電力施工安全規(guī)范合作合同版B版
- 川教版(2019)小學(xué)信息技三年級上冊第三單元第3節(jié)《變換造型》教學(xué)實錄及反思
- 《天宮課堂》第二課觀后感簡短七篇
- 八年級歷史下冊 第一學(xué)習(xí)主題 中華人民共和國的成立和鞏固 第1課 中國人民站起來了教學(xué)實錄2 川教版
- 學(xué)校辦公室主任述職報告【7篇】
- 工會新聞的寫作培訓(xùn)講義(共36頁).ppt
- 小學(xué)贛美版六年級美術(shù)上冊第二十課向往和平課件(16張)ppt課件
- 中藥飲片購進驗收記錄表格模板
- TCM遠紅外發(fā)展初析
- 滑坡穩(wěn)定性計算及滑坡推力計算
- 繼教脈圖分析 0
- 房地產(chǎn)開發(fā)企業(yè)土地增值稅清算政策與實務(wù)操作(成都市)解讀
- 房地產(chǎn)估計第九章假設(shè)開發(fā)法練習(xí)題參考答案
- [爆笑小品校園劇本7人]爆笑小品校園劇本
- 第五章 逆向選擇
- 高速鐵路電氣化系統(tǒng)概論PPT優(yōu)秀課件
評論
0/150
提交評論