版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、定時器及應用,定時/計數(shù)器的基本結構如圖所示 :,例1、設單片機晶振頻率為6MHZ,使用定時器1以方式0產(chǎn)生周期為500us的等寬正方波連續(xù)脈沖,并由P1.0輸出,以查詢方式完成。,解:1、計算計數(shù)初值 要產(chǎn)生500us的等寬正方波脈沖,只需在P1.0端以250us為周期交替輸出高低電平即可實現(xiàn),為此定時時間為250us。使用6MHZ晶振,則一個機器周期為2us,方式0為13位計數(shù)結構,設初值為X,則: (213-X)*12*1/6 =250 得:X=8067,二進制數(shù)表示為:11111100 00011,十六進制表示為,高8位為:0FCH,低5位為:03H。其中高8位裝入TH1,即TH1 =
2、 0FCH,低5位裝入TL1, 即TL1 = 03H。,2、TMOD寄存器初始化 為把定時器/計數(shù)器設定為方式0,則M1M0= 00 ;為實現(xiàn)定時功能,應使C/T=0;為實現(xiàn)定時器/計數(shù)器1的運行控制,則GATE =0。定時器/計數(shù)器T0不用,有關位設定為0,因此TMOD寄存器初始化為00H。 3、由定時器控制器TCON中的TR1位控制定時的啟動和停止,TR1=1啟動 ,TR1=0停止。 4、使用查詢就禁止中斷 IE=00H,5、程序設計: MOV TMOD ,#00H ; 設置T1為工作方式0 MOV TH1 ,#0FCH ;設置計數(shù)初值 MOV TL1,#03H MOV IE ,#00H
3、;禁止中斷 SETB TR1 ;啟動定時 LOOP: JBC TF1,LOOP1 ;查詢計數(shù)溢出 AJMP LOOP LOOP1:MOV TH1,#0FCH ;重新設置計數(shù)初值 MOV TL1,#03H CPL P1.0 ;輸出取反 AJMP LOOP ;重復循環(huán),例3、使用定時器0以工作方式2產(chǎn)生100us定時,在P1.0輸出周期為200us的連續(xù)方波脈沖,已知晶振頻率fosc=6MHZ。,解: 1、計算計數(shù)初值 6MHZ晶振下,一個機器周期為2us,以TH0作重裝載的預置寄存器,TL0作8位計數(shù)器,則: (28-X)*12*1/6=100 ,得X=206=11001110B=0CEH 把0
4、CEH分別裝入TH0和TL0中。 2、TMOD初始化 為把定時器/計數(shù)器設定為方式2,則M1M0=10;為實現(xiàn)定時功能,應使C/T=0;為實現(xiàn)定時器/計數(shù)器0的運行控制,則GATE=0。定時器/計數(shù)器T1不用,有關位設定為0,因此TMOD寄存器初始化為0000 0010,即:02H,3、由定時器控制器TCON中的TR0位控制定時的啟動和停止,TR0=1啟動 ,TR0=0停止。 4、使用中斷方式,應開中斷 EA 位和ET0位置“1”,5、程序設計(查詢方式) MOV TMOD ,#02H ; 設置T0為工作方式2 MOV TH0 ,#0CEH ;設置計數(shù)初值 MOV TL0,#0CEH MOV
5、IE ,#00H ;禁止中斷 SETB TR0 ;啟動定時 LOOP: JBC TF0,LOOP1 ;查詢計數(shù)溢出 AJMP LOOP LOOP1:CPL P1.0 ;輸出取反 AJMP LOOP ;重復循環(huán),5、程序設計(中斷方式) MOV TMOD ,#02H ; 設置T0為工作方式2 MOV TH0 ,#0CEH ;設置計數(shù)初值 MOV TL0,#0CEH SETB EA ;開中斷 SETB ET0 ; 定時器1允許中斷 LOOP: SETB TR0 ;啟動定時 HERE: SJMP $ ; 等待中斷 AJMP LOOP 中斷服務程序: CPL P1.0 ;輸出取反 RETI ;中斷返回
6、,設某用戶系統(tǒng)中已使用了兩個外部中斷源,并置定時器T1工作在模式2,作串行口波特率發(fā)生器用?,F(xiàn)要求再增加一個外部中斷源,并由P1.0輸出一個5KHz的方波。Fosc = 12MHz。,分析: 目的:1) 增加一個外部中斷; 2) 使P1.0輸出一個方波。 條件:1)兩個外部中斷源已被使用 2)定時器T1已用于串行口波特率發(fā)生器 因此:可利用定時/計數(shù)器T0,使之工作在模式3, 1)利用TL0擴展外部中斷源 2)利用TH0作定時器使用,輸出方波,設置初值: 1) TL0 = 0FFH 2) 因為輸出方波f = 5kHz,故方波周期為200us,用TH0產(chǎn)生100us的定時,故TH0的初值X =
7、256 (定時時間/機器周期) = 256 - (100us*晶振頻率/12) = 156 設定T0工作方式,TMOD,TCON.,程序: MOV TMOD,#27H ;T0:模式3,計數(shù)方式 ;T1:模式2,定時方式 MOV TL0,#0FFH ;一旦加1,馬上溢出,申請中斷 MOV TH0,#156 ;TH0初值 MOV TH1,#data ;根據(jù)波特率要求而定 MOV TL1, #data MOV TCON,#55H ;01010101 MOV IE,#9FH ;開放全部中斷 TL0INT: MOV TL0,#0FFH ;TL0重新賦值 . RETI TH0INT: MOV TH0,#1
8、56 ;TH0重新賦值 CPL P1.0 RETI,低頻信號發(fā)生器驅動程序 設計一個控制程序,使89c51的P1口輸出8路低頻方波脈沖,頻率分別為100,50,25,20,10,5,2,1Hz。,1. 計算定時器初值 使用T0,產(chǎn)生5ms的定時,若晶振選12MHz,則5ms相當于5000個機器周期,T0應工作在模式1,初值x為: x= 65536-5000=60536,用十六進制表示,則x=0EC78H。 (注意TH,TL分開賦值-因為T0/T1都是16位) 2 . 設立8個計數(shù)器 對應于P1.0P1.7,設立8個計數(shù)器,初值分別為1,2,4,5,10,20,50,100,由T0的溢出中斷服務
9、程序對它們減“1”計數(shù),當減為0時恢復初值,并使相應的口引腳改變狀態(tài),這樣就可以使P1口輸出所要求的方波。,程序: ORG 0 START: AJMP MAIN ORG 0BH PTP0: MOV TL0,#78H ;T0中斷服務程序 MOV TH0,#0ECH CPL P1.0 DJNZ 31H, PF01 ;對各路時間計數(shù)器進行減1計數(shù) MOV 31H,#2 ;計數(shù)器減為1,恢復計數(shù)初值 CPL P1.1 ;輸出取反 PF01: DJNZ 32H, PF02 MOV 32H, #4 CPL P1.2 PF02: DJNZ 33H, PF03 MOV 33H, #5 CPL P1.3,PF0
10、3: DJNZ 34H, PF04 MOV 34H, #10 CPL P1.4 PF04: DJNZ 35H, PF05 MOV 35H, #20 CPL P1.5 PF05: DJNZ 36H, PF06 MOV 36H, #50 CPL P1.6 PF06: DJNZ 37H, PF07 MOV 37H, #100 CPL P1.7 PF07: RETI,MAIN: MOV SP, #70H ;主程序棧指針初始化 MOV 31H, #2 ;各路計數(shù)器置初值 MOV 32H, #4 MOV 33H, #5 MOV 34H, #10 MOV 35H, #20 MOV 36H, #50 MOV
11、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計數(shù) HERE: SJMP HERE ;以踏步表示CPU可以處理其他工作,例 利用定時器T1的模式2對外部信號計數(shù),要求每計滿100次對P1.0端取反。,解:(1)計算計數(shù)初值X 100=28-X X=256-100=156=9CH (2)模式字 TMOD=0110*B=60H (3)程序清單 ;用中斷方式 ORG 0000H MAIN:MOV TMOD,
12、#60H MOV TL1,#156 MOV TH1,#156 MOV IE,#88H SETB TR1 SJMP $ ORG 001BH CPL P1.0 RETI,例 脈沖參數(shù)測量GATE功能的使用。 脈沖高電平(計數(shù))長度值存于21H、20H中, 脈沖低電平長度存于23H、22H中。 電路連接如下圖所示。,解: 復習GATE的用法: GATE = 0時,TRi = 1,即可啟動Ti定時 / 計數(shù) GATE = 1時,TRi = 1,且 =1,才啟動定時 / 計數(shù)。,ORG 0000H LJMP MAIN ORG 2000H MAIN:MOV TMOD,#99H ;T0、T1均工作在定時,
13、;模式1,GATE=1 MOV A,#00H ;T0、T1賦計數(shù)初值00H, ; 定時最長時間為0000 65536 MOV TL0,A,MOV TH0,A MOV TL1,A MOV TH1,A,TEST0: JB P3.2,TEST0 ;檢測是否到a點 SETB TR0 ;到a點,TR0 = 1,做好取計時值準備。 TEST1: JNB P3.2,TEST1 ;檢測是否到1點 SETB TR1 ;到1點T0計時;TR1 = 1,做好T1計時準備。 TEST2:JB P3.2,TEST2 ;檢測是否到2點 CLR TR0 ;到2點,停止T0計時,T1開始計時。 MOV 20H,TH0 ;保存
14、T0計時結果 MOV 21H,TL0,TEST3:JB P3.3,TEST3 ;檢測是否到3點 CLR TR1 ;到3點,停止T1計數(shù) MOV 22H,TH1 ;保存T1計數(shù)結果 MOV 23H,TL1 LCALL DISP SJMP ,運行中讀定時器/計數(shù)器,80C51可以隨時讀寫計數(shù)寄存器TLx和THx (x為0或1) ,用于實時顯示計數(shù)值等。 辦法是:先讀THx,后讀TLx,再重讀THx,若兩次讀得的THx值是一樣的,則可以確定讀入的數(shù)據(jù)是正確的;若兩次讀得的THx值不一致,則必須重讀。,例. 飛讀,RDTIME:MOVA,TH0;讀TH0 MOVR0,TL0;讀TL0并存入R0 CJN
15、EA,TH0,RDTIME;再讀TH0,與上次;讀入的TH0比較,若不等,重讀 MOVR1,A;存TH0在R1中 RET,實時時鐘的設計,(1)實時時鐘實現(xiàn)的基本思想,如何獲得1秒的定時,可把定時時間定為100ms,采用中斷方式進行溢出次數(shù)的累計,計滿10次,即得到秒計時。 片內(nèi)RAM中規(guī)定3個單元作為秒、分、時單元,具體安排如下: 32H:“秒”單元 ;31H:“分”單元;30H:“時”單元 從秒到分,從分到時是通過軟件累加并進行比較的方法來實現(xiàn)的。,時鐘 就是以秒、分、時為單位進行計時。用定時器與中斷的聯(lián)合應用。,假定使用定時器T0,以工作模式1進行100ms的定時。如fosc=6MHz,
16、則計數(shù)初值X為: (216X)12/(6 106 )=10010-3 s X=15536=3CB0H 因此 : (TL0)=0B0H (TH0)=3CH, 采用定時方式進行溢出次數(shù)的累計,計滿10次即得到秒計時。 從秒到分和從分到時的計時是通過累計和數(shù)值比較實現(xiàn)的。 時鐘顯示即及顯示緩沖區(qū)部分在這里略,可自行設計。, 主程序(MAIN)的主要功能是進行定時器T1的初始化編程并啟動T1,然后通過反復調(diào)用顯示子程序,等待100ms定時中斷的到來。其流程如 圖所示。,(2)程序流程及程序清單,設T1為模式1,設中斷次數(shù),清計時單元,開中斷,啟動T1,調(diào)用顯示子程序,等待定時中斷, 中斷服務程序(PI
17、TO)的主要功能 進行計時操作。程序開始先判斷計數(shù)溢出是否滿了10次,不滿表明還沒達到最小計時單位秒,中斷返回;如滿10次則表示已達到最小計時單位秒,程序繼續(xù)向下運行,進行計時操作。 要求滿1秒則“秒位”32H單元內(nèi)容加1,滿60s則“分位”31H單元內(nèi)容加1,滿60min則“時位”30H單元內(nèi)容加1,滿24h則30H,31H,332H單元內(nèi)容全部清0。中斷服務程序流程如下圖所示。,保護現(xiàn)場,賦計數(shù)初值,到1s?,(32H)加1,(32H)=60?,(32H)清0,(31H)加1,(31H)=60?,(31H)清0,(30H)加1,(30H)=24?,(30H)清0,恢復現(xiàn)場,返回,入口,a,
18、a,N,N,N,N,Y,Y,Y,Y,圖 中斷服務程序流程圖, 源程序如下: ORG 0000H AJMP MAIN ; 上電,轉向主程序 ORG 001BH ;T1的中斷服務程序入口地址 AJMP SERVE ;轉向中斷服務程序,ORG 2000H ;主程序 MAIN: MOV SP,#60H ;設堆棧指針 MOV TMOD,#10H ;設置T1工作于模式1 MOV 20H,#0AH ;設循環(huán)次數(shù) CLR A MOV 30H,A ;時單元清0 MOV 31H,A ;分單元清0 MOV 32H,A ;秒單元清0,SETB ET1 ;T1開中斷 SETB EA ;CPU開中斷 MOV TL1,#0B0H ;裝計數(shù)值低8位 MOV TH1,#3CH ;裝計數(shù)值高8位 SETB TR1 ;啟動定時 SJMP $ ;等待中斷(可反復調(diào)用顯示子程序),SERVE: PUSH PSW ;保護現(xiàn)場 PUSH ACC MOV TL1,#0B0H ;重新賦初值 MOV TH1,#3CH DJNZ 20H,RETUNT ;1s未到,返回 MOV 20H,#0AH ;重置中斷次數(shù),MOV A,#01H ADD A,32H ;“秒位”加1 DA A ;轉換為BCD碼 MOV 32H,A CJNE A,#60H,RETUNT ;未滿60s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年中節(jié)能(新疆)太陽能科技有限公司招聘備考題庫及完整答案詳解1套
- 2026年南京大學事業(yè)編制崗位公開招聘15人備考題庫有答案詳解
- 2026年三亞旅游文化發(fā)展集團有限公司招聘備考題庫及1套完整答案詳解
- 2026年九江市融資擔保集團有限公司招聘備考題庫及完整答案詳解1套
- 銀行落實內(nèi)控制度
- 招投標政府采購內(nèi)控制度
- 工會禁毒內(nèi)控制度
- 醫(yī)?;鹗褂脙?nèi)控制度
- 義務教育內(nèi)控制度
- 監(jiān)所財務內(nèi)控制度
- 數(shù)字經(jīng)濟前沿八講
- 膿毒癥免疫功能紊亂
- 廣東江南理工高級技工學校
- 斜弱視眼科學
- 電商平臺需求規(guī)格說明書-通用版本
- 眼底熒光造影護理配合
- 2023年電大會計本人力資源管理復習資料
- GB/T 25146-2010工業(yè)設備化學清洗質(zhì)量驗收規(guī)范
- 相關控規(guī)-申花單元
- 90萬噸煤礦人員配備
- 酒精度檢測原始記錄
評論
0/150
提交評論