第5章-MCS-51的定時器計數(shù)器_第1頁
第5章-MCS-51的定時器計數(shù)器_第2頁
第5章-MCS-51的定時器計數(shù)器_第3頁
第5章-MCS-51的定時器計數(shù)器_第4頁
第5章-MCS-51的定時器計數(shù)器_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第第5 5章章 MCS-51MCS-51的定時的定時/ /計數(shù)器計數(shù)器本章內(nèi)容本章內(nèi)容p5.1 5.1 定時定時/ /計數(shù)器的計數(shù)器的結(jié)構(gòu)結(jié)構(gòu)p5.2 5.2 定時定時/ /計數(shù)器的計數(shù)器的功能功能p5.3 5.3 定時定時/ /計數(shù)器的計數(shù)器的工作方式工作方式和和控制寄存器控制寄存器p5.4 5.4 定時定時/ /計數(shù)器的計數(shù)器的4 4種工作方式種工作方式p5.5 5.5 定時定時/ /計數(shù)器的設計舉例計數(shù)器的設計舉例5.1 5.1 定時定時/ /計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)圖圖4.4 4.4 定時定時/ /計數(shù)器的結(jié)構(gòu)框圖計數(shù)器的結(jié)構(gòu)框圖 5.2 5.2 定時定時/ /計數(shù)器的功能計數(shù)器的功能

2、pT0 T0 和和 T1T1n增量增量式、式、下降沿下降沿計數(shù)計數(shù)n各位各位全都為全都為 1 1 時,再輸入一個脈沖時,再輸入一個脈沖p溢出溢出回零回零pTF0TF0 或或 TF1 TF1 置位置位,發(fā)中斷申請發(fā)中斷申請p定時與計數(shù)的不同:定時與計數(shù)的不同:時鐘脈沖信號時鐘脈沖信號n定時,定時,內(nèi)內(nèi)部的時鐘振蕩器部的時鐘振蕩器n計數(shù),計數(shù),外外部引腳部引腳1. 1. 計數(shù)功能計數(shù)功能p原理原理n對對外部外部事件事件計數(shù)計數(shù)p計數(shù)脈沖計數(shù)脈沖來自引腳來自引腳 T0(P3.4)T0(P3.4)或或 T1(P3.5)T1(P3.5)負跳變負跳變( (由由1 1變成變成0)0)時時,計數(shù)值,計數(shù)值 增

3、加增加 1p對外部輸入脈沖的要求對外部輸入脈沖的要求n被采樣的電平被采樣的電平至少至少要維持要維持一個機器周期一個機器周期,否則會否則會漏計數(shù)漏計數(shù)n最高計數(shù)頻率:晶振頻率的最高計數(shù)頻率:晶振頻率的1/241/24oscoscf f1212機器周期機器周期 2. 2. 定時功能定時功能p原理原理n通過通過計數(shù)計數(shù)實現(xiàn)實現(xiàn)p計數(shù)脈沖計數(shù)脈沖內(nèi)部內(nèi)部時鐘脈沖時鐘脈沖p每個機器周期,計數(shù)值每個機器周期,計數(shù)值 加加 1 1p定時時間定時時間計數(shù)值計數(shù)值機器周期機器周期o os sc cf f1 12 2機機器器周周期期 5.3 5.3 定時定時/ /計數(shù)器的工作方式和控制寄存器計數(shù)器的工作方式和控制

4、寄存器p1. 1. 方式寄存器方式寄存器 TMODTMODp2. 2. 控制寄存器控制寄存器 TCONTCON位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0字節(jié)地址字節(jié)地址TMODTMODGATEGATE C/TC/TM1M1M0M0GATEGATEC/TC/TM1M1M0M089H 89H 位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0字節(jié)地址字節(jié)地址TCONTCONTF1TF1TR1TR1TF0TF0 TR0TR0 IE1IE1IT1IT1IE0IE0IT0IT088H88H不可位尋址不可位尋址可位尋址可位尋址1. 1. 方式寄存器方式寄存器 T

5、MODTMOD位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0字節(jié)地址字節(jié)地址TMODTMOD GATEGATEC/TC/TM1M1 M0M0GATEGATEC/TC/TM1M1M0M089H 89H 表表4.2 4.2 定時定時/ /計數(shù)器工作方式設置表計數(shù)器工作方式設置表 M1 M0M1 M0工作方式工作方式功能說明功能說明0 00 00 01313位位定時器定時器/ /計數(shù)器計數(shù)器(TH(TH的的8 8位和位和TLTL的低的低5 5位位) ) 0 10 11 11616位位定時器定時器/ /計數(shù)器計數(shù)器1 01 02 2自動重裝入初值自動重裝入初值的的 8 8位位 定

6、時器定時器/ /計數(shù)器計數(shù)器 1 11 13 3T0 T0 分成分成兩個兩個獨立獨立的的 8 8位位 定時器定時器/ /計數(shù)器計數(shù)器T1 T1 在在 方式方式3 3 時時 停止工作停止工作 T1T0pC/T C/T 定時器方式或計數(shù)器方式選擇位定時器方式或計數(shù)器方式選擇位nC/T=1C/T=1,計數(shù)器,計數(shù)器nC/T=0C/T=0,定時器,定時器pGATEGATE 門控標志位門控標志位nGATE=1GATE=1pTR0/TR1=1TR0/TR1=1且且/INT0(/INT0(或或/INT1)/INT1)高電平高電平,才才工作工作 用于測量用于測量/INT0(/INT0(或或/INT1)/INT

7、1)端出現(xiàn)的端出現(xiàn)的正正脈沖脈沖的的寬度寬度nGATE=0GATE=0pTR0/TR1=1TR0/TR1=1,就就工作工作2. 2. 控制寄存器控制寄存器 TCONTCON位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0字節(jié)地址字節(jié)地址TCONTCONTF1TF1TR1TR1TF0TF0 TR0TR0 IE1IE1 IT1IT1 IE0IE0IT0IT088H88HpTF0TF0 / / TF1 TF1 溢出標志位溢出標志位n計滿溢出計滿溢出時,由時,由硬件硬件置置 1 1n中斷響應后,中斷響應后,硬件自動清硬件自動清 0 0pTR1 / TR0 TR1 / TR0 運行控

8、制位運行控制位n軟件軟件置置 1 1 后,開始工作后,開始工作n系統(tǒng)復位時,清系統(tǒng)復位時,清 0 0 5.4 5.4 定時定時/ /計數(shù)器的計數(shù)器的4 4種工作方式種工作方式pT0T0n4 4種:方式種:方式0 0、1 1、2 2、3 3pT1T1n3 3種:方式種:方式0 0、1 1、2 2p設置為設置為方式方式3 3,將,將停止停止工作工作n作為串行通信口的作為串行通信口的波特率發(fā)生器(方式波特率發(fā)生器(方式2 2)1. 1. 方式方式 0 0pTMODTMOD的的M1M0M1M0為為0000p1313位計數(shù):位計數(shù):TL0TL0的的低低5 5位位(高(高3 3位未用)位未用) TH0TH

9、0的的8 8位位nTL0TL0的低的低5 5位溢出時,向位溢出時,向TH0TH0進位進位nTH0TH0溢出時,置位溢出時,置位TCONTCON中的中的TF0TF0標志,發(fā)出標志,發(fā)出中斷請求中斷請求p計數(shù)計數(shù)個數(shù)個數(shù)MM與計數(shù)與計數(shù)初值初值NNnM = 2M = 21313N Np2 21313:溢出時的計數(shù)值:溢出時的計數(shù)值p定時時間定時時間 t tnt = Mt = M機器周期機器周期 = (2= (21313N)N)機器周期機器周期nN = 2N = 21313 - t/ - t/機器周期機器周期p計數(shù)初值計數(shù)初值 N = 8191N = 81910 0p計數(shù)范圍:計數(shù)范圍:1 1819

10、281922. 2. 方式方式 1 1pTMODTMOD的的M1M0M1M0為為0101n1616位:位:TL0 TL0 TH0TH0p計數(shù)個數(shù)計數(shù)個數(shù)M M與計數(shù)初值與計數(shù)初值N N: M M2 21616N Nn定時時間定時時間 t = Mt = M機器周期機器周期n計數(shù)初值計數(shù)初值 N = 65535N = 655350 0;計數(shù)范圍:;計數(shù)范圍:1 165536655363. 3. 方式方式 2 2pTMODTMOD的的M1M0M1M0為為1010n自動重裝初值的自動重裝初值的8 8位位計數(shù)方式:計數(shù)方式:pTL0TL0:8 8位定時位定時/ /計數(shù)器;計數(shù)器;TH0TH0:8 8位位

11、初值寄存器初值寄存器p計數(shù)個數(shù)計數(shù)個數(shù)M M與計數(shù)初值與計數(shù)初值N N: M M2 28 8N Nn定時時間定時時間 t = Mt = M機器周期機器周期n計數(shù)初值計數(shù)初值 N = 255N = 2550 0;計數(shù)范圍:;計數(shù)范圍:1 1256256較精確的較精確的脈沖信號發(fā)生器脈沖信號發(fā)生器T1T1在在方式方式2 2,作為,作為波特率發(fā)生器波特率發(fā)生器定時器定時器/ /計數(shù)器計數(shù)器 的的 初值計算初值計算p設設n計數(shù)器計數(shù)的計數(shù)器計數(shù)的最大值:最大值:M Mn計數(shù)值:計數(shù)值:N Nn初值:初值:X XpX X的計算方法的計算方法 n計數(shù)狀態(tài):計數(shù)狀態(tài):X = M X = M N Nn定時狀態(tài)

12、:定時狀態(tài):X = M X = M 定時時間定時時間/T/TpT = 12 T = 12 晶振頻率晶振頻率4. 4. 方式方式 3 3pTMODTMOD的的M1M0M1M0為為11 11n只適用于只適用于T0T0nT0T0分成為兩個獨立的分成為兩個獨立的8 8位計數(shù)器位計數(shù)器pTL0TL0、TH0TH0pTL0TL0:定時器和計數(shù)器:定時器和計數(shù)器n占用占用T0T0的控制位的控制位pTH0TH0:定時器定時器n僅僅借用借用T1T1的的 TR1TR1、TF1TF1n不受門控;不受門控;啟、停受啟、停受TR1TR1控制控制n溢出時,置位溢出時,置位 TF1TF1pT1T1:n只能作定時器只能作定時

13、器,波特率發(fā)生器波特率發(fā)生器n原則上,仍可按方式原則上,仍可按方式0 0、1 1、2 2工作工作n不能使用不能使用TR1TR1和和TF1TF1,也,也不能不能發(fā)出發(fā)出中斷請求中斷請求n方式設定后,自動運行;要方式設定后,自動運行;要停止工作停止工作,只需,只需設設定為方式定為方式3 3nT1T1溢出判斷溢出判斷p通過在線通過在線“飛讀飛讀”TH1TH1和和TL1TL1,判斷是否溢出。,判斷是否溢出。p串行通信應用中串行通信應用中nT1T1:串行口波特率發(fā)生器,工作于方式:串行口波特率發(fā)生器,工作于方式2 2nT0T0:工作于方式:工作于方式3 3n可充分利用單片機的定時可充分利用單片機的定時/

14、 /計數(shù)器資源。計數(shù)器資源。5.5 5.5 定時定時/ /計數(shù)器的設計舉例計數(shù)器的設計舉例p5151單片機的定時單片機的定時/ /計數(shù)器,常工作于計數(shù)器,常工作于中斷中斷場合場合p應用設計步驟應用設計步驟n(1)(1)計算定時計算定時/ /計數(shù)器的初值計數(shù)器的初值n(2)(2)主程序中,初始化主程序中,初始化p定時定時/ /計數(shù)器的初始化計數(shù)器的初始化p中斷初始化中斷初始化 TH0TH0、TL0TL0、TH1TH1、TL1TL1、TMODTMOD、TCONTCON、IPIP、IEIEn(3)(3)中斷服務程序設計中斷服務程序設計 例例11方式方式1 1p利用定時利用定時/ /計數(shù)器計數(shù)器T0T

15、0的方式的方式1 1,產(chǎn)生一個,產(chǎn)生一個50Hz50Hz的方波,此的方波,此方波由方波由P1.0P1.0引腳輸出,晶振頻率為引腳輸出,晶振頻率為12 MHz12 MHz。 p思路:思路:nf=50Hzf=50Hz,則其周期為,則其周期為T=1/50=0.02sT=1/50=0.02sn計滿計滿0.01s0.01s,P1.0P1.0輸出輸出0 0,再計滿,再計滿0.01S0.01S,P1.0P1.0輸出輸出1 1pT0T0產(chǎn)生產(chǎn)生0.01s0.01s定時定時實現(xiàn)方法實現(xiàn)方法查詢方式:查查詢方式:查TF0TF0標志標志中斷方式:中斷服務程序中斷方式:中斷服務程序p解題步驟解題步驟n(1)(1)定時

16、定時 0.01s0.01s的初值計算的初值計算p機器周期機器周期 = 12 = 12 12 MHz = 1 s 12 MHz = 1 sp0.01s0.01s內(nèi)內(nèi) T0 T0 需要計數(shù)需要計數(shù) N N 次次 N = 0.01s N = 0.01s 1 s = 0.01/(101 s = 0.01/(10-6-6) = 10000 ) = 10000 p若用若用方式方式1 1的的16 16 位計數(shù)器位計數(shù)器,T0 ,T0 的初值的初值X X為為 X = MX = MN = 2N = 2161610000 = 5553610000 = 55536n(2)T0(2)T0的的TMODTMOD的初始化的

17、初始化pGATE=0GATE=0,C/T=0C/T=0,M1M0=01,M1M0=01,即:即:T0T0的方式的方式1 1n(3)(3)實現(xiàn)方法實現(xiàn)方法p查詢的方法和中斷的方法查詢的方法和中斷的方法實現(xiàn)方法實現(xiàn)方法p(1)(1)查詢方式查詢方式n查詢查詢T0T0的的TF0TF0:為:為1 1,定時時間到,對,定時時間到,對P1.0P1.0取反操作取反操作n缺點:占用缺點:占用CPUCPUORG0000HLJMPMAIN;跳轉(zhuǎn)到主程序;跳轉(zhuǎn)到主程序ORG0100H ;主程序;主程序MAIN: MOVTMOD,#01H;置;置T0工作于方式工作于方式1LOOP: MOVTH0,#0D8H;裝入計數(shù)

18、初值;裝入計數(shù)初值MOVTL0,#0F0H SETBTR0;啟動定時器;啟動定時器T0JNBTF0,$;TF0=0,定時,定時時間未到時間未到,等待等待CLRTF0 ;TF0=1,定時時間到,清,定時時間到,清TF0CPLP1.0 ;P1.0取反輸出取反輸出SJMPLOOP ENDp(2)(2)中斷方式中斷方式p定時到,定時到,TF0=1TF0=1,向,向CPUCPU申請中斷,申請中斷,CPUCPU響應中斷后,執(zhí)響應中斷后,執(zhí)行中斷程序,中斷程序中對行中斷程序,中斷程序中對P1.0P1.0取反操作取反操作ORG0000HLJMPMAIN;跳轉(zhuǎn)到主程序跳轉(zhuǎn)到主程序 ORG000BH;T0的中斷入

19、口地址的中斷入口地址LJMPT0_INT;轉(zhuǎn)向中斷服務程序轉(zhuǎn)向中斷服務程序 ORG0100HMAIN: MOVTMOD,#01H;置置T0工作于方式工作于方式1MOVTH0,#0D8H;裝入計數(shù)初值裝入計數(shù)初值MOVTL0,#0F0H SETBET0;T0開中斷開中斷SETBEA;CPU開中斷開中斷SETBTR0;啟動啟動T0;繼續(xù)執(zhí)行主程序其它部分繼續(xù)執(zhí)行主程序其它部分SJMP$;等待中斷等待中斷T0_INT: ;P1.0取反輸出取反輸出CPL P1.0 ;重裝入計數(shù)初值重裝入計數(shù)初值MOV TH0,#0D8H MOV TL0,#0F0H ;中斷返回中斷返回RETIENDT0_INT: ;重

20、裝入計數(shù)初值重裝入計數(shù)初值MOV TH0,#0D8H MOV TL0,#0F0H;P1.0取反輸出取反輸出CPL P1.0;中斷返回中斷返回RETIEND 例例22方式方式1 1p利用定時利用定時/ /計數(shù)器計數(shù)器T1T1產(chǎn)生一個產(chǎn)生一個1Hz1Hz的方波,此方波的方波,此方波由由P0.0P0.0引腳輸出,晶振頻率為引腳輸出,晶振頻率為6MHz6MHzp思路:思路:pf=1Hzf=1Hz,T=1sT=1sn此題轉(zhuǎn)化為此題轉(zhuǎn)化為p由定時器產(chǎn)生:由定時器產(chǎn)生:0.5s 0.5s 定時定時機器周期機器周期 = 12 / 6MHz = 2= 12 / 6MHz = 2* *1010-6-6s s655

21、36 65536 * * 2 2* *1010-6 -6 s = 0.131072s = 131072ss = 0.131072s = 131072sp0.5s0.5s定時,實現(xiàn)方法定時,實現(xiàn)方法nT1T1:方式方式1 1p完成完成100ms100ms定時定時p在中斷程序里設置一個在中斷程序里設置一個“軟時鐘軟時鐘”,即一個,即一個CLOCK=30HCLOCK=30H內(nèi)存單元內(nèi)存單元每中斷一次,每中斷一次,CLOCKCLOCK加加1 1,CLOCKCLOCK累計累計5 5次次(即(即0.5s0.5s),對),對P0.0P0.0取反操作取反操作解題步驟:解題步驟:p(1)(1)確定初值確定初值N

22、 Np計數(shù)值計數(shù)值 M Mt/ Tcy t/ Tcy 1001001010-3-3/(2/(21010-6-6) )5000050000 N N2 21616M M6553665536500005000015536=3CB0H15536=3CB0Hp即應將即應將3CH3CH送入送入TH1TH1、0B00B0送入送入TL1TL1中。中。p(2)(2)初始化控制字初始化控制字TMODTMODnGATE=0GATE=0,C/T=0C/T=0,M1M0=01M1M0=01,即:,即:T1T1的方式的方式1 1;實現(xiàn)程序:實現(xiàn)程序:;*偽指令偽指令*LED BITP0.0CLOCKDATA30H;*主程

23、序入口地址主程序入口地址*ORG0000HLJMPMAIN;跳轉(zhuǎn)至主程序跳轉(zhuǎn)至主程序;*中斷入口地址中斷入口地址*ORG001BHLJMPT1_INT ;跳轉(zhuǎn)至跳轉(zhuǎn)至T1中斷服務程序中斷服務程序ORG 0030HMAIN:;*中斷初始化中斷初始化*MOV TMOD, #10HMOV TH1, #3CH;裝入計數(shù)初值裝入計數(shù)初值MOV TL1, #0B0H SETB ET1;開放開放T1中斷中斷SETB EA;開放總中斷開放總中斷SETB TR1;啟動啟動T1時鐘時鐘;繼續(xù)執(zhí)行主程序其它部分繼續(xù)執(zhí)行主程序其它部分SJMP $;等待中斷等待中斷;*T1中斷服務程序中斷服務程序*T1_INT:PUS

24、HACC;保護現(xiàn)場保護現(xiàn)場PUSHPSWCLRTR1MOV TH1, #3CH;重新裝入計數(shù)初值重新裝入計數(shù)初值MOV TL1, #0B0H SETBTR1INCCLOCK;軟時鐘加軟時鐘加1MOVA, CLOCKCJNEA, #5, TMPLTMPL:JCRETURN;不到不到0.5s返回返回CPLLED;到到0.5s閃爍變換閃爍變換MOVCLOCK, #0;軟時鐘清零軟時鐘清零RETURN:POPPSWPOPACC RETIEND 例例33方式方式2 2p利用定時利用定時/ /計數(shù)器計數(shù)器T0T0產(chǎn)生一個產(chǎn)生一個1kHz1kHz的方波,此方波的方波,此方波由由P0.0P0.0引腳輸出,晶振

25、頻率為引腳輸出,晶振頻率為6MHz6MHzn機器周期機器周期 = 12 / 6MHz = 2= 12 / 6MHz = 2* *1010-6-6s sp思路:思路:pf=1kHzf=1kHz,T=1msT=1msn此題轉(zhuǎn)化為此題轉(zhuǎn)化為p由定時器產(chǎn)生:由定時器產(chǎn)生:500s 500s 定時定時p500s500s定時,實現(xiàn)方法定時,實現(xiàn)方法nT0T0:方式方式2 2p即自動重裝初值的即自動重裝初值的8 8位計數(shù)位計數(shù)方式方式p開放開放T0T0中斷,在中斷程序里對中斷,在中斷程序里對P0.0P0.0取反取反操作操作解題步驟:解題步驟:p(1)(1)計數(shù)初值計數(shù)初值N Np計數(shù)值計數(shù)值 M Mt/ T

26、cy t/ Tcy 5005001010-6-6/(2/(21010-6-6) )250250 N N2 28 8M M25625625025006H06Hp06H06H送入送入TH0TH0和和TL0TL0p(2)(2)初始化控制字初始化控制字TMODTMODnGATE=0GATE=0,C/T=0C/T=0,M1M0=10M1M0=10,即:,即:T0T0的方式的方式2 2;實現(xiàn)程序:實現(xiàn)程序:;*偽指令偽指令*LED BITP0.0;*主程序入口地址主程序入口地址*ORG0000HLJMPMAIN;跳轉(zhuǎn)至主程序跳轉(zhuǎn)至主程序;*中斷入口地址中斷入口地址*ORG00BHLJMPT0_INT ;跳

27、轉(zhuǎn)至跳轉(zhuǎn)至T1中斷服務程序中斷服務程序ORG 0100HMAIN: ;*中斷初始化中斷初始化*MOV TMOD, #02HMOV TH0, #06H;裝入計數(shù)初值裝入計數(shù)初值MOV TL0, #06H SETB ET0;開放開放T0中斷中斷SETB EA;開放總中斷開放總中斷SETB TR0;啟動啟動T0時鐘時鐘;繼續(xù)執(zhí)行主程序其它部分繼續(xù)執(zhí)行主程序其它部分SJMP $;等待中斷等待中斷;*T0中斷服務程序中斷服務程序*T0_INT:CPLLED;不需重新裝入計數(shù)初值不需重新裝入計數(shù)初值RETIEND定時定時/計數(shù)器門控位計數(shù)器門控位GATE的應用的應用p當當GATE=0GATE=0時時n定時

28、定時/ /計數(shù)器的運行計數(shù)器的運行只只受控于:受控于:TR0(或或TR1)p當當GATE=1GATE=1時時n定時定時/ /計數(shù)器的運行受控于:計數(shù)器的運行受控于:pTR0( (和和TR1) )和和INT0( (或或INT1) ) 在在TR0=1(或或TR1=1)時時若若INT0=1(或或INT1=1),則,則啟動啟動計數(shù);計數(shù);若若INT0=0(或或INT1=0),則,則停止停止計數(shù)。計數(shù)??梢岳眠@一點可以利用這一點測試測試外部外部輸入脈沖輸入脈沖的的寬度。寬度。 例例4GATE=4GATE=1p利用利用T0T0的門控位的門控位GATEGATE,編程實現(xiàn)檢測外部輸入脈,編程實現(xiàn)檢測外部輸入

29、脈沖的寬度。沖的寬度。/INT0(P3.2)TMOD = #09HTH0 = TL0 = #00h等待等待INT0INT0變變低低電平電平后后TR0=1TR0=1T0T0開始開始計時計時計時開始計時開始計時停止計時停止T0T0停止停止計時計時源程序:源程序:ORG 00hMOV TMOD, #09H;設置設置 T0 為方式為方式 1,定時方式工作,定時方式工作,;GATE=1MOV TL0, #00H;設計數(shù)初值為設計數(shù)初值為0MOV TH0, #00HMOV R0, #30H;地址指針送地址指針送R0JBP3.2, $;等待等待INT0變低變低SETB TR0;啟動定時器啟動定時器JNBP3

30、.2, $;等待等待INT0變高變高電平電平JBP3.2, $;啟動計數(shù),并等待啟動計數(shù),并等待INT0再次變低再次變低CLRTR0;停止計數(shù)器停止計數(shù)器MOV R0, TL0;讀取計數(shù)值讀取計數(shù)值INCR0MOV R0, TH0;讀取計數(shù)值讀取計數(shù)值SJMP $END尋找待測脈沖的尋找待測脈沖的下降沿下降沿p不足:不足:n如果機器周期為如果機器周期為1/12MHZ,則這種方法的,則這種方法的最大最大被測脈沖寬度被測脈沖寬度為為65.536微秒微秒n由于靠軟件啟動和停止計數(shù),有一定的由于靠軟件啟動和停止計數(shù),有一定的測量誤測量誤差,差,其中最大可能的誤差由指令的時序確定。其中最大可能的誤差由指

31、令的時序確定。ORG 0000HLJMP MAINORG 000BH LJMP DVT0ORG 0030H MAIN:.CLRR1. DVT0:INCR1RETI定時定時/ /計數(shù)器用于計數(shù)器用于外部外部中斷擴展中斷擴展p擴展方法擴展方法n將定時將定時/ /計數(shù)器設置為計數(shù)器設置為計數(shù)器計數(shù)器方式方式p計數(shù)初值設定為計數(shù)初值設定為滿程滿程n將待擴展的將待擴展的外部中斷源外部中斷源接到定時接到定時/ /計數(shù)器的計數(shù)器的外外部計數(shù)引腳部計數(shù)引腳p從該引腳輸入一個下降沿信號,計數(shù)器從該引腳輸入一個下降沿信號,計數(shù)器加加1 1后便產(chǎn)生后便產(chǎn)生定時定時/ /計數(shù)器溢出計數(shù)器溢出中斷中斷。 例例5 5 定

32、時定時/ /計數(shù)器擴展計數(shù)器擴展外部外部中斷中斷p利用利用T0T0擴展一個外部中斷源擴展一個外部中斷源n步驟步驟p將將T0T0設置為計數(shù)器方式,按設置為計數(shù)器方式,按方式方式2工作工作pTH0TH0、TL0TL0的初值均為的初值均為0FFHpT0T0允許中斷,允許中斷,CPUCPU開放中斷開放中斷p初始化程序初始化程序MOV TMOD,#06H;置置T0為計數(shù)器方式為計數(shù)器方式2MOV TL0,#0FFH;置計數(shù)初值置計數(shù)初值MOV TH0,#0FFHSETB EA;CPU開中斷開中斷SETB ET0;允許允許T0中斷中斷SETB TR0;啟動啟動T0工作工作 例例6 6 定時定時/ /計數(shù)器

33、對外部事件計數(shù)器對外部事件計數(shù)計數(shù)p利用利用T1T1對外部事件計數(shù)對外部事件計數(shù)n要求要求p計計10001000個脈沖后,點亮指示燈個脈沖后,點亮指示燈 指示燈指示燈低電平點亮低電平點亮p晶振頻率為晶振頻率為12MHz12MHz解題步驟:解題步驟:p計數(shù)方式計數(shù)方式n計數(shù)初值計數(shù)初值N Np計數(shù)值計數(shù)值 M M10001000 N N2 21616M M655366553610001000FC18HFC18HpGATE=0GATE=0,C/T=1C/T=1,M1M0=01M1M0=01ledledbit P1.0bit P1.0; ;紅燈紅燈orgorg00h00h; ;主程序入口主程序入口l

34、jmpljmpmainmainorgorg001Bh001Bh; ;定時器定時器 1 1 中斷入口地址中斷入口地址ljmpljmpi_t1i_t1orgorg030h030hmain:main:setbsetbled_redled_red; ;熄滅紅燈熄滅紅燈movmovtmod, #51htmod, #51h;T1 ;T1 工作在方式工作在方式 1 1,用于計數(shù),用于計數(shù)movmovTH1, #0FChTH1, #0FCh; ;設定時器初值設定時器初值movmovTL1, #018hTL1, #018h; ;設定時器初值設定時器初值setbsetbet1et1; ;中斷中斷 T1 T1 允許

35、允許setbsetbeaea; ;總中斷允許總中斷允許setbsetbTR1TR1; ;定時器定時器 T1 T1 開始計數(shù)開始計數(shù)sjmpsjmp$ $; ;等待中斷等待中斷i_t1:i_t1:clrclrledledclrclrTR1TR1; ;定時器定時器 T1 T1 計數(shù)計數(shù) 停止停止 retireti; ;中斷返回中斷返回endend小結(jié)小結(jié)p兩個兩個T/CT/Cp定時定時/ /計數(shù)計數(shù)p四種工作方式:重點是四種工作方式:重點是方式方式1 1、2 2p兩個控制寄存器:兩個控制寄存器:TMODTMOD、TCONTCONp初值的計算初值的計算p典型應用典型應用p作業(yè):作業(yè):P123P123

36、:5.85.8、5.95.9、5.105.10 例例77方式方式3 3p只適用于:定時器只適用于:定時器T0T0n2 2個個 8 8位位 定時器定時器/ /計數(shù)器計數(shù)器pTH0 TH0 借用了定時器借用了定時器T1T1的的 溢出中斷標志溢出中斷標志 TF1TF1 運行控制位運行控制位 TR1 TR1 p 例例 n假設有一個用戶系統(tǒng)中,已經(jīng)假設有一個用戶系統(tǒng)中,已經(jīng)p使用了兩個外部中斷源使用了兩個外部中斷源p置定時器置定時器T1T1于方式于方式2 2,作串行口波特率發(fā)生器用,作串行口波特率發(fā)生器用pP1.0P1.0口輸出一個口輸出一個5Hz5Hz的方波的方波n現(xiàn)要求:再增加一個外部中斷源現(xiàn)要求:

37、再增加一個外部中斷源假設假設:晶振頻率晶振頻率6MHz解題思路解題思路p(1)(1)在不增加其它硬件開銷時在不增加其它硬件開銷時, , 可把定時器可把定時器/ /計數(shù)器計數(shù)器T0T0置于工置于工作方式作方式3, 3, 利用外部引腳利用外部引腳 T0T0端作附加的外部中斷輸入端端作附加的外部中斷輸入端p(2)(2)把把 TL0 TL0 預置為預置為 0FFH, 0FFH, 這樣在這樣在 T0 T0 端出現(xiàn)由端出現(xiàn)由 1 1 至至 0 0 的的負跳變時負跳變時, TL0, TL0立即溢出立即溢出, , 申請中斷申請中斷, , 相當于邊沿激活的外相當于邊沿激活的外部中斷源部中斷源。p(3)(3)在方式在方式 3 3下下, TH0 , TH0 總是作總是作 8 8 位定時器用位定時器用, , 可以靠它來可以靠它來控制由控制由 P1.0 P1.0 輸出的輸出的 5 kHz5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論