版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
定時器及應用定時/計數器的基本結構如圖所示:
例1、設單片機晶振頻率為6MHZ,使用定時器1以方式0產生周期為500us的等寬正方波連續脈沖,并由P1.0輸出,以查詢方式完成。解:1、計算計數初值要產生500us的等寬正方波脈沖,只需在P1.0端以250us為周期交替輸出高低電平即可實現,為此定時時間為250us。使用6MHZ晶振,則一個機器周期為2us,方式0為13位計數結構,設初值為X,則:(213-X)*12*1/6=250得:X=8067,二進制數表示為:1111110000011,十六進制表示為,高8位為:0FCH,低5位為:03H。其中高8位裝入TH1,即TH1=0FCH,低5位裝入TL1,即TL1=03H。2、TMOD寄存器初始化為把定時器/計數器設定為方式0,則M1M0=00;為實現定時功能,應使C/T=0;為實現定時器/計數器1的運行控制,則GATE=0。定時器/計數器T0不用,有關位設定為0,因此TMOD寄存器初始化為00H。3、由定時器控制器TCON中的TR1位控制定時的啟動和停止,TR1=1啟動
,TR1=0停止。4、使用查詢就禁止中斷IE=00H解:1、計算計數初值6MHZ晶振下,一個機器周期為2us,以TH0作重裝載的預置寄存器,TL0作8位計數器,則:(28-X)*12*1/6=100,得X=206=11001110B=0CEH把0CEH分別裝入TH0和TL0中。2、TMOD初始化為把定時器/計數器設定為方式2,則M1M0=10;為實現定時功能,應使C/T=0;為實現定時器/計數器0的運行控制,則GATE=0。定時器/計數器T1不用,有關位設定為0,因此TMOD寄存器初始化為00000010,即:02H3、由定時器控制器TCON中的TR0位控制定時的啟動和停止,TR0=1啟動
,TR0=0停止。4、使用中斷方式,應開中斷
EA位和ET0位置“1”5、程序設計(查詢方式)
MOVTMOD,#02H;設置T0為工作方式2
MOVTH0,#0CEH;設置計數初值
MOVTL0,#0CEHMOVIE,#00H;禁止中斷
SETBTR0;啟動定時
LOOP:JBCTF0,LOOP1;查詢計數溢出
AJMPLOOPLOOP1:CPLP1.0;輸出取反
AJMPLOOP;重復循環5、程序設計(中斷方式)
MOVTMOD,#02H;設置T0為工作方式2
MOVTH0,#0CEH;設置計數初值
MOVTL0,#0CEHSETBEA;開中斷
SETBET0;定時器1允許中斷LOOP:SETBTR0;啟動定時HERE:SJMP$;等待中斷
AJMPLOOP中斷服務程序:
CPLP1.0;輸出取反
RETI;中斷返回設某用戶系統中已使用了兩個外部中斷源,并置定時器T1工作在模式2,作串行口波特率發生器用。現要求再增加一個外部中斷源,并由P1.0輸出一個5KHz的方波。Fosc=12MHz。分析:目的:1)增加一個外部中斷;2)使P1.0輸出一個方波。條件:1)兩個外部中斷源已被使用2)定時器T1已用于串行口波特率發生器因此:可利用定時/計數器T0,使之工作在模式3,1)利用TL0擴展外部中斷源2)利用TH0作定時器使用,輸出方波
設置初值:1)TL0=0FFH2)因為輸出方波f=5kHz,故方波周期為200us,用TH0產生100us的定時,故TH0的初值X=256–(定時時間/機器周期)=256-(100us*晶振頻率/12)=156設定T0工作方式,TMOD,TCON.程序:
MOVTMOD,#27H;T0:模式3,計數方式;T1:模式2,定時方式
MOVTL0,#0FFH;一旦加1,馬上溢出,申請中斷
MOVTH0,#156;TH0初值
MOVTH1,#data;根據波特率要求而定
MOVTL1,#data
MOVTCON,#55H;01010101MOVIE,#9FH;開放全部中斷TL0INT:MOVTL0,#0FFH;TL0重新賦值…..
RETITH0INT:MOVTH0,#156;TH0重新賦值
CPLP1.0RETI
低頻信號發生器驅動程序設計一個控制程序,使89c51的P1口輸出8路低頻方波脈沖,頻率分別為100,50,25,20,10,5,2,1Hz。1.計算定時器初值使用T0,產生5ms的定時,若晶振選12MHz,則5ms相當于5000個機器周期,T0應工作在模式1,初值x為:x=65536-5000=60536,用十六進制表示,則x=0EC78H。(注意TH,TL分開賦值---因為T0/T1都是16位)2.設立8個計數器對應于P1.0~P1.7,設立8個計數器,初值分別為1,2,4,5,10,20,50,100,由T0的溢出中斷服務程序對它們減“1”計數,當減為0時恢復初值,并使相應的口引腳改變狀態,這樣就可以使P1口輸出所要求的方波。程序:ORG0START:AJMPMAINORG0BHPTP0:MOVTL0,#78H;T0中斷服務程序MOVTH0,#0ECHCPLP1.0DJNZ31H,PF01;對各路時間計數器進行減1計數MOV31H,#2;計數器減為1,恢復計數初值CPLP1.1;輸出取反PF01:DJNZ32H,PF02MOV32H,#4CPLP1.2PF02:DJNZ33H,PF03MOV33H,#5CPLP1.3PF03:DJNZ34H,PF04MOV34H,#10CPLP1.4PF04:DJNZ35H,PF05MOV35H,#20CPLP1.5PF05:DJNZ36H,PF06MOV36H,#50CPLP1.6PF06:DJNZ37H,PF07MOV37H,#100CPLP1.7PF07:RETIMAIN:MOVSP,#70H;主程序棧指針初始化MOV31H,#2;各路計數器置初值MOV32H,#4MOV33H,#5MOV34H,#10MOV35H,#20MOV36H,#50MOV37H,#100
MOVTMOD,#1;GATE=0,C/T=0,M1M0=01MOVTL0,#78H;初值——〉T0MOVTH0,#0ECHMOVIE,#82H;允許T0中斷SETBTR0;允許T0計數HERE:SJMPHERE;以踏步表示CPU可以處理其他工作例利用定時器T1的模式2對外部信號計數,要求每計滿100次對P1.0端取反。解:(1)計算計數初值X100=28-XX=256-100=156=9CH
(2)模式字
TMOD=0110****B=60H
(3)程序清單;用中斷方式
ORG0000HMAIN:MOVTMOD,#60HMOVTL1,#156MOVTH1,#156MOVIE,#88HSETBTR1SJMP$
ORG001BHCPLP1.0RETI例脈沖參數測量——GATE功能的使用。脈沖高電平(計數)長度值存于21H、20H中,脈沖低電平長度存于23H、22H中。電路連接如下圖所示。解:復習GATE的用法:
GATE=0時,TRi=1,即可啟動Ti定時/計數
GATE=1時,TRi=1,且=1,才啟動定時/計數。89C51P3.2P3.31被測信號21a3T0計數T1計數
ORG0000HLJMPMAINORG2000HMAIN:MOVTMOD,#99H;T0、T1均工作在定時,;模式1,GATE=1MOVA,#00H;T0、T1賦計數初值00H,
;定時最長時間為0000~65536MOVTL0,A
MOVTH0,AMOVTL1,AMOVTH1,A運行中讀定時器/計數器80C51可以隨時讀寫計數寄存器TLx和THx(x為0或1),用于實時顯示計數值等。辦法是:先讀THx,后讀TLx,再重讀THx,若兩次讀得的THx值是一樣的,則可以確定讀入的數據是正確的;若兩次讀得的THx值不一致,則必須重讀。例.飛讀
RDTIME: MOV A,TH0 ;讀TH0 MOV R0,TL0 ;讀TL0并存入R0 CJNE A,TH0,RDTIME ;再讀TH0,與上次 ;讀入的TH0比較,若不等,重讀
MOV R1,A ;存TH0在R1中
RET實時時鐘的設計(1)實時時鐘實現的基本思想如何獲得1秒的定時,可把定時時間定為100ms,采用中斷方式進行溢出次數的累計,計滿10次,即得到秒計時。片內RAM中規定3個單元作為秒、分、時單元,具體安排如下:
32H:“秒”單元;31H:“分”單元;30H:“時”單元從秒到分,從分到時是通過軟件累加并進行比較的方法來實現的。時鐘就是以秒、分、時為單位進行計時。用定時器與中斷的聯合應用。①假定使用定時器T0,以工作模式1進行100ms的定時。如fosc=6MHz,則計數初值X為:∵(216-X)×12/(6×106)=100×10-3s∴X=15536=3CB0H因此:
(TL0)=0B0H(TH0)=3CH②采用定時方式進行溢出次數的累計,計滿10次即得到秒計時。③從秒到分和從分到時的計時是通過累計和數值比較實現的。④時鐘顯示即及顯示緩沖區部分在這里略,可自行設計。
①主程序(MAIN)的主要功能是進行定時器T1的初始化編程并啟動T1,然后通過反復調用顯示子程序,等待100ms定時中斷的到來。其流程如圖所示。(2)程序流程及程序清單設T1為模式1設中斷次數清計時單元開中斷啟動T1調用顯示子程序等待定時中斷②中斷服務程序(PITO)的主要功能 進行計時操作。程序開始先判斷計數溢出是否滿了10次,不滿表明還沒達到最小計時單位—秒,中斷返回;如滿10次則表示已達到最小計時單位—秒,,程序繼續向下運行,進行計時操作。要求滿1秒則“秒位”32H單元內容加1,滿60s則“分位”31H單元內容加1,滿60min則“時位”30H單元內容加1,滿24h則30H,31H,332H單元內容全部清0。中斷服務程序流程如下圖所示。保護現場賦計數初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢復現場返回入口NNNNYYYY圖
中斷服務程序流程圖③源程序如下:
ORG0000HAJMPMAIN;上電,轉向主程序
ORG001BH;T1的中斷服務程序入口地址
AJMPSERVE;轉向中斷服務程序
ORG2000H;主程序MAIN:MOVSP,#60H;設堆棧指針
MOVTMOD,#10H;設置T1工作于模式1MOV20H,#0AH;設循環次數
CLRAMOV30H,A;時單元清0
MOV31H,A;分單元清0
MOV32H,A;秒單元清0
SETBET1;T1開中斷
SETBEA;CPU開中斷
MOVTL1,#0B0H;裝計數值低8位
MOVTH1,#3CH;裝計數值高8位
SETBTR1;啟動定時
SJMP$;等待中斷(可反復調用顯示子程序)
SERVE:PUSHPSW;保護現場
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB44-T+2864-2026定制式(3D 打印)放射治療定位裝置臨床應用規范
- DB34T5475.1-2026衛生健康 全員人口庫 第1部分:數據采集
- 家庭裝修施工質量保證協議二篇
- 弱電工程驗收標準實施細則
- 2026年江蘇徐州市鼓樓區、云龍區、泉山區、徐州經濟技術開發區中考二模地理試卷
- 2026年中國坐綿羊數據監測報告
- 5G短期承攬合同
- 人工智能境內廣告發布協議
- 水利初步施工合同
- 零售非獨家品牌推廣協議
- 北京經濟技術開發區經海第二幼兒園招聘筆試備考試題及答案詳解
- 2026年領導干部網絡學法用法法律知識競賽考試題庫及答案
- 2026天津石油職業技術學院招聘20人筆試參考題庫及答案詳解
- 2026年廣東省學科名師工作室主持人面試試題(含答案)
- 2026湖南岳陽平江縣潤恒自來水有限公司招聘9人筆試題庫【能力提升】附答案詳解
- T∕CCEAS008-2026 建設工程造價咨詢成果文件質量標準
- 2026年貴州省事業單位聯考真題及答案
- 內瘺使用壽命的延長策略
- 2026年鋼化真空玻璃創新報告及未來五至十年行業發展趨勢報告
- 短劇宣發推廣合作合同協議書模板
- 軟件開發流程標準SOP文檔模板
評論
0/150
提交評論