




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章MCS-51單片機的
定時/計數(shù)器第6章內容:6.1定時/計數(shù)器的結構6.2有關的特殊功能寄存器6.3定時器的4種工作模式6.4定時/計數(shù)器的應用舉例226.1定時/計數(shù)器的結構單片機通常具有2~4個定時/計數(shù)器內部電路為二進制計數(shù)器從單片機引腳輸入時鐘——計數(shù)器,用于累計外部輸入的脈沖個數(shù),如果輸入時鐘周期固定,也可以用于定時從單片機內部振蕩器輸入時鐘——定時器,用于精確地確定某一段時間間隔336.1定時/計數(shù)器的結構定時器/計數(shù)器的基本概念CPOVF0000
000001010101000100100011010001010110011110001001101010111100110111101111內部時鐘外部時鐘44MCS-51單片機有2個16位的可編程定時/計數(shù)器定時器0(T0)定時器1(T1)它們既可用做定時器、又可用做計數(shù)器:用于定時控制、延時、對外部事件計數(shù)和檢測等場合。6.1定時/計數(shù)器的結構55微處理器TH1TL17070P3.5(T1)或內部時鐘TH0TL07070P3.4(T0)或內部時鐘TMODTCON16位計數(shù)器T1T0661、定時工作方式定時工作方式是在計數(shù)器的輸入端輸入周期固定的脈沖信號,根據(jù)計數(shù)器中累計的脈沖個數(shù)可計算出所定時間。8051的定時器是對片內振蕩器輸出的時鐘信號經12分頻后的脈沖計數(shù),即每過一個機器周期使定時器(T0或T1)的數(shù)值加1,直至加滿溢出兩種工作方式772、計數(shù)工作方式對引腳T0(P3.4)和T1(P3.5)來的外部脈沖信號計數(shù)。當輸入脈沖信號產生由高電平至低電平的下降沿時,計數(shù)器的值加1。為了確保某個電平在變化之前至少被采樣一次,要求外部計數(shù)脈沖的高電平與低電平保持時間至少為一個完整的機器周期。兩種工作方式88 無論定時還是計數(shù)工作方式,T0或T1在對內部時鐘或對外部事件計數(shù)時都不占用CPU時間,只有定時器/計數(shù)器計滿產生溢出時才可能中斷CPU的當前操作。兩種工作方式996.2有關的特殊功能寄存器T0的計數(shù)寄存器——TH0、TL0;T1的計數(shù)寄存器——TH1、TL1;與T0、T1有關的SFR除TH0、TL0、TH1、TL1外,還有2個:TMOD工作模式寄存器:定義T0、T1的工作模式及有關功能TCON控制寄存器:存放T0、T1的啟、停、溢出標志和中斷標志1010TMOD—工作模式寄存器(89H)1111M1、M0控制的4種模式M1M0模式說明00013位計數(shù)器
01116位計數(shù)器
102自動裝入8位計數(shù)器
113T0:分成兩個8位計數(shù)器T1:置方式3時停止工作
1212例:設T1為定時方式,按模式2工作
設T0為計數(shù)方式,按模式1工作
請確定模式寄存器TMOD的值:定義模式寄存器TMOD的指令為:
MOVTMOD,#25HTMOD不能位尋址,只能用字節(jié)傳送指令001001011313TCON—控制寄存器(88H)T1溢出標志位當T1計滿溢出時,硬件自動使TF1置1,并且申請中斷。當CPU進入中斷服務程序后,TF1由硬件自動清0;在查詢方式下用軟件清0T1運行控制位當GATE=0時,TR1置1即啟動定時器T1當GATE=1,且INT1為高電平時,TR1置1啟動定時器T1由軟件清0關閉定時器T1146.3定時器的四種工作模式定時器/計數(shù)器有4種工作模式,由TMOD控制。工作模式的特點和用法如下:模式0當M1M0=00時,為模式0。此時,16位計數(shù)器只用了13位以T1為例,由TH1的8位和TL1的低5位組成一個13位計數(shù)器,TL1高三位未用8位×××TH1TL15位1515T1模式0邏輯電路結構計數(shù)脈沖輸入定時脈沖輸入定時計數(shù)計數(shù)器的輸入信號受到3個信號的控制計數(shù)器啟動/停止選通控制外部中斷信號1616GATE=0:或門輸出1,與門開放TR1=0,斷開,無計數(shù)信號輸入,停止計數(shù)TR1=1,閉合,有計數(shù)信號輸入,啟動計數(shù)GATE=1:必須INT1=1,與門才開,TR1才起作用。GATE的作用是控制是否讓INT1參與控制。加1計數(shù)計滿溢出置位TF11717
定時時間t的計算定時時間t:從初值開始計數(shù)到計滿溢出的時間。計數(shù)初值x:當工作模式和定時時間確定后,由軟件預置。對于模式0,計數(shù)初值為x,時鐘頻率為fosc,則定時時間t為:
t=(213-x)×12/fosc(us)
1818模式1模式1與模式0工作原理完全相同,唯一的區(qū)別是模式1是把T1設置成16位計數(shù)器,由TH1的8位和TL1的8位組成一個16位計數(shù)器若工作于模式1,計數(shù)初值為x,時鐘頻率為fosc,則定時時間t為:t=(216-x)×12/fosc(us)1919模式2可自動恢復計數(shù)初值的8位加1計數(shù)器計數(shù)初值寄存器(由軟件預置)計滿溢出置位TF0每當TL0加滿溢出,則硬件自動從TH0中取出計數(shù)初值裝入TL0若工作于模式2,計數(shù)初值為x,時鐘頻率為fosc,則定時時間t為:
t=(28-x)×12/fosc(us)2020定時/計數(shù)器T0工作模式3TL0就象T0原來的模式0或1,只是長度為8位,其它完全一樣。模式3使得單片機增加了一個獨立的計數(shù)器把T0分成由TH0和TL0兩個獨立的8位計數(shù)器但TH0不同,它借用了T1的TF1和TR1。TH0只能作為定時器使用(固定內部計數(shù)信號輸入),此時TH0控制了T1的中斷這時T1只能工作在方式0~2,且不能用中斷方式21216.4定時/計數(shù)器的應用舉例使用定時器/計數(shù)器前都要對其初始化,主要是設置4個SFR:TMOD-設置工作方式(定時或計數(shù))、 工作模式等TH1TL1(TH0TL0)-設置計數(shù)初值
TCON-啟動工作若開放定時器的中斷,還要設置:IE、IP-設置定時器中斷的開放/禁止、優(yōu)先級2222定時/計數(shù)器初值的計算t=(2n-x)×12/fosc(us)t-定時時間x-計數(shù)初值fosc-時鐘頻率模式0:213=8192模式1:216=65536模式2:28=25623236.4.1初始化程序舉例例:設時鐘振蕩頻率fosc=6MHz。T1作定時器,以模式1工作,定時時間為10ms;T0作計數(shù)器,以模式2工作,收到一個外部脈沖就溢出中斷。故TMOD=16H24246.4.1初始化程序舉例確定初值x:T1:定時,模式1,定時10ms,fosc=6MHz t=10ms=(216-x)×12/fosc =(216-x)×2(us)
x=60536=EC78H(TH1=0ECH,TL1=78H)T0:計數(shù),模式2,計數(shù)1次
x+1=28
x=28-1=255=FFH TH0=TL0=0FFH25256.4.1初始化程序舉例初始化程序如下:
MOVTMOD,#16HMOVTL1,#78HMOVTH1,#0ECHMOVTL0,#0FFHMOVTH0,#0FFHSETBTR1 ;啟動T1SETBTR0 ;啟動T0MOVIE,#82H;CPU開中斷,允許T0中斷2626p.99【例6-1】若MSC-51振蕩頻率為12MHz,要求定時100μs,試計算不同模式時的計數(shù)初值。以模式2(8位)為例:
t=(28-x)×12/fosc 100μs=(256-x)×12/12(μs)
x=(256-100)=156=9CH思考:振蕩頻率為6MHz,x=?27276.4.2模式0的應用【例6-2】:選擇T0工作于模式0,用于定時1ms,晶振fosc=6MHz,定時初值x為多少?最大定時時間T為多少?并編程實現(xiàn)1ms定時功能。解:T0設為定時模式0,TMOD寄存器中
GATE=0,C/T=0,M1M0=00;T1沒有用到,相關4位可以設置為0000;故TMOD=00H2828【例6-2】(1)計算T0定時1ms的初值x t=(213-x)×12/fosc
1000us=(213-x)×2us X=(213-500)=1111000001100BT0的低5位(TL0):00001100B=0CHT0的高8位(TH0):11110000=F0H2929【例6-2】(2)最大定時時間t t=(213-x)×12/fosc
當13位計數(shù)器全為0
(TH0)=00H
(TL0)=00H t=213×2μs=16.384ms3030(3)中斷方式下定時1ms的初始化程序
ORG 0000HRESET:AJMP MAIN ;轉主程序
ORG 000BH ;T0中斷程序入口
AJMP T0ISR ;轉中斷程序
ORG 0100HMAIN:MOV SP,#60H ;設堆棧指針
MOV TMOD,#00H MOV TL0,#0CH MOV TH0,#0F0H SETB TR0 ;啟動定時器T0 SETB ET0 ;T0開中斷3131(3)中斷方式下定時1ms的初始化程序
SETB EA ;CPU開中斷HERE:SJMP HERET0ISR:...... ;中斷服務程序32326.4.3模式1的應用【例6-3】設?osc=12MHz,T0工作在模式1,編程利用T0在P1.0引腳上輸出周期為2秒的方波。分析:周期為2s的方波,應輸出1s高電平和1s低電平,即T0工作在定時方式,定時時間1s,每當定時時間到,使P1.0的輸出邏輯取反。解:若T0工作在模式1下,最大定時時間Tmax為:
Tmax=216μs=65536μs=65.536ms因此必須采用定時和軟件計數(shù)相結合的方法:設定時時間為50ms,在主程序中設置一個初值為20的軟件計數(shù)器(1s=20×50ms)3333【例6-3】當50ms定時到即中斷請求,進入中斷服務程序,在中斷服務程序中,使軟件計數(shù)器減1,然后判斷是否為零。若為零,定時1s時間到,恢復軟件計數(shù)器初值并改變P1.0引腳電平,然后返回主程序;若不為零,定時1s未到,返回主程序,繼續(xù)定時。重復上述過程,便可在P1.0引腳上得到周期為2秒的方波3434【例6-3】定時50ms,T0的初始值X:
X=65536–50000=3CB0H(TH0TL0) TMOD=01H實驗程序如下:
ORG 0000H SJMP MAIN ORG 000BH SJMP BRT03535【例6-3】MAIN:MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 ;啟動定時器T0 SETB ET0 ;T0開中斷
SETB EA ;CPU開中斷
MOV R0,#20 SJMP $3636【例6-3】BRT0:DJNZ R0,NEXT CPL P1.0 MOV R0,#20NEXT:MOV TH0,#3CH MOV TL0,#0B0H RETI END37376.4.4模式2的應用【例6-4】定時器T1模式2計數(shù),要求計滿100次P1.0取反分析:外部計數(shù)信號由T1(P3.5)輸入,每負跳變一次計數(shù)器加1,計滿100溢出中斷,中斷服務程序中將P1.0取反一次。模式2有自動重裝初值功能,初始化后不必再置初值。確定TMOD:計數(shù)方式、模式2;故TMOD=60H3838【例6-4】計算初值: x=28-100=156=9CH TH1=TL1=9CH程序如下:
ORG 0000H SJMP MAIN ORG 001BH SJMP BRT13939【例6-4】MAIN:MOV TMOD,#60H MOV TH1,#9CH MOV TL1,#9CH SETB TR1 ;啟動定時器T1 SETB ET1 ;T1開中斷
SETB EA ;CPU開中斷
SJMP $4040【例6-4】BRT1: CPL P1.0 ;不需要指令MOV TL1,#9CH RETI END4141【例6-5】由P3.4引腳(T0)輸入一低頻脈沖信號(其頻率<0.5KHz),要求P3.4每發(fā)生一次負跳變時,P1.0輸出一個500μs的同步負脈沖。已知fosc=6MHz。系統(tǒng)復位后設置P1.0初態(tài)為1,T0先設置為計數(shù)方式,計數(shù)為1(初值為FFH),T0加1就溢出,將TF0置1;程序查詢到TF0為1時,使P1.0輸出0,并改變T0為定時器方式,定時時間為500μs,T0定時時間到計滿溢出后,P1.0恢復1,T0恢復計數(shù)方式。P3.4P1.0500us4242全部采用模式2計算初值(模式2)T0計數(shù)次數(shù)1,則:X=0FFHT0定時500μs,fosc=6MHz,X=28-250=06H程序流程圖如下:4343開始設T0計數(shù)方式、模式2裝T0初值、啟動計數(shù)TF0=1?是則清0,停止計數(shù)yesno設T0定時方式、模式2,P1.0清0裝T0初值、啟動定時計數(shù)TF0=1?是則清0,P1.0置1noyes4444START:LOOP1:PTF01:MOVMOVMOVSETBJBCSJMPCLRMOVMOVMOVCLRSETBTMOD,#06HTH0,#0FFHTL0,#0FFHTR0TF0,PTF01LOOP1TR0TMOD,#02HTH0,#06HTL0,#06HP1.0TR0;設置T0為模式2,計數(shù)方式;裝入T0計數(shù)器初值;啟動T0計數(shù);若TF0=1,轉定時,并清零TF0;等計數(shù)時間到;停止計數(shù);設置T0為模式2,定時方式;T0定時500μs初值;P1.0清0;啟動定時500μs4545LOOP2:PTF02:JBCSJMPSETBCLRSJMPENDTF0,PTF02LOOP2P1.0TR0START;若TF0=1,定時到,清零TF0;等待定時時間到;定時到500μs,P1.0置1;停止定時計數(shù);轉,T0恢復外部計數(shù)46466.4.5綜合應用舉例【例6-7】使用8031單片機設計一個“航標燈”控制器。要求:“黑夜”,“航標燈”自動啟動,亮2s,滅2s,循環(huán)閃動“白天”,“航標燈”自動熄滅4747電路設計“黑夜”時光敏三極管截止,INT0為低電平“0”“白天”時光敏三極管導通,INT0為高電平“1”4848軟件設計思路方法一: 直接查詢引腳INT0(即端口P3.2)如果為低電平(黑夜)定時器2s定時使P1.7取反(航標燈閃動)如果為高電平(白天)停止定時,P1.7=0方法二: 利用INT0的低電平作為中斷請求,
通過中斷標志判斷白天黑夜(或采用中斷方式)4949外部中斷INT0工作方式INT0:電平觸發(fā),低優(yōu)先級?!昂谝埂睍r,INT0低電平發(fā)中斷請求。以中斷方式自動進入中斷服務程序,啟動定時器“白天”時,INT0高電平,用查詢方式結束中斷處理,停止定時器,返回主程序。5050定時器工作方式選擇設T1模式0,時鐘頻率6MHz,定時10ms(計數(shù)5000)
X=3192D=0110001111000B TH1=01100011B=63H TL1=×××11000B=18H采用定時和軟件計數(shù)相結合:10ms×200次=2s在定時器中斷服務程序中,軟件計數(shù)200(C8H)次后P1.7求反(燈閃爍一次)5151主程序流程圖開始設棧底、滅燈設INT0電平觸發(fā)、低優(yōu)先級、開中斷等待外部中斷(天黑)5252開始設T1定時、模式0、裝初值、啟動定時設T1高優(yōu)先級、開放T1中斷置軟件計數(shù)初值200等待T1中斷轉T1中斷服務程序查INT0=1(白天)?yesno關T1中斷、停止定時計數(shù)、燈滅返回INT0服務程序流程圖5353ORGAJMPORGAJMPORGAJMPORGMOVCLRCLRCLRSETBSETBSJMP0000HMAIN0003HINT0001BHT1INT0100HSP,#30HP1.7IT0PX0EAEX0HERE;復位入口;轉主程序;外部中斷0服務程序入口;轉外部中斷0服務程序;定時器T1服務程序入口;轉T1中斷服務程序;主程序入口地址;設堆棧指針;滅燈;選擇外部中斷0電平觸發(fā);選擇外部中斷0低優(yōu)先級;CPU中斷允許;外部中斷0中斷允許;等待外部中斷請求MAIN:HERE:5454INT0:HERE1:ORGMOVMOVMOVSETBSETBSETBMOVJNBCLRCLRCLRRETI0160HTMOD,#00HTL1,#18HTH1,#63HPT1TR1ET1R7,#0C8HP3.2,HERE1ET1TR1P1.7
;外中斷0處理程序入口;設T1為定時模式0;T1定時計數(shù)初值;T1為高優(yōu)先級;啟動定時器T1;T1中斷允許;設軟件計數(shù)初值200;為0(黑夜)時,等定時中斷;為1(白天)時,關T1中斷;關定時器T1;熄燈;返回外部中斷INT0服務程序5555ORGMOVMOVDJNZMOVCPLRETIEND
0200HTL1,#18HTH1,#63HR7,EXPORTR7,#OC8H P1.7 ;定時器T1中斷程序入口;重置T1計數(shù)初值;2s時間到,重設初值;輸出位求反,控制閃爍;中斷返回定時器T0服務程序T1INT:EXPORT:5656p.104【例6-8】某自動化生產線每隔5ms左右生產一件產品。如果兩件產品的間隔小于4ms或大于6ms均視為生產線出現(xiàn)異常,立即觸發(fā)報警。設計相關程序。方法:測量兩件產品的實際間隔若時間間隔小于4ms則觸發(fā)報警。若時間間隔小于6ms,則生產線正常,否則報警5757硬件設計:通過傳感器檢測到一個產品通過,使INT0為1(不做中斷信號,而是GATE=1)啟動定時器TR0=1檢測到下一個產品到來,使INT0為0,關定時器TR0=0瞬間再使INT0成高電平,開始下一個周期
5858設置定時器一個足夠長的定時初值(比如8ms),設T0工作在模式1,時鐘頻率為6MHz,一個機器周期為2us,定時初值X=T0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年固定總價合同的結算方式解析
- 2025年上海長寧區(qū)初三二模語文試題及答案
- 廣西桂金珠寶有限公司招聘10人筆試參考題庫附帶答案詳解
- 2025黑龍江省旅游投資集團面向社會招聘15人筆試參考題庫附帶答案詳解
- 脊髓出血性疾病的臨床護理
- 2025年小學學生食堂工人聘用合同
- 生地會考試卷及答案百度
- 上海二年級下試卷及答案
- 山東聊城中考數(shù)學試卷及答案
- 2025物流轉讓合同協(xié)議
- 公務員體檢須知
- 2025-2030清潔能行業(yè)市場發(fā)展分析與發(fā)展趨勢及投資前景預測報告
- 浙江國企招聘2025嘉興國際商務區(qū)投資建設集團有限公司招聘13人筆試參考題庫附帶答案詳解
- 衛(wèi)生管理證書考試相關法規(guī)知識試題及答案
- 第四課 人民民主專政的社會主義國家 課件高中政治統(tǒng)編版必修三政治與法治
- 危重患者安全轉運
- 2025年美麗中國第六屆全國國家版圖知識競賽測試題庫及答案(中小學組)
- 消防中控考試試題及答案
- 2025年中考數(shù)學分類復習:銳角三角函數(shù)及其應用(56題)(原卷版)
- 湖北省襄陽襄城區(qū)四校聯(lián)考2025屆中考化學模擬試卷含解析
- 100以內加減法練習題
評論
0/150
提交評論