版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第6章MCS-51單片機
的定時器/計數(shù)器2/4/202316.1計數(shù)/定時器的結(jié)構(gòu)CPU計數(shù)器/定時器T1計數(shù)器/定時器T0TL0TH07070168CH8AH8位的加1計數(shù)器TL1TH170708DH8B16TMOD(89H)方式寄存器機器周期定時模式P3.5P3.4計數(shù)模式只能字節(jié)尋址TCON(88H)控制寄存器TMOD(89H)GATEC/TM0M0GATEC/TM1M0D7D6D5D4D3D2D1D0TMOD:計數(shù)器/定時器方式寄存器定時/計數(shù)器0定時/計數(shù)器11:計數(shù)模式分別對P3.5P3.4的脈沖計數(shù)脈沖頻率<晶振頻率0:定時模式對機器周期脈沖計數(shù)TCON88hTF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0計數(shù)器/定時器控制寄存器TR1=1計數(shù)/定時器1開始計數(shù)TR1=0計數(shù)/定時器1停止計數(shù)TR0=1計數(shù)/定時器0開始計數(shù)TR0=0計數(shù)/定時器0停止計數(shù)計數(shù)/定時器0的工作原理16位計數(shù)器TL0TH0TR0工作模式選擇定時計數(shù)TF0啟動與停止控制振蕩器12P3.4晶振頻率fosc=12MHz123456789101112計數(shù)頻率fc=1MHz1s機器周期機器周期&GATE1T0啟動方式兩種:軟件(GATE0=0):
TR0=1硬件(GATE0=1,TR0=1):門控位0定時計數(shù)00000123456555300000123455556300000TMOD(89H)GATEC/TM0M0GATEC/TM1M0D7D6D5D4D3D2D1D0TMOD:計數(shù)器/定時器方式寄存器定時/計數(shù)器0定時/計數(shù)器1M1M0工作方式功能說明00方式013位定時器/計數(shù)器01方式116位定時器/計數(shù)器10方式28位自動重裝定時器/計數(shù)器11方式3
T0分成兩個獨立的8位定時器/計數(shù)器;T1在該方式下停止計數(shù),在其他方式下可工作,但不能產(chǎn)生溢出中斷請求標(biāo)志6.3.1方式0圖6-4定時器/計數(shù)器工作于方式0時的邏輯結(jié)構(gòu)圖選擇開關(guān)接通的計數(shù)脈沖是機器周期脈沖,T0對內(nèi)部機器周期計數(shù)。定時時間由如下公式確定。定時時間
=
計數(shù)值
×
機器周期
=
(213?計數(shù)初值)
×
機器周期其中,機器周期
=
時鐘周期
×
12213是T0在方式0時的最大計數(shù)值。1.當(dāng)=
0時,為定時模式在定時應(yīng)用中,只要根據(jù)需要定時的時間值計算出計數(shù)初值,送入TH0、TL0中,便可以實現(xiàn)精確定時,計數(shù)初值按如下公式計算。計數(shù)初值
=
213
?
定時時間/機器周期如果晶振頻率為12MHz,則時鐘周期為(1/12)s,機器周期為1s,當(dāng)初值為0時,方式0的最長定時時間為8.192ms。解:根據(jù)公式,計算如下。計數(shù)初值
=
213
?
定時時間/機器周期
=
213
?
2ms/1s
=
6192
=
1100000110000B
即TH0應(yīng)裝入計數(shù)初值的高8位為C1H,TL0應(yīng)裝入計數(shù)初值的低5位為10H?!纠?-1】若單片機使用的晶振頻率為12MHz。請計算采用T0方式0定時2ms所需的定時器初值。MOVTH0,#0C1HMOVTL0,#10H6.3.2方式1圖6-5定時器/計數(shù)器工作于方式1時的邏輯結(jié)構(gòu)圖方式1的計數(shù)位數(shù)是16位,由TL0作為低8位,TH0作為高8位,組成了16位加1計數(shù)器。計數(shù)模值為216。計數(shù)初值的計算公式如下。計數(shù)初值
=
216
?
定時時間/機器周期如果晶振頻率為12MHz,則時鐘周期為1/12s,機器周期為1s,方式1的最長定時時間為65.536ms。解:根據(jù)公式,計算如下。計數(shù)初值
=
216
?
定時時間/機器周期
=65536
?
2ms/1s
=
63536
=
F830H
即TH0應(yīng)裝入計數(shù)初值的高8位為F8H,TL0應(yīng)裝入計數(shù)初值的低8位為30H。【例6-2】若單片機使用的晶振頻率為12MHz。請計算采用T0方式1定時2ms所需的定時器初值。MOVTH0,#0F8HMOVTL0,#30H上述兩種方式,應(yīng)先裝入計數(shù)初始值,并設(shè)定工作方式,然后啟動計數(shù)/定時器,當(dāng)計數(shù)器計滿溢出時,回到全0,自動向CPU發(fā)出溢出中斷請求,計數(shù)器從0開始計數(shù)。注意:若需要定時器/計數(shù)器工作,從需要的初始值進行計數(shù),必須重裝初值。
ORG0000HLJMPMAINORG000BHCPLP1.0MOVTH0,#7fHMOVTL0,#7fH ;重裝計數(shù)初值
RETIMAIN:MOVTMOD,#01H ;置T0為定時方式1MOVTH0,#7fHMOVTL0,#7fH;送入計數(shù)初值
SETBEA ;開放總中斷
SETBET0 ;允許T1中斷
SETBTR0 ;啟動T1工作
SJMP$END6.3.3方式2圖6-6定時器/計數(shù)器工作于方式2時的邏輯結(jié)構(gòu)圖1初值寄存器定時器初始化時,必須將計數(shù)初值同時送入TL0和TH0 計數(shù)初值
=
28
?
定時時間/機器周期當(dāng)TL0計滿溢出時,由硬件電路使TF0置1,向CPU發(fā)出中斷請求,并將TH0中的計數(shù)初值自動送入TL0,TL0從初值重新進行加1計數(shù)。不需軟件重裝初值,適用于較精確的脈沖信號發(fā)生器。如果晶振頻率為12MHz,則時鐘周期為(1/12)s,機器周期為1s,方式2的最長定時時間為0.256ms。6.3.4方式3定時器T1不能工作在方式3,一旦設(shè)定T1為方式3,則T1自動停止工作。
圖6-7定時器/計數(shù)器工作方式3邏輯結(jié)構(gòu)圖1方式3:T0分為兩個獨立的8位計數(shù)器TL0和TH0。TL0使用T0的所有控制位:
GATE、TR0、TF0和。當(dāng)TL0計數(shù)溢出時,由硬件電路使TF0置1,向CPU發(fā)出中斷請求。
TH0固定為定時方式使用T1的控制位:TR1、TF16.4定時器/計數(shù)器應(yīng)用舉例【例6-3】
利用T0擴展一個外部中斷源的初始化程序。解:將T0設(shè)置為計數(shù)器方式從P3.4引腳輸入下降沿信號,向CPU發(fā)出中斷請求按方式0工作軟件啟動計數(shù)初值6.4.1定時器/計數(shù)器用于外部中斷擴展
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0INTT0INT:
CPLP1.0
MOV TL0,#1FH ;送入計數(shù)初值
MOV TH0,#0FFH
RETIMAIN:MOV
TMOD,#04H ;置T0為計數(shù)方式0
MOV
TL0,#1FH ;送入計數(shù)初值
MOV
TH0,#0FFH
SETB
EA ;開放總中斷
SETB
ET0 ;允許T1中斷
SETB
TR0 ;啟動T1工作
SJMP$
END初始化程序解:將T0設(shè)置為計數(shù)器方式從P3.4引腳輸入下降沿信號,向CPU發(fā)出中斷請求按方式1工作軟件啟動計數(shù)初值【例6-3】
利用T0擴展一個外部中斷源的初始化程序。
ORG0000H
LJMPMAIN
ORG000BH
LJMPT0INTT0INT:
CPLP1.0
MOV TL0,#0FFH ;送入計數(shù)初值
MOV TH0,#0FFH
RETIMAIN:MOV
TMOD,#05H ;置T0為計數(shù)方式0
MOV
TL0,#0FFH ;送入計數(shù)初值
MOV
TH0,#0FFH
SETB
EA ;開放總中斷
SETB
ET0 ;允許T1中斷
SETB
TR0 ;啟動T1工作
SJMP$
END解:將T0設(shè)置為計數(shù)器方式從P3.4引腳輸入下降沿信號,向CPU發(fā)出中斷請求按方式2工作軟件啟動計數(shù)初值【例6-3】
利用T0擴展一個外部中斷源的初始化程序。
ORG0000H
LJMPMAIN
ORG000BH
CPLP1.0
RETIMAIN:MOV
TMOD,#06H ;置T0為計數(shù)方式0
MOV
TL0,#0FFH ;送入計數(shù)初值
MOV
TH0,#0FFH
SETB
EA ;開放總中斷
SETB
ET0 ;允許T1中斷
SETB
TR0 ;啟動T1工作
SJMP$
END解:將T0設(shè)置為計數(shù)器方式從P3.4引腳輸入下降沿信號,向CPU發(fā)出中斷請求按方式3工作軟件啟動計數(shù)初值【例6-3】
利用T0擴展一個外部中斷源的初始化程序。
ORG0000H
LJMPMAIN
ORG000BH
CPLP1.0
MOV
TL0,#
0FFH ;重裝計數(shù)初值
RETIMAIN:MOV
TMOD,#07H ;置T0為計數(shù)方式0
MOV
TL0,#0FFH ;送入計數(shù)初值
SETB
EA ;開放總中斷
SETB
ET0 ;允許T1中斷
SETB
TR0 ;啟動T1工作
SJMP$
END結(jié)論:P3.4引腳每輸入一個下降沿信號,都將TF0置1,向CPU發(fā)出一次中斷請求。相當(dāng)于擴展了一個邊沿觸發(fā)的外部中斷源,中斷入口地址為000BH。6.4.2定時器/計數(shù)器在秒表項目中的應(yīng)用1.時基的設(shè)計2.實時時鐘的實現(xiàn)3.定時器初值的計算4.定時器的初始化5.時鐘程序分析1.時基的設(shè)計利用單片機的內(nèi)部定時器T0產(chǎn)生中斷來實現(xiàn)計時。設(shè)定定時器T0工作在定時工作方式1,定時時間為50ms(0.05s),T0啟動后,定時時間到,便會產(chǎn)生溢出中斷請求,在其中斷服務(wù)程序中,通過指令重裝定時初值,于是,T0便會每隔50ms產(chǎn)生一次中斷,周而復(fù)始,獲得一個0.05s的時基信號。由于應(yīng)用項目選用的單片機外接晶振頻率為12MHz,所以時鐘周期為1/12s,一個機器周期等于12個時鐘周期,機器周期為1s。2.秒表項目的實現(xiàn)計數(shù)器0定時50ms溢出機器周期脈沖計數(shù)器1計數(shù)10次溢出中斷中斷1SP1.0S設(shè)置定時器T0工作于定時方式1(16位定時器/計數(shù)器),定時時間為50ms(0.05s)。因此,T0的定時器初值即計數(shù)初值為:計數(shù)初值
=
216
?
定時時間/機器周期
=
216
?
50ms/1s
=
15536
=
3CB0H3.定時器初值的計算定時器0初值的計算定時器1初值的計算設(shè)置定時器T0工作于計數(shù)方式1,計數(shù)初值
=
216
?
10
=65526
=
FFF6H或MOVTH0,#(65536-50000)/256MOVTL0,#(65536-50000)MOD256MOVTH0,#3CHMOVTL0,#0B0H或MOVTH1,#(65536-10)/256MOVTL1,#(65536-10)MOD256MOVTH1,#0FFHMOVTL1,#0F6H(1)根據(jù)設(shè)定的定時器工作方式,給定時器/計數(shù)器方式寄存器TMOD送入一個相應(yīng)的方式控制字,以設(shè)定定時器/計數(shù)器的工作方式。(2)將計算好的定時器初值(計數(shù)初值)送入定時器,以確定需要的定時時間或計數(shù)初值。4.定時器的初始化對定時器T0、定時器T1進行初始化的程序如下。MOVTMOD,#59H ;定時器0定時方式1,定時器1計數(shù)方式MOVTH0,#3CH ;置T0初值MOVTL0,#0B0HMOVTH1,#0FFH ;置T1初值MOVTL1,#0F6HMOVIE,#8AH ;允許中斷SETBIT1SETBTR0 ;啟動定時器T0SETBTR1 ;啟動定時器T0
定時器啟動后,在初值基礎(chǔ)上不斷進行加1計數(shù),直到計滿溢出時,向CPU發(fā)出溢出中斷請求。這里定時時間為50ms,在P1.0引腳輸出周期為100ms的方波,10個脈沖(1秒)后,計滿溢出。
ORG0000HLJMPMAIN ;轉(zhuǎn)主程序
ORG000BHLJMPBREAK0;轉(zhuǎn)定時器T0中斷
ORG001BHLJMPCLOCK;轉(zhuǎn)定時器T1中斷
MAIN:MOVTMOD,#59H;定時器0定時方式1,定時器1計數(shù)方式
MOVTH0,#3CH ;置T0初值
MOVTL0,#0B0HMOVTH1,#0FFH ;置T1初值
MOVTL1,#0F6HMOVIE,#8AH ;允許中斷
SETBTR0 ;啟動定時器T0SETBTR1 ;啟動定時器T15.秒表程序分析
SECONDEQU30HORG0000HLJMPMAIN ;轉(zhuǎn)主程序
ORG000BHLJMPBREAK0;轉(zhuǎn)定時器T0中斷
ORG001BHLJMPCLOCK;轉(zhuǎn)定時器T1中斷 BREAK0:CPLP1.0MOVTH0,#3CH ;置T0初值
MOVTL0,#0B0HRETICLOCK:CLREAPUSHACCPUSHPSWSETBEAINCSECONDMOVTH1,#0FFH ;置T1初值
MOVTL1,#0F6HCLREAPOPPSWPOPACCSETBEARETIMAIN:MOVSECOND,#00HMOVTMOD,#59H;定時器0定時方式1,硬件啟動,定時器1計數(shù)方式
MOVTH0,#3CH ;置T0初值
MOVTL0,#0B0HMOVTH1,#0FFH ;置T1初值
MOVTL1,#0F6HMOVIE,#8AH ;允許中斷
SETBTR0 ;啟動定時器T0SETBTR1 ;啟動定時器T1CLRP1.0LOOP:MOVA,SECONDACALLBINBCDMOVR0,AANLA,#0FHMOVDPTR,#TAB;使用DPTR指向表首地址
MOVCA,@A+DPTR;查表
MOVP2,AMOVP0,#0FEHACALLDELAYMOVP0,#0FFH
MOVA,R0SWAPAANLA,#0FHMOVDPTR,#TAB;使用DPTR指向表首地址
MOVCA,@A+DPTR;查表
MOVP2,AMOVP0,#0FDHACALLDELAYMOVP0,#0FFH
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《職業(yè)農(nóng)民培育》課件
- 2024年鄉(xiāng)鎮(zhèn)組織員個人年終工作總結(jié)
- 《旅行社的戰(zhàn)略管理》課件
- 協(xié)力共贏:團隊力量
- 酒店前廳保安執(zhí)勤要領(lǐng)
- 保險行業(yè)銷售技巧培訓(xùn)總結(jié)
- 2001年天津高考語文真題及答案(圖片版)
- 媒體行業(yè)客服工作感想
- 景觀設(shè)計師年終總結(jié)7篇
- 2023年項目管理人員安全培訓(xùn)考試題(能力提升)
- 老舊小區(qū)改造工程安全管理體系管理制度及措施
- 2024年山西省晉中市公開招聘警務(wù)輔助人員(輔警)筆試摸底測試(3)卷含答案
- 2024夏令營項目家長溝通與反饋服務(wù)協(xié)議3篇
- 文史哲與藝術(shù)中的數(shù)學(xué)知到智慧樹章節(jié)測試課后答案2024年秋吉林師范大學(xué)
- 2024年秋季新人教版七年級上冊數(shù)學(xué)全冊教案
- 13485質(zhì)量管理培訓(xùn)
- 9《復(fù)活(節(jié)選)》練習(xí) (含答案)統(tǒng)編版高中語文選擇性必修上冊
- 工程主合同補充協(xié)議書范本(2篇)
- 智慧樓宇I(lǐng)BMS整體解決方案
- 《客房服務(wù)與管理》課程標(biāo)準(zhǔn)課程內(nèi)容與要求
- GB 26920-2024商用制冷器具能效限定值及能效等級
評論
0/150
提交評論