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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、加增加 1p對(duì)外部輸入脈沖的要求對(duì)外部輸入脈沖的要求n被采樣的電平被采樣的電平至少至少要維持要維持一個(gè)機(jī)器周期一個(gè)機(jī)器周期,否則會(huì)否則會(huì)漏計(jì)數(shù)漏計(jì)數(shù)n最高計(jì)數(shù)頻率:晶振頻率的最高計(jì)數(shù)頻率:晶振頻率的1/241/24oscoscf f1212機(jī)器周期機(jī)器周期 2. 2. 定時(shí)功能定時(shí)功能p原理原理n通過(guò)通過(guò)計(jì)數(shù)計(jì)數(shù)實(shí)現(xiàn)實(shí)現(xiàn)p計(jì)數(shù)脈沖計(jì)數(shù)脈沖內(nèi)部?jī)?nèi)部時(shí)鐘脈沖時(shí)鐘脈沖p每個(gè)機(jī)器周期,計(jì)數(shù)值每個(gè)機(jī)器周期,計(jì)數(shù)值 加加 1 1p定時(shí)時(shí)間定時(shí)時(shí)間計(jì)數(shù)值計(jì)數(shù)值機(jī)器周期機(jī)器周期o os sc cf f1 12 2機(jī)機(jī)器器周周期期 5.3 5.3 定時(shí)定時(shí)/ /計(jì)數(shù)器的工作方式和控制寄存器計(jì)數(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í)/ /計(jì)數(shù)器工作方式設(shè)置表計(jì)數(shù)器工作方式設(shè)置表 M1 M0M1 M0工作方式工作方式功能說(shuō)明功能說(shuō)明0 00 00 01313位位定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器(TH(TH的的8 8位和位和TLTL的低的低5 5位位) ) 0 10 11 11616位位定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器1 01 02 2自動(dòng)重裝入初值自動(dòng)重裝入初值的的 8 8位位 定

6、時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器 1 11 13 3T0 T0 分成分成兩個(gè)兩個(gè)獨(dú)立獨(dú)立的的 8 8位位 定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器T1 T1 在在 方式方式3 3 時(shí)時(shí) 停止工作停止工作 T1T0pC/T C/T 定時(shí)器方式或計(jì)數(shù)器方式選擇位定時(shí)器方式或計(jì)數(shù)器方式選擇位nC/T=1C/T=1,計(jì)數(shù)器,計(jì)數(shù)器nC/T=0C/T=0,定時(shí)器,定時(shí)器pGATEGATE 門(mén)控標(biāo)志位門(mén)控標(biāo)志位nGATE=1GATE=1pTR0/TR1=1TR0/TR1=1且且/INT0(/INT0(或或/INT1)/INT1)高電平高電平,才才工作工作 用于測(cè)量用于測(cè)量/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 溢出標(biāo)志位溢出標(biāo)志位n計(jì)滿溢出計(jì)滿溢出時(shí),由時(shí),由硬件硬件置置 1 1n中斷響應(yīng)后,中斷響應(yīng)后,硬件自動(dòng)清硬件自動(dòng)清 0 0pTR1 / TR0 TR1 / TR0 運(yùn)行控

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

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

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

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

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

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

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

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

16、定時(shí) 0.01s0.01s的初值計(jì)算的初值計(jì)算p機(jī)器周期機(jī)器周期 = 12 = 12 12 MHz = 1 s 12 MHz = 1 sp0.01s0.01s內(nèi)內(nèi) T0 T0 需要計(jì)數(shù)需要計(jì)數(shù) N N 次次 N = 0.01s N = 0.01s 1 s1 s = 0.01/(10 = 0.01/(10-6-6) = 10000 ) = 10000 p若用若用方式方式1 1的的16 16 位計(jì)數(shù)器位計(jì)數(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)實(shí)現(xiàn)方法實(shí)現(xiàn)方法p查詢的方法和中斷的方法查詢的方法和中斷的方法實(shí)現(xiàn)方法實(shí)現(xiàn)方法p(1)(1)查詢方式查詢方式n查詢查詢T0T0的的TF0TF0:為:為1 1,定時(shí)時(shí)間到,對(duì),定時(shí)時(shí)間到,對(duì)P1.0P1.0取反操作取反操作n缺點(diǎn):占用缺點(diǎn):占用CPUCPUORG0000HLJMPMAIN;跳轉(zhuǎn)到主程序;跳轉(zhuǎn)到主程序ORG0100H ;主程序;主程序MAIN: MOVTMOD,#01H;置;置T0工作于方式工作于方式1LOOP: MOVTH0,#0D8H;裝入計(jì)數(shù)

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

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

20、裝入計(jì)數(shù)初值重裝入計(jì)數(shù)初值MOV TH0,#0D8H MOV TL0,#0F0H;P1.0取反輸出取反輸出CPL P1.0;中斷返回中斷返回RETIEND 例例22方式方式1 1p利用定時(shí)利用定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1產(chǎn)生一個(gè)產(chǎn)生一個(gè)1Hz1Hz的方波,此方波的方波,此方波由由P0.0P0.0引腳輸出,晶振頻率為引腳輸出,晶振頻率為6MHz6MHzp思路:思路:pf=1Hzf=1Hz,T=1sT=1sn此題轉(zhuǎn)化為此題轉(zhuǎn)化為p由定時(shí)器產(chǎn)生:由定時(shí)器產(chǎn)生:0.5s 0.5s 定時(shí)定時(shí)機(jī)器周期機(jī)器周期 = 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定時(shí),實(shí)現(xiàn)方法定時(shí),實(shí)現(xiàn)方法nT1T1:方式方式1 1p完成完成100ms100ms定時(shí)定時(shí)p在中斷程序里設(shè)置一個(gè)在中斷程序里設(shè)置一個(gè)“軟時(shí)鐘軟時(shí)鐘”,即一個(gè),即一個(gè)CLOCK=30HCLOCK=30H內(nèi)存單元內(nèi)存單元每中斷一次,每中斷一次,CLOCKCLOCK加加1 1,CLOCKCLOCK累計(jì)累計(jì)5 5次次(即(即0.5s0.5s),對(duì)),對(duì)P0.0P0.0取反操作取反操作解題步驟:解題步驟:p(1)(1)確定初值確定初值N

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

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

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

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

26、yt/ 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;實(shí)現(xiàn)程序:實(shí)現(xiàn)程序:;*偽指令偽指令*LED BITP0.0;*主程序入口地址主程序入口地址*ORG0000HLJMPMAIN;跳轉(zhuǎn)至主程序跳轉(zhuǎn)至主程序;*中斷入口地址中斷入口地址*ORG00BHLJMPT0_INT ;跳轉(zhuǎn)至

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

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

29、的寬度。沖的寬度。/INT0(P3.2)TMOD = #09HTH0 = TL0 = #00h等待等待INT0INT0變變低低電平電平后后TR0=1TR0=1T0T0開(kāi)始開(kāi)始計(jì)時(shí)計(jì)時(shí)計(jì)時(shí)開(kāi)始計(jì)時(shí)開(kāi)始計(jì)時(shí)停止計(jì)時(shí)停止T0T0停止停止計(jì)時(shí)計(jì)時(shí)源程序:源程序:ORG 00hMOV TMOD, #09H;設(shè)置設(shè)置 T0 為方式為方式 1,定時(shí)方式工作,定時(shí)方式工作,;GATE=1MOV TL0, #00H;設(shè)計(jì)數(shù)初值為設(shè)計(jì)數(shù)初值為0MOV TH0, #00HMOV R0, #30H;地址指針?biāo)偷刂分羔標(biāo)蚏0JBP3.2, $;等待等待INT0變低變低SETB TR0;啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器JNBP3.2

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

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

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

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

34、pljmpmainmainorgorg001Bh001Bh; ;定時(shí)器定時(shí)器 1 1 中斷入口地址中斷入口地址ljmpljmpi_t1i_t1orgorg030h030hmain:main:setbsetbled_redled_red; ;點(diǎn)亮紅燈點(diǎn)亮紅燈movmovtmodtmod, #51h, #51h;T1 ;T1 工作在方式工作在方式 1 1,用于計(jì)數(shù),用于計(jì)數(shù)movmovTH1, #0FChTH1, #0FCh; ;設(shè)定時(shí)器初值設(shè)定時(shí)器初值movmovTL1, #018hTL1, #018h; ;設(shè)定時(shí)器初值設(shè)定時(shí)器初值setbsetbet1et1; ;中斷中斷 T1 T1 允許允許

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論