課題五定時計數(shù)器_第1頁
課題五定時計數(shù)器_第2頁
課題五定時計數(shù)器_第3頁
課題五定時計數(shù)器_第4頁
課題五定時計數(shù)器_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、復(fù)習(xí)“中斷”n8051有幾個中斷源?幾級優(yōu)先級?n中斷源對應(yīng)的中斷入口是多少?n中斷源自然優(yōu)先級的順序?n關(guān)鍵字interrupt的作用?n與中斷相關(guān)的SFR有哪些?復(fù)習(xí)“中斷”n簡述中斷響應(yīng)過程。中斷源B向CPU提出中斷請求,CPU暫時中斷原來工作A,轉(zhuǎn)去處理事件B,處理完成后,再回到原來被中斷的地方,繼續(xù)工作A的執(zhí)行n能用RET指令代替RETI指令嗎?不可以。RET雖然也能控制PC返回到原來中斷的地方,但RET指令沒有清零中斷優(yōu)先級狀態(tài)觸發(fā)器的功能。中斷系統(tǒng)會任務(wù)中斷仍在進行,同級或低級中斷請求將不會被相應(yīng) 課題五課題五 定時定時/計數(shù)器計數(shù)器 任務(wù)一輸出任務(wù)一輸出1000Hz的方波的方波

2、任務(wù)二任務(wù)二 每秒閃爍一次的每秒閃爍一次的LED 任務(wù)三簡易頻率計任務(wù)三簡易頻率計任務(wù)一輸出任務(wù)一輸出1000Hz的方波的方波任務(wù)目標(biāo)任務(wù)目標(biāo)任務(wù)的目標(biāo)是利用定時中斷實現(xiàn)從任務(wù)的目標(biāo)是利用定時中斷實現(xiàn)從P1.0輸出輸出1000Hz的方波。的方波。程序設(shè)計分析程序設(shè)計分析從從P1.0輸出輸出1000Hz的方波,實際上就是要求從的方波,實際上就是要求從P1.0輸出周期為輸出周期為1ms的方波。則高電平和低電平的方波。則高電平和低電平的時間各為的時間各為1ms的一半,即各為的一半,即各為500s。也就是在單片機中實現(xiàn)也就是在單片機中實現(xiàn)500s的定時,每次定時的定時,每次定時時間到了的時候,將時間到

3、了的時候,將P1.0的電平改變就可以了。的電平改變就可以了。一個引腳的電平的改變,使用取反指令就可以完一個引腳的電平的改變,使用取反指令就可以完成,具體的指令如成,具體的指令如“P10=P10;” 延時500sP1.0電平取反P1.0電平取反重裝定時器初值定時時間到了中斷結(jié)束圖8-2 采用指令延遲程序框圖圖8-3 中斷服務(wù)程序的流程圖任務(wù)二每秒閃爍一次的任務(wù)二每秒閃爍一次的LED任務(wù)目標(biāo)任務(wù)目標(biāo)利用定時中斷實現(xiàn)將利用定時中斷實現(xiàn)將LED每秒閃爍一次。每秒閃爍一次。程序設(shè)計分析程序設(shè)計分析要使要使LED每秒閃爍一次,按每秒閃爍一次,按LED的點亮?xí)r間和的點亮?xí)r間和熄滅時間相同進行處理,則只需要進

4、行熄滅時間相同進行處理,則只需要進行0.5s的的定時。具體處理是,每過定時。具體處理是,每過0.5s,將,將LED的狀態(tài)的狀態(tài)取反就可以實現(xiàn)目標(biāo)了。或者說,與本課題中取反就可以實現(xiàn)目標(biāo)了?;蛘哒f,與本課題中的任務(wù)一類似,只不過是頻率變得很低了,周的任務(wù)一類似,只不過是頻率變得很低了,周期更長了期更長了 。 任務(wù)三簡易頻率計任務(wù)三簡易頻率計任務(wù)目標(biāo)任務(wù)目標(biāo) 具體目標(biāo)是:利用單片機的具體目標(biāo)是:利用單片機的T0、T1的定時的定時/計數(shù)計數(shù)功能,完成對輸入的信號的頻率進行測量,測量功能,完成對輸入的信號的頻率進行測量,測量的結(jié)果通過的結(jié)果通過8位動態(tài)數(shù)碼管顯示出來。這里要求位動態(tài)數(shù)碼管顯示出來。這里

5、要求實現(xiàn)對實現(xiàn)對0200KHz的信號頻率進行準(zhǔn)確測量,的信號頻率進行準(zhǔn)確測量,測量誤差不超過測量誤差不超過1Hz。 課題目標(biāo)課題目標(biāo)n本課題的任務(wù)是用單片機實現(xiàn):p精確定時和計數(shù)n通過三個任務(wù)的實現(xiàn),學(xué)會:編寫單片機中斷服務(wù)程序定時計數(shù)器的初始化、短時間定時和長時間定時的實現(xiàn)80C51單片機的定時/計數(shù)器定時/計數(shù)器的結(jié)構(gòu)基本型:基本型:T0T0,定時、計數(shù)。,定時、計數(shù)。 T1T1,定時、計數(shù)、串口波特率發(fā)生器。,定時、計數(shù)、串口波特率發(fā)生器。 增強型:增加了增強型:增加了T2T2。見。見5.3.45.3.4節(jié)。節(jié)。 1 定時/計數(shù)器的結(jié)構(gòu)和工作原理 TH1、TL1TH0、TL0TCONTM

6、OD定時/計數(shù)器的工作原理實質(zhì)是實質(zhì)是1616位加位加1 1計數(shù)器計數(shù)器定時器模式時,是對內(nèi)部機器周期計數(shù)。計數(shù)值乘以機器周期就是定時時間 計數(shù)器模式時,是對外部事件計數(shù)。脈沖由T0(P3.4)或T1(P3.5)引腳輸入。 注意注意:(:(若若計數(shù)值計數(shù)值為為N N, ,計數(shù)初值計數(shù)初值為為X X) )溢出信號使溢出信號使TF0TF0或或TF1TF1置置1 1,并,并發(fā)出中斷請求發(fā)出中斷請求,1616位時有:位時有: N=65536-XN=65536-X,或,或X=65536-NX=65536-N12MHz12MHz晶振時,計數(shù)頻率低于晶振時,計數(shù)頻率低于0.5MHz 0.5MHz 2 定時/

7、計數(shù)器的控制工作方式寄存器TMOD 76543210TMODGATE C/TM1M0GATE C/TM1M0字節(jié)地址:89HGATE:門控位。GATE0時,只要TRx為1,就可啟動計數(shù)器工作;GATA1時,定時器的啟動還要加上INTx引腳為高電平這一條件。 C/T:模式選擇位。 清0為定時模式,置1為計數(shù)方式。M1M0:工作方式設(shè)置位。可設(shè)置四種工作方式(見下頁)。M1M0工作方式說 明00方式013位定時/計數(shù)器01方式116位定時/計數(shù)器10方式28位自動重裝定時/計數(shù)器11方式3T0分成兩個獨立的8位定時/計數(shù)器;T1此方式停止計數(shù)注意:注意:TMODTMOD不能進行位尋址不能進行位尋址

8、 控制寄存器TCON 76543210TCONTF1TR1TF0TR0字節(jié)地址:88H TFxTFx:TxTx溢出標(biāo)志位。溢出標(biāo)志位。響應(yīng)中斷后響應(yīng)中斷后TFxTFx有硬件自動清有硬件自動清0 0。用軟件設(shè)置用軟件設(shè)置TFxTFx可產(chǎn)生同硬件置可產(chǎn)生同硬件置1 1或清或清0 0同樣的效果。同樣的效果。 TRxTRx:TxTx運行控制位。運行控制位。置置1 1時開始工作;清時開始工作;清0 0時停止工作。時停止工作。TRxTRx要由軟件置要由軟件置1 1或清或清0 0(即啟動與停止要由軟件控制即啟動與停止要由軟件控制)。)。3 定時/計數(shù)器的工作方式T0T0有方式有方式0 0、1 1、2 2、3

9、 3;T1T1有方式有方式0 0、1 1、2 2。以。以T0T0為例說明。為例說明。方式0:13位方式 C/T=1 C/T=1時,則為計數(shù)模式,有:時,則為計數(shù)模式,有: X=2X=21313-N=8192-N-N=8192-N C/T=0 C/T=0時,則為定時模式,有:時,則為定時模式,有: X=2X=21313-N=8192-N-N=8192-N,N=N=t t/Tcy/Tcy【例例5-35-3】若計數(shù)個數(shù)若計數(shù)個數(shù)N N為為2 2,求計數(shù)初值。,求計數(shù)初值。 公式法計算:公式法計算:X X819281922=8190=1FFEH2=8190=1FFEH 求補法計算:對求補法計算:對0

10、0000 0000 0010B0 0000 0000 0010B取反加取反加1 1為:為: 1 1111 1111 1110B(1 1111 1111 1110B(1FFEH1FFEH) )初值計算:公式法 求補法 :X=對N求補門控位作用當(dāng)GATE=0時僅由TR0控制與門的開啟。與門輸出1時,控制開關(guān)接通,計數(shù)開始; 當(dāng)GATE=1時與門的開啟由INT0和TR0共同控制。這種方式可以用來測量INT0引腳上正脈沖的寬度。 注意:方式0的計數(shù)初值高8位和低5位確定麻煩 ,實際應(yīng)用中常由16位的方式1取代。方式1:16位方式 X=2X=21616-N=65536-N -N=65536-N 計數(shù)范圍

11、:計數(shù)范圍:1 16553665536 計數(shù)初值要計數(shù)初值要分成分成2 2個字節(jié)個字節(jié)分別送入分別送入TH0TH0、TL0TL0【例例5-45-4】若要求定時器若要求定時器T0T0工作于方式工作于方式1 1,定時時間為,定時時間為1ms1ms,當(dāng)晶振為當(dāng)晶振為6 MHz6 MHz時,求送入時,求送入TH0TH0和和TL0TL0的計數(shù)初值各為多少?的計數(shù)初值各為多少?應(yīng)怎樣送入應(yīng)怎樣送入TH0TH0和和TL0TL0?由于晶振為由于晶振為6 MHz6 MHz,所以機器周期,所以機器周期TcyTcy為為2 2S S,因此:,因此:N=t/TcyN=t/Tcy=1=11010-3-3/2/21010-

12、6-6500500X X2 21616-N-N65536-50065536-5006503665036FE0CH FE0CH 也可以利用以下也可以利用以下2 2條指令完成:條指令完成:v MOV TL0,#(65536-500)MOV TL0,#(65536-500)MODMOD 256 ; 256 ;余數(shù)余數(shù)為計數(shù)初值的為計數(shù)初值的低字節(jié)低字節(jié)v MOV TH0,#(65536-500)MOV TH0,#(65536-500)/ /256 ; 256 ; 商商為計數(shù)初值的為計數(shù)初值的高字節(jié)高字節(jié)用傳送指令分別將用傳送指令分別將FEHFEH送入送入TH0TH0中,中,0CH0CH送入送入TL0

13、TL0中即可。中即可。方式2:8位自動重裝方式 X=2X=28 8-N=256-N -N=256-N 計數(shù)范圍:計數(shù)范圍:1 1256256 特別適合與脈沖信號發(fā)生器特別適合與脈沖信號發(fā)生器方式3:(僅T0有此方式,T1的方式3將停止計數(shù)) TL0 TL0進行進行8 8位定時位定時/ /計數(shù)計數(shù) TH0TH0進行進行8 8位定時(位定時(T1T1方式方式2 2時,可出借時,可出借TR1TR1、TF1TF1) 一般情況下,當(dāng)定時器一般情況下,當(dāng)定時器T1用作串口波特率發(fā)生器時,定時器用作串口波特率發(fā)生器時,定時器T0才設(shè)置為工作模式才設(shè)置為工作模式3。 定時應(yīng)用 定時時間較小時(小于定時時間較小

14、時(小于65ms65ms)。晶振為。晶振為12 MHz12 MHz時,時,TcyTcy為為1 1S S??芍苯硬捎梅绞???芍苯硬捎梅绞? 1完成定時任務(wù)。完成定時任務(wù)。 例例1 1:輸出:輸出50Hz50Hz的方波。的方波。 利用定時利用定時/ /計數(shù)器計數(shù)器T0T0的方式的方式1 1,產(chǎn)生,產(chǎn)生10ms10ms的定時,并使的定時,并使P1.0P1.0引腳上輸出周期為引腳上輸出周期為20ms20ms的方波,采用中斷方式,設(shè)系統(tǒng)的方波,采用中斷方式,設(shè)系統(tǒng)的晶振頻率為的晶振頻率為12 MHz12 MHz。 確定方式字:確定方式字:T0T0在定時的方式在定時的方式1 1時:時:M1M0=01M1M

15、0=01,GATE=0 GATE=0 ,C/T=0C/T=0方式控制字為方式控制字為0101H H 求計數(shù)初值求計數(shù)初值X:X:TcyTcy為為1 1S S N=10ms/1N=10ms/1S=10S=10 000000X=65536-10000=D8F0HX=65536-10000=D8F0H應(yīng)將應(yīng)將D8D8送送TH0, F0HTH0, F0H送送TL0 TL0 定時時間較大時(大于定時時間較大時(大于65ms65ms)。實現(xiàn)方法:一是采用。實現(xiàn)方法:一是采用1 1個定時個定時器定時一定的間隔(如器定時一定的間隔(如20ms20ms),然后用軟件進行計數(shù);二是采),然后用軟件進行計數(shù);二是采

16、用用2 2個定時器級聯(lián),其中一個定時器用來產(chǎn)生周期信號(如個定時器級聯(lián),其中一個定時器用來產(chǎn)生周期信號(如20ms20ms為周期),然后將該信號送入另一個計數(shù)器的外部脈沖輸入端為周期),然后將該信號送入另一個計數(shù)器的外部脈沖輸入端進行脈沖計數(shù)。進行脈沖計數(shù)。 例例2 2每秒閃爍一次的每秒閃爍一次的LED LED 。設(shè)系統(tǒng)的晶振頻率為。設(shè)系統(tǒng)的晶振頻率為12MHz12MHz。確定方式字:確定方式字:T0T0在定時的方式在定時的方式1 1時:時:M1M0=01M1M0=01,GATE=0 GATE=0 ,C/T=0C/T=0方式控制字為方式控制字為0101H H 求計數(shù)初值求計數(shù)初值X:X:Tcy

17、Tcy為為1 1S S N=20ms/1N=20ms/1S=20S=20 000000X=65536-20000=4E20HX=65536-20000=4E20H應(yīng)將應(yīng)將4E4E送送TH0, 20HTH0, 20H送送TL0 TL0 需要定時需要定時500ms500ms,大于,大于65ms65ms采用定時采用定時20ms20ms,然后再計數(shù),然后再計數(shù)2525次的方法實現(xiàn)次的方法實現(xiàn) 任務(wù)一任務(wù)一P1.0輸出輸出1000Hz的方波的方波n分析:周期=1/1000Hz=1ms,即每0.5msP1.0取反12MHz的晶振需要設(shè):定時初值 N=500 TH0= (65536-500) (65536-

18、500)/ /256 256 TL0= (65536-500) (65536-500)% %256 256 工作方式設(shè)置為方式1初始化定時器啟動定時等待P1.0電平取反重裝定時器初值定時時間到了中斷結(jié)束主程序定時中斷服務(wù)程序sbit P10=P10void main()TMOD=0 x01;TH0= (65536-500)/256;TL0= (65536-500)%256;ET0=1;EA=1;TR0=1;void Timer0_int() interupt 1TH0= (65536-500)/256;TL0= (65536-500)%256;P10=P10;任務(wù)二每秒閃爍一次的任務(wù)二每秒閃爍

19、一次的LED任務(wù)目標(biāo)任務(wù)目標(biāo)利用定時中斷實現(xiàn)將利用定時中斷實現(xiàn)將LED每秒閃爍一次。每秒閃爍一次。程序設(shè)計分析程序設(shè)計分析要使要使LED每秒閃爍一次,按每秒閃爍一次,按LED的點亮?xí)r間和的點亮?xí)r間和熄滅時間相同進行處理,則只需要進行熄滅時間相同進行處理,則只需要進行0.5s的的定時。具體處理是,每過定時。具體處理是,每過0.5s,將,將LED的狀態(tài)的狀態(tài)取反就可以實現(xiàn)目標(biāo)了?;蛘哒f,與本課題中取反就可以實現(xiàn)目標(biāo)了?;蛘哒f,與本課題中的任務(wù)一類似,只不過是頻率變得很低了,周的任務(wù)一類似,只不過是頻率變得很低了,周期更長了期更長了 。 任務(wù)二每秒閃爍一次的任務(wù)二每秒閃爍一次的LED 為了完成為了完

20、成0.5s的定時,一般來說,有兩種方的定時,一般來說,有兩種方案可以實現(xiàn)。案可以實現(xiàn)。 第一種方案是采用硬件定時的基礎(chǔ)上,增加第一種方案是采用硬件定時的基礎(chǔ)上,增加一個存儲單元,每次中斷時使用該存儲單元進行一個存儲單元,每次中斷時使用該存儲單元進行計數(shù),當(dāng)達到某個計數(shù)值時再執(zhí)行對應(yīng)的程序,計數(shù),當(dāng)達到某個計數(shù)值時再執(zhí)行對應(yīng)的程序,這樣就延長了定時的時間長度。這樣就延長了定時的時間長度。 第二種方案是也是采用一個定時器進行硬件第二種方案是也是采用一個定時器進行硬件定時,在每次中斷時輸出一個脈沖,然后采用硬定時,在每次中斷時輸出一個脈沖,然后采用硬件計數(shù)的方式進行延長定時時間。件計數(shù)的方式進行延長

21、定時時間。任務(wù)二每秒閃爍一次的任務(wù)二每秒閃爍一次的LEDn分析:周期=500ms,即每500msP1.0取反硬件定時20ms,軟件計數(shù)25次12MHz的晶振需要設(shè):定時初值 N=20000 TH0= (65536-20000) (65536-20000)/ /256 256 TL0= (65536-20000) (65536-20000)% %256 256 工作方式設(shè)置為方式1sbit P10=P10;void main()TMOD=0 x01;TH0= (65536-500)/256;TL0= (65536-500)%256;ET0=1;EA=1;TR0=1;while(1);void T

22、imer0_int() interupt 1TH0= (65536-500)/256;TL0= (65536-500)%256;P10=P10;sbit P10=P10;unsigned char count=0;void main()TMOD=0 x01;TH0= (65536-20000)/256; TL0= (65536-20000)%256;ET0=1;EA=1; TR0=1;while(1);void Timer0_int() interupt 1TH0= (65536-20000)/256; TL0= (65536-20000)%256;count+;if(count=25)P10

23、=P10;count=0;能否將能否將count定義放到中斷服務(wù)程序內(nèi)部?定義放到中斷服務(wù)程序內(nèi)部?問題:修改代碼,讓問題:修改代碼,讓P10輸出輸出1000HZ方波,方波,P11輸輸出出500HZ方波方波sbit P10=P10;unsigned char count=0;void main()TMOD=0 x01;TH0= (65536-20000)/256; TL0= (65536-20000)%256;ET0=1; EA=1;TR0=1;while(1);void Timer0_int() interupt 1TH0= (65536-20000)/256; TL0= (65536-20

24、000)%256;count+;if(count=25)P10=P10;count=0;任務(wù)三簡易頻率計任務(wù)三簡易頻率計任務(wù)目標(biāo)任務(wù)目標(biāo) 具體目標(biāo)是:利用單片機的T0、T1的定時/計數(shù)功能,完成對輸入的信號的頻率進行測量,測量的結(jié)果通過8位動態(tài)數(shù)碼管顯示出來。這里要求實現(xiàn)對0200KHz的信號頻率進行準(zhǔn)確測量,測量誤差不超過1Hz。 課題分析 在一個單片機系統(tǒng)中,在一個單片機系統(tǒng)中,為了實現(xiàn)頻率的測量,就是要為了實現(xiàn)頻率的測量,就是要對外部信號進行計數(shù)對外部信號進行計數(shù),每到,每到1s時,將時,將計數(shù)所得的數(shù)值送到計數(shù)所得的數(shù)值送到顯示器顯示器上上。單片機系統(tǒng)要做三件事:單片機系統(tǒng)要做三件事:

25、n一是要一是要進行進行1s鐘的定時鐘的定時,n二是要二是要測量外部被測信號的周期數(shù)測量外部被測信號的周期數(shù),n三是三是將頻率顯示出來將頻率顯示出來。單片機中的單片機中的2個定時器個定時器/計數(shù)器既能進行定時,也能計計數(shù)器既能進行定時,也能計數(shù),因而在本課題中采用單片機內(nèi)部的定時器來完成課題數(shù),因而在本課題中采用單片機內(nèi)部的定時器來完成課題任務(wù)。任務(wù)。圖8-1 簡易頻率計實物圖123456ABCD654321DCBATitleNumberRevisionSizeBDate:8-Feb-2007 Sheet of File:G:桌面2005-1005電技Protel實訓(xùn)MyDesign.ddbDr

26、awn By:P0P2+5VAT89S52P1.0P3.4圖6-6 頻率計電路原理圖T0程序設(shè)計分析程序設(shè)計分析 因?qū)嶒炿娐肪д駀OSC11.0592MHz,所以T1的初值的裝入語句如下: TH1=(65536-5*110592/12)/256; TL1=(65536-5*110592/12)%256; 每定時1s鐘時間到了,就停止T0的計數(shù),而從T0的計數(shù)單元中讀取計數(shù)的數(shù)值,然后進行數(shù)據(jù)處理,送到數(shù)碼管顯示出來。 由本課題中的任務(wù)二中可知,T1工作在定時狀態(tài)下,最大定時時間約為65ms,達不到1s的定時,所以采用定時50ms,共定時20次,即可完成1s的定時功能。一、一、 定時定時1s 二、輸入的脈沖計數(shù)二、輸入的脈沖計數(shù) 作為定時器作為定時器T0,為了得到,為了得到1s內(nèi)的頻率值,

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論