定時(shí)器的重點(diǎn)ppt課件_第1頁
定時(shí)器的重點(diǎn)ppt課件_第2頁
定時(shí)器的重點(diǎn)ppt課件_第3頁
定時(shí)器的重點(diǎn)ppt課件_第4頁
定時(shí)器的重點(diǎn)ppt課件_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、S 12 晶體振蕩器 外部計(jì)數(shù)源 輸入引腳 控制邏輯 TH(8) TL(8) TMOD TCON A B 圖 5-1 定時(shí)/計(jì)數(shù)器結(jié)構(gòu)框圖 l例1、設(shè)單片機(jī)晶振頻率為6MHZ,使用定時(shí)器1以方式0產(chǎn)生周期為500us的等寬正方波連續(xù)脈沖,并由P1.0輸出,以查詢方式完成。解:1、計(jì)算計(jì)數(shù)初值要產(chǎn)生500us的等寬正方波脈沖,只需在P1.0端以250us為周期交替輸出高低電平即可實(shí)現(xiàn),為此定時(shí)時(shí)間為250us。使用6MHZ晶振,則一個(gè)機(jī)器周期為2us,方式0為13位計(jì)數(shù)結(jié)構(gòu),設(shè)初值為X,那么:(213-X)*12*1/6 =250得:X=8067,二進(jìn)制數(shù)表示為:11111100 00011,十

2、六進(jìn)制表示為,高8位為:0FCH,低5位為:03H。其中高8位裝入TH1,即TH1 = 0FCH,低5位裝入TL1, 即TL1 = 03H。2、TMOD寄存器初始化 為把定時(shí)器/計(jì)數(shù)器設(shè)定為方式0,則M1M0= 00 ;為實(shí)現(xiàn)定時(shí)功能,應(yīng)使C/T=0;為實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器1的運(yùn)行控制,則GATE =0。定時(shí)器/計(jì)數(shù)器T0不用,有關(guān)位設(shè)定為0,因此TMOD寄存器初始化為00H。3、由定時(shí)器控制器TCON中的TR1位控制定時(shí)的啟動(dòng)和停止,TR1=1啟動(dòng) ,TR1=0停止。4、使用查詢就禁止中斷 IE=00Hl5、程序設(shè)計(jì):l MOV TMOD ,#00H ; 設(shè)置T1為工作方式0l MOV TH1

3、 ,#0FCH ;設(shè)置計(jì)數(shù)初值l MOV TL1,#03Hl MOV IE ,#00H ;禁止中斷l(xiāng)SETB TR1 ;啟動(dòng)定時(shí)lLOOP: JBC TF1,LOOP1 ;查詢計(jì)數(shù)溢出l AJMP LOOPlLOOP1:MOV TH1,#0FCH ;重新設(shè)置計(jì)數(shù)初值l MOV TL1,#03Hl CPL P1.0 ;輸出取反l AJMP LOOP ;重復(fù)循環(huán)l例3、使用定時(shí)器0以工作方式2產(chǎn)生100us定時(shí),在P1.0輸出周期為200us的連續(xù)方波脈沖,已知晶振頻率fosc=6MHZ。解:1、計(jì)算計(jì)數(shù)初值 6MHZ晶振下,一個(gè)機(jī)器周期為2us,以TH0作重裝載的預(yù)置寄存器,TL0作8位計(jì)數(shù)器,

4、那么: (28-X)*12*1/6=100 ,得X=206=11001110B=0CEH 把0CEH分別裝入TH0和TL0中。2、TMOD初始化 為把定時(shí)器/計(jì)數(shù)器設(shè)定為方式2,則M1M0=10;為實(shí)現(xiàn)定時(shí)功能,應(yīng)使C/T=0;為實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器0的運(yùn)行控制,則GATE=0。定時(shí)器/計(jì)數(shù)器T1不用,有關(guān)位設(shè)定為0,因此TMOD寄存器初始化為0000 0010,即:02H3、由定時(shí)器控制器TCON中的TR0位控制定時(shí)的啟動(dòng)和停止,TR0=1啟動(dòng) ,TR0=0停止。4、使用中斷方式,應(yīng)開中斷 EA 位和ET0位置“1”l5、程序設(shè)計(jì)查詢方式)l MOV TMOD ,#02H ; 設(shè)置T0為工作方

5、式2l MOV TH0 ,#0CEH ;設(shè)置計(jì)數(shù)初值l MOV TL0,#0CEHl MOV IE ,#00H ;禁止中斷l(xiāng) SETB TR0 ;啟動(dòng)定時(shí)l LOOP: JBC TF0,LOOP1 ;查詢計(jì)數(shù)溢出l AJMP LOOPlLOOP1:CPL P1.0 ;輸出取反l AJMP LOOP ;重復(fù)循環(huán)l5、程序設(shè)計(jì)中斷方式)l MOV TMOD ,#02H ; 設(shè)置T0為工作方式2l MOV TH0 ,#0CEH ;設(shè)置計(jì)數(shù)初值l MOV TL0,#0CEHl SETB EA ;開中斷l(xiāng) SETB ET0 ; 定時(shí)器1允許中斷l(xiāng)LOOP: SETB TR0 ;啟動(dòng)定時(shí)lHERE: SJ

6、MP $ ; 等待中斷l(xiāng) AJMP LOOPl中斷服務(wù)程序:l CPL P1.0 ;輸出取反l RETI ;中斷返回l設(shè)某用戶系統(tǒng)中已使用了兩個(gè)外部中斷源,并置定時(shí)器T1工作在模式2,作串行口波特率發(fā)生器用?,F(xiàn)要求再增加一個(gè)外部中斷源,并由P1.0輸出一個(gè)5KHz的方波。Fosc = 12MHz。l分析:l目的:1) 增加一個(gè)外部中斷;l 2) 使P1.0輸出一個(gè)方波。l條件:1兩個(gè)外部中斷源已被使用l 2定時(shí)器T1已用于串行口波特率發(fā)生器l因而:可利用定時(shí)/計(jì)數(shù)器T0,使之工作在模式3,l 1利用TL0擴(kuò)展外部中斷源l 2利用TH0作定時(shí)器使用,輸出方波l l 設(shè)置初值:l 1) TL0 =

7、 0FFHl 2) 因?yàn)檩敵龇讲╢ = 5kHz,故方波周期為200us,用TH0產(chǎn)生100us的定時(shí),故TH0的初值X = 256 (定時(shí)時(shí)間/機(jī)器周期)l = 256 - (100us*晶振頻率/12)l = 156l設(shè)定T0工作方式,TMOD,TCON.l程序:l MOV TMOD,#27H ;T0:模式3,計(jì)數(shù)方式l ;T1:模式2,定時(shí)方式l MOV TL0,#0FFH ;一旦加1,馬上溢出,申請(qǐng)中斷l(xiāng) MOV TH0,#156 ;TH0初值l MOV TH1,#data ;根據(jù)波特率要求而定l MOV TL1, #datal MOV TCON,#55H ;01010101l MOV

8、 IE,#9FH ;開放全部中斷l(xiāng)TL0INT: MOV TL0,#0FFH ;TL0重新賦值l .l RETIlTH0INT: MOV TH0,#156 ;TH0重新賦值l CPL P1.0l RETI l低頻信號(hào)發(fā)生器驅(qū)動(dòng)程序l設(shè)計(jì)一個(gè)控制程序,使89c51的P1口輸出8路低頻方波脈沖,頻率分別為100,50,25,20,10,5,2,1Hz。1. 計(jì)算定時(shí)器初值 使用T0,產(chǎn)生5ms的定時(shí),若晶振選12MHz,則5ms相當(dāng)于5000個(gè)機(jī)器周期,T0應(yīng)工作在模式1,初值x為: x= 65536-5000=60536,用十六進(jìn)制表示,則x=0EC78H。 (注意TH,TL分開賦值-因?yàn)門0/

9、T1都是16位)2 . 設(shè)立8個(gè)計(jì)數(shù)器 對(duì)應(yīng)于P1.0P1.7,設(shè)立8個(gè)計(jì)數(shù)器,初值分別為1,2,4,5,10,20,50,100,由T0的溢出中斷服務(wù)程序?qū)λ鼈儨p“1計(jì)數(shù),當(dāng)減為0時(shí)恢復(fù)初值,并使相應(yīng)的口引腳改變狀態(tài),這樣就可以使P1口輸出所要求的方波。l程序:l ORG 0lSTART: AJMP MAINl ORG 0BHlPTP0: MOV TL0,#78H ;T0中斷服務(wù)程序l MOV TH0,#0ECHl CPL P1.0l DJNZ 31H, PF01 ;對(duì)各路時(shí)間計(jì)數(shù)器進(jìn)行減1計(jì)數(shù)l MOV 31H,#2 ;計(jì)數(shù)器減為1,恢復(fù)計(jì)數(shù)初值l CPL P1.1 ;輸出取反lPF01:

10、 DJNZ 32H, PF02l MOV 32H, #4l CPL P1.2lPF02: DJNZ 33H, PF03l MOV 33H, #5l CPL P1.3PF03: DJNZ 34H, PF04 MOV 34H, #10 CPL P1.4PF04: DJNZ 35H, PF05 MOV 35H, #20 CPL P1.5PF05: DJNZ 36H, PF06 MOV 36H, #50 CPL P1.6PF06: DJNZ 37H, PF07 MOV 37H, #100 CPL P1.7PF07: RETIMAIN: MOV SP, #70H ;主程序棧指針初始化 MOV 31H,

11、#2 ;各路計(jì)數(shù)器置初值 MOV 32H, #4 MOV 33H, #5 MOV 34H, #10 MOV 35H, #20 MOV 36H, #50 MOV 37H, #100 MOV TMOD, #1 ;GATE = 0, C/T=0, M1M0 = 01 MOV TL0, #78H ;初值T0 MOV TH0, #0ECH MOV IE, #82H ;允許T0中斷 SETB TR0 ;允許T0計(jì)數(shù)HERE: SJMP HERE ;以踏步表示CPU可以處理其他工作例例 利用定時(shí)器利用定時(shí)器T1的模式的模式2對(duì)外部信號(hào)計(jì)對(duì)外部信號(hào)計(jì)數(shù),要求每計(jì)滿數(shù),要求每計(jì)滿100次對(duì)次對(duì)P1.0端取反。端

12、取反。解:(解:(1計(jì)算計(jì)數(shù)初值計(jì)算計(jì)數(shù)初值X 100=28-X X=256-100=156=9CH (2模式字模式字 TMOD=0110*B=60H (3程序清單程序清單 ;用中斷方式;用中斷方式 ORG 0000HMAIN:MOV TMOD,#60H MOV TL1,#156 MOV TH1,#156 MOV IE,#88H SETB TR1 SJMP $ ORG 001BH CPL P1.0 RETI 例例 脈沖參數(shù)測(cè)量脈沖參數(shù)測(cè)量GATE功能的使用。功能的使用。 脈沖高電平計(jì)數(shù)長度值存于脈沖高電平計(jì)數(shù)長度值存于21H、20H中,中, 脈沖低電平長度存于脈沖低電平長度存于23H、22H中

13、。中。 電路連接如下圖所示。電路連接如下圖所示。解:解: 復(fù)習(xí)復(fù)習(xí)GATE的用法:的用法: GATE = 0時(shí),時(shí),TRi = 1,即可啟動(dòng),即可啟動(dòng)Ti定時(shí)定時(shí) / 計(jì)數(shù)計(jì)數(shù) GATE = 1時(shí),時(shí),TRi = 1,且,且 =1,才啟動(dòng)定時(shí),才啟動(dòng)定時(shí) / 計(jì)數(shù)。計(jì)數(shù)。INTi89C510INT1INTP3.2P3.31被測(cè)信號(hào)被測(cè)信號(hào)21a3T0計(jì)數(shù)計(jì)數(shù)T1計(jì)數(shù)計(jì)數(shù) ORG 0000H LJMP MAIN ORG 2000HMAIN:MOV TMOD,#99H ;T0、T1均工作在定時(shí),均工作在定時(shí), ;模式;模式1,GATE=1 MOV A,#00H ;T0、T1賦計(jì)數(shù)初值賦計(jì)數(shù)初值00

14、H, ; 定時(shí)最長時(shí)間為定時(shí)最長時(shí)間為0000 65536 MOV TL0,A MOV TH0,A MOV TL1,A MOV TH1,A TEST0: JB P3.2,TEST0 ;檢測(cè)是否到;檢測(cè)是否到a點(diǎn)點(diǎn) SETB TR0 ;到;到a點(diǎn),點(diǎn),TR0 = 1,做好取計(jì)時(shí)值準(zhǔn)備。,做好取計(jì)時(shí)值準(zhǔn)備。TEST1: JNB P3.2,TEST1 ;檢測(cè)是否到;檢測(cè)是否到1點(diǎn)點(diǎn) SETB TR1 ;到;到1點(diǎn)點(diǎn)T0計(jì)時(shí);計(jì)時(shí);TR1 = 1,做好,做好T1計(jì)時(shí)準(zhǔn)備。計(jì)時(shí)準(zhǔn)備。TEST2:JB P3.2,TEST2 ;檢測(cè)是否到;檢測(cè)是否到2點(diǎn)點(diǎn) CLR TR0 ;到;到2點(diǎn),停止點(diǎn),停止T0計(jì)時(shí)

15、,計(jì)時(shí),T1開始計(jì)時(shí)。開始計(jì)時(shí)。 MOV 20H,TH0 ;保存;保存T0計(jì)時(shí)結(jié)果計(jì)時(shí)結(jié)果 MOV 21H,TL0TEST3:JB P3.3,TEST3 ;檢測(cè)是否到;檢測(cè)是否到3點(diǎn)點(diǎn) CLR TR1 ;到;到3點(diǎn),停止點(diǎn),停止T1計(jì)數(shù)計(jì)數(shù) MOV 22H,TH1 ;保存;保存T1計(jì)數(shù)結(jié)果計(jì)數(shù)結(jié)果 MOV 23H,TL1 LCALL DISP SJMP l80C51可以隨時(shí)讀寫計(jì)數(shù)寄存器可以隨時(shí)讀寫計(jì)數(shù)寄存器TLx和和THx (x為為0或或1) ,用于實(shí)時(shí)顯示計(jì)數(shù)值等。,用于實(shí)時(shí)顯示計(jì)數(shù)值等。l辦法是:先讀辦法是:先讀THx,后讀,后讀TLx,再重讀,再重讀THx,若兩次讀得的,若兩次讀得的T

16、Hx值是一樣的,值是一樣的,則可以確定讀入的數(shù)據(jù)是正確的;若兩則可以確定讀入的數(shù)據(jù)是正確的;若兩次讀得的次讀得的THx值不一致,則必須重讀。值不一致,則必須重讀。 RDTIME:MOV A,TH0;讀;讀TH0MOV R0,TL0;讀;讀TL0并存入并存入R0CJNE A,TH0,RDTIME ;再讀;再讀TH0,與上次,與上次;讀入的;讀入的TH0比較,若不等,重讀比較,若不等,重讀MOV R1,A;存;存TH0在在R1中中RET(1實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想如何獲得如何獲得1 1秒的定時(shí),可把定時(shí)時(shí)間定為秒的定時(shí),可把定時(shí)時(shí)間定為100ms100ms,采用中斷方式,采用中

17、斷方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿1010次,即得到秒計(jì)時(shí)。次,即得到秒計(jì)時(shí)。片內(nèi)片內(nèi)RAMRAM中規(guī)定中規(guī)定3 3個(gè)單元作為秒、分、時(shí)單元,具體安排如下:個(gè)單元作為秒、分、時(shí)單元,具體安排如下: 32H 32H:“秒單元秒單元 ;31H31H:“分單元;分單元;30H30H:“時(shí)單元時(shí)單元從秒到分,從分到時(shí)是通過軟件累加并進(jìn)行比較的方法來實(shí)現(xiàn)從秒到分,從分到時(shí)是通過軟件累加并進(jìn)行比較的方法來實(shí)現(xiàn)的。的。 時(shí)鐘時(shí)鐘 就是以秒、分、時(shí)為單位進(jìn)行計(jì)時(shí)。用定時(shí)器與中斷的聯(lián)就是以秒、分、時(shí)為單位進(jìn)行計(jì)時(shí)。用定時(shí)器與中斷的聯(lián)合應(yīng)用。合應(yīng)用。假定使用定時(shí)器T0,以工作模式1進(jìn)行100m

18、s的定時(shí)。如fosc=6MHz,則計(jì)數(shù)初值X為: (216X)12/(6 106 )=10010-3 s X=15536=3CB0H因而 : (TL0)=0B0H (TH0)=3CH 采用定時(shí)方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿10次即得到秒計(jì)時(shí)。 從秒到分和從分到時(shí)的計(jì)時(shí)是通過累計(jì)和數(shù)值比較實(shí)現(xiàn)的。 時(shí)鐘顯示即及顯示緩沖區(qū)部分在這里略,可自行設(shè)計(jì)。 主程序MAIN的主要功能是進(jìn)行定時(shí)器T1的初始化編程并啟動(dòng)T1,然后通過反復(fù)調(diào)用顯示子程序,等待100ms定時(shí)中斷的到來。其流程如 圖所示。(2程序流程及程序清單程序流程及程序清單設(shè)設(shè)T1為模式為模式1設(shè)中斷次數(shù)設(shè)中斷次數(shù)清計(jì)時(shí)單元清計(jì)時(shí)單元開中斷開中斷

19、啟動(dòng)啟動(dòng)T1調(diào)用顯示子程序調(diào)用顯示子程序等待定時(shí)中斷等待定時(shí)中斷 中斷服務(wù)程序中斷服務(wù)程序PITO的主要功能的主要功能進(jìn)行計(jì)時(shí)操作。程序開始先判斷計(jì)數(shù)溢出是否滿了進(jìn)行計(jì)時(shí)操作。程序開始先判斷計(jì)數(shù)溢出是否滿了10次,不滿表明還沒達(dá)到最小計(jì)時(shí)單位次,不滿表明還沒達(dá)到最小計(jì)時(shí)單位秒,中斷秒,中斷返回;如滿返回;如滿10次則表示已達(dá)到最小計(jì)時(shí)單位次則表示已達(dá)到最小計(jì)時(shí)單位秒,秒,程序繼續(xù)向下運(yùn)行,進(jìn)行計(jì)時(shí)操作。程序繼續(xù)向下運(yùn)行,進(jìn)行計(jì)時(shí)操作。 要求滿要求滿1秒則秒則“秒位秒位32H單元內(nèi)容加單元內(nèi)容加1,滿,滿60s則則“分位分位31H單元內(nèi)容加單元內(nèi)容加1,滿,滿60min則則“時(shí)位時(shí)位30H單元內(nèi)

20、容加單元內(nèi)容加1,滿,滿24h則則30H,31H,332H單元單元內(nèi)容全部清內(nèi)容全部清0。中斷服務(wù)程序流程如下圖所示。中斷服務(wù)程序流程如下圖所示。保護(hù)現(xiàn)場(chǎng)賦計(jì)數(shù)初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢復(fù)現(xiàn)場(chǎng)返回入口入口NNNNYYYY圖 中斷服務(wù)程序流程圖 源程序如下: ORG 0000H AJMP MAIN ; 上電,轉(zhuǎn)向主程序 ORG 001BH ;T1的中斷服務(wù)程序入口地址 AJMP SERVE ;轉(zhuǎn)向中斷服務(wù)程序 ORG 2000H ;主程序MAIN: MOV SP,#60H ;設(shè)堆棧指針 MOV TMOD,#10H ;設(shè)置T1工作于模式1 MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論