C單片機教程第_第1頁
C單片機教程第_第2頁
C單片機教程第_第3頁
C單片機教程第_第4頁
C單片機教程第_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第9章章 定時器定時器/計數(shù)器的應(yīng)用計數(shù)器的應(yīng)用9.1 定時器定時器/計數(shù)器定時功能的應(yīng)用計數(shù)器定時功能的應(yīng)用9.2 簡易方波發(fā)生器簡易方波發(fā)生器9.3 外部脈沖寬度的測量外部脈沖寬度的測量1. 實訓(xùn)目的實訓(xùn)目的掌握定時器掌握定時器/計數(shù)器定時功能的使用方法計數(shù)器定時功能的使用方法掌握定時器初值的計算方法掌握定時器初值的計算方法掌握定時中斷程序的編程方法掌握定時中斷程序的編程方法2. 功能設(shè)計功能設(shè)計主程序:主程序: 定時器定時器T0的初始化,應(yīng)用的初始化,應(yīng)用P1口控制發(fā)光口控制發(fā)光二極管二極管L1L8的亮暗交替顯示。的亮暗交替顯示。定時器定時器T0中斷:中斷: T0產(chǎn)生產(chǎn)生10s的定時中

2、斷,當定時時的定時中斷,當定時時間到時,間到時,8個發(fā)光二極管全滅,并持續(xù)一段時間個發(fā)光二極管全滅,并持續(xù)一段時間(延時(延時1s)。)。9.1 定時器定時器/計數(shù)器定時功能的應(yīng)用計數(shù)器定時功能的應(yīng)用3. 背景知識背景知識8051單片機的定時器單片機的定時器/計數(shù)器計數(shù)器T0(T1)為)為16位計數(shù)位計數(shù)器,有器,有4種工作方式。每種工作方式的特點見書中種工作方式。每種工作方式的特點見書中表表9.1。本題目需要本題目需要T0定時定時10s,直接使用表,直接使用表9.1中的中的4種方種方式均不能達到要求。如果采用方式式均不能達到要求。如果采用方式1,定時,定時100ms,則中斷則中斷10次時間為

3、次時間為100ms100=10000ms=10s。(1) 定時器工作方式寄存器定時器工作方式寄存器TMOD設(shè)置如書中所設(shè)置如書中所示。示。(2) 定時器定時器/計數(shù)器控制寄存器計數(shù)器控制寄存器TCON設(shè)置如書中設(shè)置如書中所示。所示。(3) 定時器計數(shù)器初始值計算定時器計數(shù)器初始值計算Tini(初始值)(初始值)=2N-定時時間定時時間/機器周期機器周期其中其中N是定時器是定時器/計數(shù)器的定時器長度,與定時器計數(shù)器的定時器長度,與定時器/計數(shù)器的工作方式有關(guān)。機器周期是晶振周期的計數(shù)器的工作方式有關(guān)。機器周期是晶振周期的12倍,若晶振為倍,若晶振為12MHz,則機器周期為,則機器周期為1s,若晶

4、振,若晶振為為6MHz,則機器周期為,則機器周期為2s。如要求定時如要求定時100ms(100000s),晶振采用),晶振采用6MHz,則定時器則定時器/計數(shù)器工作在方式計數(shù)器工作在方式1下的初始值為:下的初始值為: Tini=216-100000/2=1553615536轉(zhuǎn)換為十六進制數(shù)為轉(zhuǎn)換為十六進制數(shù)為3CB0H。(。(TL0)3CH,(TH0)0B0H。中斷次數(shù)計數(shù)器(。中斷次數(shù)計數(shù)器(R3)10。(4) T0中斷的入口地址為中斷的入口地址為000BH。4. 硬件原理與資源分配硬件原理與資源分配硬件原理圖如圖硬件原理圖如圖9.1所示。所示。硬件資源分配:硬件資源分配: P1口為口為8位

5、輸出口,驅(qū)動位輸出口,驅(qū)動8個發(fā)光個發(fā)光二極管。二極管。R5為循環(huán)計數(shù)器。為循環(huán)計數(shù)器。圖圖9.1 T0定時實訓(xùn)硬件原理圖定時實訓(xùn)硬件原理圖5. 參考程序參考程序ORG0000HAJMPMAIN;轉(zhuǎn)主程序轉(zhuǎn)主程序ORG000BH;T0中斷入口地址中斷入口地址AJMPJT0;轉(zhuǎn)轉(zhuǎn)T0處理程序處理程序MAIN: NOP;主程序段主程序段MOVSP,#40H;設(shè)定堆棧設(shè)定堆棧MOVA,#0FFHMOVP1,A;初始化初始化P1口口MOVR5,#100MOVTMOD,#01H;寫控制字,寫控制字,T0工作方式工作方式1MOVTH0,#0B0H;設(shè)定初始值設(shè)定初始值MOVTL0,#3CHSETBTR0;

6、啟動啟動T0SETBET0;允許允許T0中斷中斷SETBEA;開總中斷開總中斷LOOP: MOVA,#0AAHMOVP1,A;點亮點亮L1、L3、L5、L7LCALLYS1;調(diào)用延時調(diào)用延時1s程序程序MOVA,#55HMOVP1,A;點亮點亮L2、L4、L6、L8LCALLYS1;調(diào)用延時調(diào)用延時1s子程序子程序AJMPLOOP;主程序循環(huán),如果有中斷,則轉(zhuǎn)中斷處主程序循環(huán),如果有中斷,則轉(zhuǎn)中斷處理程序理程序JT0: NOP;外部中斷外部中斷0處理程序,如果有中斷處理程序,如果有中斷0則轉(zhuǎn)則轉(zhuǎn)此段此段CLREA;關(guān)總中斷關(guān)總中斷PUSHACC;保護現(xiàn)場保護現(xiàn)場PUSH02HPUSH03HPU

7、SH04HDJNZR5,RRTMOVR5,#100MOVA,#0FFH;L1L8全滅全滅MOVP1,ALCALLYS1;調(diào)用延時調(diào)用延時1s子程序子程序RRT: MOVTH0,#3CH;重裝初始值重裝初始值MOVTL0,#0B0HPOP04H;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場POP03HPOP02HPOPACCSETBEA;開中斷開中斷RETI;中斷返回中斷返回DLS: MOVR1,#0FFHLOP1: MOVR2,#0FFHLOP: DJNZR2,LOPDJNZR1,LOP1RETEND子程序子程序YS1見第見第6章例章例6.3。6. 總結(jié)與提高總結(jié)與提高定時器定時器/計數(shù)器是單片機內(nèi)部重要的功能部件,靈計

8、數(shù)器是單片機內(nèi)部重要的功能部件,靈活運用定時器活運用定時器/計數(shù)器的功能,不僅能夠節(jié)約硬件計數(shù)器的功能,不僅能夠節(jié)約硬件資源,而且還能使程序簡練、控制靈活。在使用定資源,而且還能使程序簡練、控制靈活。在使用定時器時器/計數(shù)器時應(yīng)注意以下幾個方面:計數(shù)器時應(yīng)注意以下幾個方面: (1) 應(yīng)根據(jù)所要求的定時時間長度和定時的重復(fù)應(yīng)根據(jù)所要求的定時時間長度和定時的重復(fù)性,合理選擇定時器的工作方式。性,合理選擇定時器的工作方式。(2) 定時器計數(shù)器的初始化,包括設(shè)定定時器計數(shù)器的初始化,包括設(shè)定TMOD、寫入定時初值、設(shè)置中斷系統(tǒng)和啟動定時器運行等。寫入定時初值、設(shè)置中斷系統(tǒng)和啟動定時器運行等。(3) 若

9、將定時器計數(shù)器用于計數(shù)方式,則外部若將定時器計數(shù)器用于計數(shù)方式,則外部脈沖必須從脈沖必須從P3.4(T0)或)或P3.5(T1)引腳輸入,且)引腳輸入,且外部脈沖的最高頻率不能超過時鐘頻率的外部脈沖的最高頻率不能超過時鐘頻率的124。在方式在方式0、方式、方式1、方式、方式2狀態(tài)下定時器狀態(tài)下定時器T0、T1的工的工作是一樣的,靈活運用這兩個內(nèi)部定時器,可以大作是一樣的,靈活運用這兩個內(nèi)部定時器,可以大大提高單片機的工作效率,減少對系統(tǒng)硬件資源的大提高單片機的工作效率,減少對系統(tǒng)硬件資源的占用,降低成本。占用,降低成本。1. 實訓(xùn)目的實訓(xùn)目的掌握定時器的使用及定時中斷程序的設(shè)計方法掌握定時器的

10、使用及定時中斷程序的設(shè)計方法掌握方波信號發(fā)生器的設(shè)計方法掌握方波信號發(fā)生器的設(shè)計方法2. 功能設(shè)計功能設(shè)計用單片機的用單片機的P3.1端口輸出一定頻率的方波。端口輸出一定頻率的方波。P1口外口外接接K1K8共共8個按鍵,用來設(shè)定輸出方波的頻率,個按鍵,用來設(shè)定輸出方波的頻率,共共8個檔位。系統(tǒng)晶振為個檔位。系統(tǒng)晶振為12MHz。9.2 簡易方波發(fā)生器簡易方波發(fā)生器3. 背景知識背景知識(1) 若若P3.1的輸出狀態(tài)定時翻轉(zhuǎn),則的輸出狀態(tài)定時翻轉(zhuǎn),則P3.1端口輸端口輸出一定頻率的方波。假設(shè)以定時器出一定頻率的方波。假設(shè)以定時器T0定時定時8ms(8000s)為基本定時時間,則)為基本定時時間,

11、則P3.1端口輸出方波端口輸出方波的周期為的周期為16ms。選擇。選擇T0方式方式0定時功能,定時器初定時功能,定時器初值為:值為: Tini=213-8000/1=192C0H11000000B低低5位(位(TL0)00000B00H,高,高8位位(TH0)00000110B06H。定時器工作方式寄存器定時器工作方式寄存器TMOD設(shè)置如書中所示。設(shè)置如書中所示。(2) 按下按鍵按下按鍵K1,則,則P3.1輸出基本頻率的方波,輸出基本頻率的方波,按下按鍵按下按鍵K2K8,則,則P3.1輸出頻率依次降低。主輸出頻率依次降低。主程序要根據(jù)按鍵確定程序要根據(jù)按鍵確定P3.1口的輸出頻率。口的輸出頻率

12、。(3) T0的中斷入口地址為的中斷入口地址為000BH。4. 硬件原理與資源分配硬件原理與資源分配硬件原理圖如圖硬件原理圖如圖9.2所示。所示。硬件資源分配硬件資源分配P1口為口為8位輸入口,外接位輸入口,外接8個按鍵個按鍵K1K8。R5為方波頻率系數(shù)。為方波頻率系數(shù)。R1、R2為延時程為延時程序序DLS中所用的定時器中所用的定時器/計數(shù)器。內(nèi)部計數(shù)器。內(nèi)部RAM61H、62H單元用于暫存鍵值、方波頻率系數(shù)。單元用于暫存鍵值、方波頻率系數(shù)。圖圖9.2 方波發(fā)生器方波發(fā)生器5. 參考程序參考程序ORG0000H;CPU起始地址起始地址AJMPMAIN;跳轉(zhuǎn)到主程序跳轉(zhuǎn)到主程序ORG000BH;

13、T0中斷入口地址中斷入口地址AJMPJT0;跳轉(zhuǎn)到跳轉(zhuǎn)到T0處理程序處理程序MAIN: NOP;主程序段主程序段MOVSP,#40H;設(shè)定堆棧設(shè)定堆棧MOVA,#0FFH;0FF送送AMOVP1,A;P1口為輸入口,初始化口為輸入口,初始化P1口口MOVTMOD,#00H;寫控制字,寫控制字,T0工作方式工作方式0MOVTH0,#06H ;設(shè)定初始值設(shè)定初始值MOVTL0,#00HSETBP3.1SETBTR0;啟動啟動T0SETBET0;允許允許T0中斷中斷SETBEA;開總中斷,開總中斷,EA=1(開放總中斷)(開放總中斷)LOOP: MOVA,P1;讀讀P1口口MOV61H,A;保存保存

14、P1口內(nèi)容口內(nèi)容JBACC.0,LA1;判斷是哪一個檔位判斷是哪一個檔位MOVR5,#01HLJMPLA9LA1: JBACC.1,LA2MOVR5,#02HLJMPLA9LA2: JBACC.2,LA3MOVR5,#03HLJMPLA9LA3: JBACC.3,LA4MOVR5,#04HLJMPLA9LA4: JBACC.4,LA5MOVR5,#05HLJMPLA9LA5: JBACC.5,LA6MOVR5,#06HLJMPLA9LA6: JBACC.6,LA7MOVR5,#07HLJMPLA9LA7: JBACC.7,LA8MOVR5,#08HLA9: MOV62H,R5;R5保存于保存于

15、62HLA8: AJMPLOOP;主程序循環(huán),如果有中斷,則轉(zhuǎn)主程序循環(huán),如果有中斷,則轉(zhuǎn)中斷處理程序中斷處理程序JT0: NOP;T0中斷處理程序中斷處理程序PUSHACC;將將A中數(shù)據(jù)壓入堆棧保存中數(shù)據(jù)壓入堆棧保存CLRET0;關(guān)關(guān)T0中斷中斷DJNZR5,TT10;由設(shè)定的由設(shè)定的R5的值確定輸出方波的頻率的值確定輸出方波的頻率CPLP3.1;P3.0輸出輸出MOVR5,62HTT10: MOVTH0,#06H;重裝初始值重裝初始值MOVTL0,#00HSETBET0;開開T0中斷中斷POPACC;恢復(fù)恢復(fù)ARETI;中斷返回中斷返回END6. 總結(jié)與提高總結(jié)與提高本實訓(xùn)是應(yīng)用定時器本實

16、訓(xùn)是應(yīng)用定時器T0的定時功能,輸出的定時功能,輸出8種不同種不同頻率的方波。實際應(yīng)用中,輸出方波的頻率可能要頻率的方波。實際應(yīng)用中,輸出方波的頻率可能要根據(jù)要求按某種規(guī)律變化,如根據(jù)現(xiàn)場測量參數(shù)、根據(jù)要求按某種規(guī)律變化,如根據(jù)現(xiàn)場測量參數(shù)、給定參數(shù)或按照某函數(shù)關(guān)系而變化。因此輸出波形給定參數(shù)或按照某函數(shù)關(guān)系而變化。因此輸出波形的頻率在編程時還是未知的。的頻率在編程時還是未知的。1. 實訓(xùn)目的實訓(xùn)目的掌握定時掌握定時/計數(shù)器門控位的使用方法計數(shù)器門控位的使用方法掌握脈沖寬度的測量方法掌握脈沖寬度的測量方法2. 功能設(shè)計功能設(shè)計測量測量P3.2口輸入的脈沖的寬度。口輸入的脈沖的寬度。9.3 外部脈

17、沖寬度的測量外部脈沖寬度的測量3. 背景知識背景知識(1) 脈沖寬度的測量原理利用定時器計數(shù)器方脈沖寬度的測量原理利用定時器計數(shù)器方式寄存器式寄存器TMOD中的門控位中的門控位GATE與與INTx引腳的配引腳的配合使用,可以控制定時器計數(shù)器的啟動與停止。合使用,可以控制定時器計數(shù)器的啟動與停止。GATE1時,當時,當TRxl(x=0,1),且),且INTx為高為高電平時,才能啟動定時器電平時,才能啟動定時器Tx計數(shù)工作,計數(shù)工作,INTx為低為低電平時,電平時,Tx停止計數(shù)。停止計數(shù)。GATE=0時,只要時,只要TRx1就可以啟動定時器,而與就可以啟動定時器,而與INTx的輸入狀態(tài)無關(guān)。的輸入

18、狀態(tài)無關(guān)。利用上述特點,被測脈沖信號從利用上述特點,被測脈沖信號從INT1(P3.3)引入,)引入,脈沖信號上升沿啟動脈沖信號上升沿啟動T1計數(shù),脈沖信號下降沿使計數(shù),脈沖信號下降沿使T1停止計數(shù)。定時器的計數(shù)值乘以機器周期即為停止計數(shù)。定時器的計數(shù)值乘以機器周期即為脈沖寬度。脈沖寬度。(2) 定時器工作方式寄存器定時器工作方式寄存器TMOD的設(shè)置如書中的設(shè)置如書中所示。所示。4. 硬件原理與資源分配硬件原理與資源分配硬件原理圖如圖硬件原理圖如圖9.3所示。所示。硬件資源分配:硬件資源分配: 內(nèi)部內(nèi)部RAM60H、61H單元用于保單元用于保存脈沖寬度對應(yīng)的機器周期數(shù)。存脈沖寬度對應(yīng)的機器周期數(shù)

19、。圖圖9.3 外部脈沖測量電路圖外部脈沖測量電路圖5. 參考程序參考程序ORG0000HAJMPMAINMAIN: NOPMOVSP,#40HMOVTMOD,#90H;寫控制字,寫控制字,T1工作方式工作方式1MOVTH1,#0H;設(shè)定初始值設(shè)定初始值00HMOVTL1,#0HLL0: JBP3.3,LL0;等待輸入變?yōu)楦唠娖降却斎胱優(yōu)楦唠娖絊ETBTR1;啟動啟動T1LL1: JNBP3.3,LL1;等待上升沿,以便開始計數(shù)等待上升沿,以便開始計數(shù)LL2: JBP3.3,LL2;是高電平則計數(shù)繼續(xù)是高電平則計數(shù)繼續(xù)CLRTR1;低電平則停止計數(shù)低電平則停止計數(shù)MOVA,TL1;讀低位計數(shù)值

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論