版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第6章定時/計數(shù)器控制6.18051定時/計數(shù)器的結(jié)構(gòu)和工作原理6.2定時/計數(shù)器的控制寄存器6.3定時/計數(shù)器的工作方式6.4定時/計數(shù)器用于外部中斷擴展6.5定時/計數(shù)器應(yīng)用6.6定時器26.7看門狗6.8實踐訓(xùn)練—簡易頻率計設(shè)計6.9思考與練習(xí)本章要點在單片機的應(yīng)用系統(tǒng)中,常常會有定時控制的需求,如定時輸出、定時檢測、定時掃描等;也經(jīng)常要對外部事件進行計數(shù)。8051系列單片機片內(nèi)集成有兩個可編程的定時/計數(shù)器:T0和T1。它們既可以工作于定時模式,也可以工作于外部事件計數(shù)模式。此外,T1還可以作為串行接口的波特率發(fā)生器。要實現(xiàn)定時功能,可以采用下面三種方法:(1)采用軟件定時:讓CPU循環(huán)執(zhí)行一段程序,通過選擇指令和安排循環(huán)次數(shù),以實現(xiàn)軟件定時。軟件定時不占用硬件資源,但占用了CPU時間,降低了CPU的利用率。(2)采用時基電路定時:例如采用555電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時電路。此種方法實現(xiàn)容易,改變電阻和電容值,可以在一定范圍內(nèi)改變定時值。但在硬件連接好以后,定時值與定時范圍不能由軟件進行控制和修改,即不可編程。中斷的基本概念8051中斷系統(tǒng)的結(jié)構(gòu)單片機中斷系統(tǒng)8051中斷的使用中斷服務(wù)程序本章要點(3)
采用可編程芯片定時:這種定時芯片的定時值及定時范圍很容易用軟件來確定和修改,此種芯片定時功能強,使用靈活。在單片機的定時/計數(shù)器不夠用時,可以考慮進行擴展。典型的可編程定時芯片如Intel8253。本章要點:定時和計數(shù)的基本概念定時/計數(shù)器的結(jié)構(gòu)單片機定時/計數(shù)器的特點定時/計數(shù)器的使用(合理選擇定時/計數(shù)器工作方式,初始值的計算,初始化程序的設(shè)計)中斷服務(wù)程序定時/計數(shù)器工程中運用CONTNTS6.18051定時/計數(shù)器的結(jié)構(gòu)和工作原理6.18051定時/計數(shù)器的結(jié)構(gòu)和工作原理011.定時/計數(shù)器的結(jié)構(gòu)圖6-1所示是定時/計數(shù)器的結(jié)構(gòu)原理框圖。圖6-1定時/計數(shù)器的結(jié)構(gòu)原理框圖定時/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位和低8位兩個寄存器組成(T0由TH0和TL0組成,T1由TH1和TL1組成)。TMOD是定時/計數(shù)器的工作方式寄存器,由它確定定時/計數(shù)器的工作方式和功能;TCON是定時/計數(shù)器的控制寄存器,用于控制T0、T1的啟動和停止以及設(shè)置溢出標(biāo)志。6.18051定時/計數(shù)器的結(jié)構(gòu)和工作原理012.定時/計數(shù)器的工作原理作為定時/計數(shù)器的加1計數(shù)器,其輸入的計數(shù)脈沖有兩個來源,一個是由系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后送來,另一個是T0或T1引腳輸入的外部脈沖源。每來一個脈沖,計數(shù)器加1,當(dāng)加到計數(shù)器為全1時,再輸入一個脈沖,就使計數(shù)器回0,且計數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請求(定時/計數(shù)器中斷允許時)。如果定時/計數(shù)器工作于定時模式,則表示定時時間已到;如果工作于計數(shù)模式,則表示計數(shù)值已滿??梢姡梢绯鰰r計數(shù)器的值減去計數(shù)初值才是加1計數(shù)器的計數(shù)值。6.18051定時/計數(shù)器的結(jié)構(gòu)和工作原理01設(shè)置為定時器模式時,加1計數(shù)器是對內(nèi)部機器周期計數(shù)(1個機器周期等于12個振蕩周期,即計數(shù)頻率為晶振頻率的1/12,12
MHz為1
μs、6
MHz為2
μs)。計數(shù)值乘以機器周期就是定時時間。設(shè)置為計數(shù)器模式時,外部事件計數(shù)脈沖由T0(P3.4)或T1(P3.5)引腳輸入到計數(shù)器。在每個機器周期的S5P2期間采樣T0、T1引腳電平。當(dāng)某周期采樣到一高電平輸入,而下一周期又采樣到一低電平輸入時,則計數(shù)器加1,更新的計數(shù)值在下一個機器周期的S3P1期間裝入計數(shù)器。由于檢測一個從1到0的下降沿需要2個機器周期,因此要求被采樣的電平至少要維持一個機器周期,所以最高計數(shù)頻率為晶振頻率的1/24。當(dāng)晶振頻率為12
MHz時,最高計數(shù)頻率不超過1/2
MHz,即計數(shù)脈沖的周期要大于2
μs。CONTNTS6.2
定時/計數(shù)器的控制寄存器6.2定時/計數(shù)器的控制寄存器028051系列單片機定時/計數(shù)器的工作由兩個特殊功能寄存器控制。TMOD用于設(shè)置其工作方式,TCON用于控制其啟動和中斷申請。工作方式寄存器TMOD工作方式寄存器TMOD用于設(shè)置定時/計數(shù)器的工作方式,高4位用于T1,低4位用于T0。TMOD的結(jié)構(gòu)和各位名稱、功能見表6-1。表6-1 TMOD的結(jié)構(gòu)和各位名稱、功能(字節(jié)地址89H)6.2定時/計數(shù)器的控制寄存器02(1)GATE:門控位。GATE=0時,只要用軟件使TCON中的TR0或TR1為1,就:可以啟動定時/計數(shù)器工作;GATE=1時,用軟件使TR0或TR1為1,同時外部中斷或也為高電平時,才能啟動定時/計數(shù)器工作。即此時定時器的啟動條件加上了或為高電平這一條件。(2):定時/計數(shù)模式選擇位。=0為定時模式,此時定時器計數(shù)的脈沖是由8051單片機片內(nèi)晶振器經(jīng)12分頻后產(chǎn)生的,每經(jīng)過一個機器周期定時器(T0或T1)的數(shù)值加1,直至計數(shù)器滿產(chǎn)生溢出。例如:當(dāng)8051采用6MHz晶振時,每個機器周期為2s,計10個機器周期即為20s,即定時20s。=1為計數(shù)模式,通過引腳T0(P3.4v)和T1(P3.5)對外部脈沖信號計數(shù)。當(dāng)輸入脈沖信號由1至0的下降沿時,計算器的值加1.在每個機器周期,CPU采樣T0和T1的輸入電平。雖然對輸入信號的占空比沒有特殊要求,但是為了確保某個電平在變化之前至少被采樣一次,要求電平保持時間至少是一個完整的機器周期,又由于檢測一個1至0的下跳變需要兩個機器周期,故最高計數(shù)頻率為fosc/24,即晶振頻率的1/24。6.2定時/計數(shù)器的控制寄存器02(3)M1M0:工作方式設(shè)置位。定時/計數(shù)器有4種工作方式,由M1M0進行設(shè)置。見表6-2。特別需要注意,TMOD不能進行位尋址,所以只能用字節(jié)指令設(shè)置定時/計數(shù)器的工作方式。CPU復(fù)位時TMOD所有位清0,上電復(fù)位后應(yīng)重新設(shè)置。6.2定時/計數(shù)器的控制寄存器022.控制寄存器TCONTCON的低4位用于控制外部中斷,已在前面介紹。高4位用于控制定時/計數(shù)器的啟動與中斷申請。TCON的結(jié)構(gòu)、位名稱、位地址和功能見表6-3。(1)TF1:T1溢出中斷請求標(biāo)志。當(dāng)定時/計數(shù)器T1計數(shù)溢出后,由CPU內(nèi)硬件自動置1,表示向CPU請求中斷。CPU響應(yīng)該中斷后,片內(nèi)硬件自動對其清0。TF1也可由軟件程序查詢其狀態(tài)或由軟件置位清0。6.2定時/計數(shù)器的控制寄存器02(2)TF0:T0溢出中斷請求標(biāo)志。其意義和功能與TF1相似。(3)TR1:定時/計數(shù)器T1運行控制位。TR1=1,T1運行,TR1=0,T1停止。(4)TR0:定時/計數(shù)器T0運行控制位。TR0=1,T0運行,TR0=0,T0停止。CONTNTS6.3定時/計數(shù)器的工作方式6.3定時/計數(shù)器的工作方式038051系列單片機定時/計數(shù)器有4種工作方式,由TMOD中M1M0的狀態(tài)確定。前3種工作方式,T0和T1除所使用的寄存器、有關(guān)控制位、標(biāo)志不同外,其他操作完全相同。T1無方式3。下面以T0為例進行分析。1. 工作方式0當(dāng)M1M0=00時,定時/計數(shù)器工作于方式0,如圖6-2所示。在方式0情況下,內(nèi)部計數(shù)器為13位。由TL0低5位和TH08位組成,特別需要注意的是TL0低5位計數(shù)滿時不向TL0的第6位進位,而是向TH0進位,13位計滿溢出,TF0置1,最大計數(shù)值213=8192(計數(shù)器初值為0)。6.3定時/計數(shù)器的工作方式036.3定時/計數(shù)器的工作方式03GATE位決定定時器運行口口那個值取決于TR0或TR0和INT0引腳。當(dāng)門控位GATE=0時,由于GATE信號封鎖了或門,使引腳INT0信號無效,T0運行控制由TR0單獨控制。當(dāng)TR0=1時,接通模擬開關(guān),定時/計數(shù)器工作;當(dāng)TR0=0,則模擬開關(guān)斷開,定時/計數(shù)器停止工作。當(dāng)GATE=1時,T0運行控制由TR0和INT0兩個條件共同控制。如果TR0=1,同時INT0=1,與門輸出為1,定時/計數(shù)器方可工作。TF0是定時/計數(shù)器的溢出狀態(tài)標(biāo)志,溢出時由硬件置位,TF0溢出中斷被CPU響應(yīng)時,轉(zhuǎn)入中斷時硬件清零,TF0也可由程序查詢和清“零”。工作方式0對定時/計數(shù)器高8位和低5位的初值計算很麻煩,易出錯。方式0采用13位計數(shù)器是為了與早期的產(chǎn)品兼容,所以在實際應(yīng)用中常由16位的方式1取代。6.3定時/計數(shù)器的工作方式03【例6-1】設(shè)定時器T0選擇工作方式0,定時時間為1ms,fosc/=6MHz。試確定T0初值,計算最大定時時間T。解答過程:當(dāng)T0處于工作方式0時,加1計數(shù)器為13位。設(shè)T0的初值為X,則轉(zhuǎn)換為二進制數(shù):X=1111000001100BT0的低5位:01100B=0CHT0的高8位:11110000B=F0H6.3定時/計數(shù)器的工作方式03T0最大定時時間對應(yīng)于13位計數(shù)器T0的各位全為1,即(TH0=FFH),(TL0)=1FH。則6.3定時/計數(shù)器的工作方式032. 工作方式1當(dāng)M1M0=01時,定時/計數(shù)器工作于方式1,如圖6-3所示。在方式1情況下,內(nèi)部計數(shù)器為16位。由TL0作低8位,TH0作高8位。16位計滿溢出時,TF0置1。6.3定時/計數(shù)器的工作方式03方式1與方式0的區(qū)別在于方式0是13位計數(shù)器,最大計數(shù)值213=8
192;方式1是16位計數(shù)器,最大計數(shù)值為216=65
536。用作定時器時,若fOSC=12
MHz,則方式0最大定時時間為8
192
μs,方式1最大定時時間為65
536
μs。6.3定時/計數(shù)器的工作方式033.工作方式2當(dāng)M1M0=10時,定時/計數(shù)器工作于方式2,如圖6-4所示。在方式2情況下,定時/計數(shù)器為8位,能自動恢復(fù)定時/計數(shù)器初值。在方式0、方式l時,定時/計數(shù)器的初值不能自動恢復(fù),計滿后若要恢復(fù)原來的初值,必須在程序指令中重新給TH0、TL0賦值。但方式2與方式0、方式1不同。方式2僅用TL0計數(shù),最大計數(shù)值為28=256。計滿溢出后,進位TF0,使溢出標(biāo)志TF0=1,同時原來裝在TH0中的初值自動裝入TL0(TH0中的初值允許與TL0不同)。所以,方式2既有優(yōu)點,又有缺點。優(yōu)點是定時初值可自動恢復(fù),缺點是計數(shù)范圍小。因此,方式2適用于需要重復(fù)定時,而定時范圍不大的應(yīng)用場合,特別適合于用作較精確的脈沖信號發(fā)生器。6.3定時/計數(shù)器的工作方式036.3定時/計數(shù)器的工作方式034.工作方式3當(dāng)M1M0=11時,定時/計數(shù)器工作于方式3,但方式3僅適用于T0,T1無方式3。(1)T0方式3。在方式3情況下,T0被拆成2個獨立的8位計數(shù)器TL0、TH0,如圖6-5所示。6.3定時/計數(shù)器的工作方式03①TL0使用T0原有的控制寄存器資源:TF0、TR0、GATE、、,組成一個8位的定時/計數(shù)器。②TH0借用T1的中斷溢出標(biāo)志TF1、TR1,只能對機內(nèi)機器周期脈沖計數(shù),組成一個8位定時器。(2)T0方式3情況下的T1。T1由于TF1、TR1被T0的TH0占用,計數(shù)器溢出時,只能將輸出送至串行口,即用作串行口波特率發(fā)生器,但T1工作方式仍可設(shè)置為方式0、方式1、方式2,控制位仍可使T1工作在定時/計數(shù)器方式,如圖6-6所示。從圖6-6(c)中看出,T0方式3情況下的T1方式2,因定時初值能自動恢復(fù),用作波特率發(fā)生器更為合適。6.3定時/計數(shù)器的工作方式03圖6-6T0方式3情況下的T1工作方式6.3定時/計數(shù)器的工作方式03在這種情況下,定時/計數(shù)器通常作為串行口的波特率發(fā)生器使用,以確定串行通信的速率,因為已沒有TF1被定時/計數(shù)器0借用了,只能把計數(shù)溢出直接送給串行口。把定時/計數(shù)器1當(dāng)作波特率發(fā)生器使用時,只需設(shè)置好工作方式,即可自動運行。如果停止它的工作,需送入一個把它設(shè)置為方式3的方式控制字即可,這是因為定時/計數(shù)器本身就不能工作在方式3,如果硬把它設(shè)置為方式3,自然會停止工作。CONTNTS6.4
定時/計數(shù)器用于外部中斷擴展6.4定時/計數(shù)器用于外部中斷擴展04實際應(yīng)用系統(tǒng)中如需有兩個以上的外部中斷源,而片內(nèi)定時/計數(shù)器未使用時,可利用定時/計數(shù)器來擴展外部中斷源。擴展方法是,將定時/計數(shù)器設(shè)置為計數(shù)器方式,計數(shù)初值設(shè)定為滿程,將待擴展的外部中斷源接到定時/計數(shù)器的外部計數(shù)引腳。從該引腳輸入一個下降沿信號,計數(shù)器加1后便產(chǎn)生定時/計數(shù)器溢出中斷。因此,可把定時/計數(shù)器的外部計數(shù)引腳作為擴展中斷源的中斷輸入端。例如,利用T0擴展一個外部中斷源。將T0設(shè)置為計數(shù)器方式,按方式2工作,TH0、TL0的初值均為0FFH,T0允許中斷,CPU開放中斷。其初始化程序如下:6.4定時/計數(shù)器用于外部中斷擴展04對應(yīng)的C語言初始化程序如下:當(dāng)T0(P3.4)引腳上出現(xiàn)外部中斷請求信號(一個下降沿信號)時,TL0計數(shù)加1,產(chǎn)生溢出,將TF0置1,向CPU發(fā)出中斷請求。同時,TH0的內(nèi)容0FFH又自動裝入TL0,作為下一輪的計數(shù)初值。這樣,P3.4引腳每輸入一個下降沿脈沖,都將TF0置1,向CPU發(fā)出中斷請求。這就相當(dāng)于又多了一個邊沿觸發(fā)的外部中斷源。CONTNTS6.5
定時/計數(shù)器應(yīng)用6.5定時/計數(shù)器應(yīng)用05在工程應(yīng)用中,常常會遇到要求系統(tǒng)定時或?qū)ν獠渴录嫈?shù)等類似問題,若用CPU直接進行定時或計數(shù)不但降低了CPU的效率,而且會無法響應(yīng)實時事件。靈活運用定時/計數(shù)器不但可減輕CPU的負(fù)擔(dān),簡化外圍電路,而且可以提高系統(tǒng)的實時性,能快速響應(yīng)和處理外部事件。由于定時/計數(shù)器的功能是由軟件編程實現(xiàn)的,因此一般在使用定時/計數(shù)器前都要對其進行初始化。所謂初始化,實際上就是確定相關(guān)寄存器的值。初始化步驟如下:(1)確定工作方式。對TMOD賦值。根據(jù)任務(wù)性質(zhì)明確工作方式及類型,從而確定TMOD寄存器的值。例如,要求定時/計數(shù)器T0完成16位定時功能,TMOD的值就應(yīng)為01H,用指令MOVTMOD,#01H即可完成工作方式的設(shè)定。(2)預(yù)置定時/計數(shù)器的計數(shù)初值。依據(jù)以上確定的工作方式和要求的計數(shù)次數(shù),計算出相應(yīng)的計數(shù)初值。直接將計數(shù)初值寫入TH0、TL0或TH1、TL1。(3)根據(jù)需要開放定時/計數(shù)器中斷。直接對IE寄存器賦值。(4)啟動定時/計數(shù)器工作。將TR0或TR1置1。GATE=0時,直接由軟件置位啟動;GATE=l時,除軟件置位外,還必須在外中斷引腳處加上相應(yīng)的電平值才能啟動。6.5定時/計數(shù)器應(yīng)用05【例6-2】設(shè)單片機的振蕩頻率為12MHz,用定時器/計數(shù)器0的模式1編程,在P1.0引腳產(chǎn)生一個50Hz的方波,定時器T0采用中斷的處理方式。題意分析定時器的分析過程:需要產(chǎn)生周期信號時,選擇定時方式。定時時間到了對輸出端進行周期性的輸出即可。周期為50Hz的方波要求定時器的定時時間為10ms,每次溢出時,將P1.0引腳的輸出取反,就可以在P1.0上產(chǎn)生所需要的方波。解答過程:定時器初值計算:振蕩頻率為12MHz,則機器周期為1μs。設(shè)定時初值為X,(65536-X)×1μs=10ms,則X=55536=D8F0H定時器的初值為:TH0=0D8H,TL0=0F0H6.5定時/計數(shù)器應(yīng)用05C語言程序:6.5定時/計數(shù)器應(yīng)用05【例6-3】用定時器控制P1.1所接的LED每100ms亮或滅一次,設(shè)系統(tǒng)的晶振為6MHZ。采用查詢方式實現(xiàn)。分析過程:要使用單片機的定時器,首先要設(shè)置定時器的工作方式,然后給定時器賦初值,即進行定時器的初始化。解答過程:這里選擇定時器T0定時,方式1,不使用門控位。由此可以確定定時器的工作方式字TMOD應(yīng)為00000001B,即0x01。定時初值為:由于fosc=6MHz,Tm=2μs,因此時間常數(shù)的計算為:6.5定時/計數(shù)器應(yīng)用05初始化定時器后,要定時器工作,必須將TR0=1。下面用查詢方式完成。6.5定時/計數(shù)器應(yīng)用05當(dāng)定時時間到,TF0被置為1。因此,只需要查詢TF0是否等于1,即可得知定時時間是否到達,程序中“if(TF0==1)”來判斷。如果TF0=0,則條件滿足,大括號中的程序不會被執(zhí)行;當(dāng)定時時間到,TF1=1,條件滿足,執(zhí)行大括號中的程序,首先將TF0清零,然后重置定時初值,最后是執(zhí)行規(guī)定動作,取反P1.1的狀態(tài)。CONTNTS6.6
定時器26.6定時器206除了定時器0和定時器1外,52系列單片機還有另外一個定時器——定時器2。下面我們簡單介紹一下定時器2的用法。定時器2是一個16位的定時器/計數(shù)器。T2CON中的2/TC位決定定時器2是用作定時器還是計數(shù)器。定時器2有三種工作模式:捕捉模式、自動重載(增或減計數(shù))模式和波特率發(fā)生器模式。定時器2的工作模式由T2CON決定,詳見表6-6。定時器2有兩個8位的寄存器TH2和TL2。在定時器功能中,每個機器周期TL2都會增1。由于一個機器周期由12個振蕩周期組成,所以定時器2的計數(shù)速率為振蕩頻率的1/12。與定時器2有關(guān)的寄存器為T2CON和T2MOD。T2CON寄存器的組成見表6-4。6.6定時器206詳細(xì)介紹如下。TF2:定時器2溢出標(biāo)志位。定時器2溢出時置位。必須由軟件清零。當(dāng)RCLK=1或TCLK=1時,TF2不會置位。EXF2:定時器2外部標(biāo)志位。當(dāng)EXEN2=1,且T2EX引腳發(fā)生電平的負(fù)跳變引起捕捉或重載時被置位。當(dāng)允許定時器2中斷時,EXF2=1會使CPU跳轉(zhuǎn)到定時器2的中斷處理函數(shù)中。EXF2必須由軟件清零。在增/減計數(shù)模式下(DCEN=1),EXF2不會引起中斷。RCLK:接收時鐘使能。置位時,在串行通信模式1和模式3中,串口將使用定時器2的溢出脈沖作為接收時鐘。RCLK=0將使串口使用定時器1的溢出脈沖作為接收時鐘。?
TCLK:發(fā)送時鐘使能。置位時,在串行通信模式1和模式3中,串口將使用定時器2的溢出脈沖作為發(fā)送時鐘。TCLK=0將使串口使用定時器1的溢出脈沖作為發(fā)送時鐘。? EXEN2:定時器2外部信號使能。置位時,如果定時器2并沒有用作串口的波特率發(fā)生器,T2EX引腳的電平負(fù)跳變將發(fā)生捕捉或重載。6.6定時器206TR2:定時器2啟動/停止控制位。TR2=1將啟動定時器2。C/T2:定時器/計數(shù)器選擇位。C/T2=0時用作定時器,C/T2=1時用作計數(shù)器(下降沿觸發(fā))。CP/RL2:捕捉/重載選擇位。CP/RL2=1時,如果EXEN2=1,將在T2EX引腳發(fā)生電平負(fù)跳變時產(chǎn)生捕捉事件。02/=RLCP時,當(dāng)定時器2溢出或T2EX引腳發(fā)生電平負(fù)跳變時(如果EXEN2=1)發(fā)生重載。當(dāng)RCLK或TCLK=1時,這一位將被忽略,定時器2溢出時會被強行自動重載。T2MOD寄存器的組成見表6-5。具體說明如下。T2OE:定時器2輸出使能位。DCEN:置位時,定時器2可設(shè)置成增/減計數(shù)器。6.6定時器2066.6定時器2061.捕捉模式在捕捉模式中,要設(shè)置T2CON中的EXEN2位。如果EXEN2=0,那么定時器2是一個16位的定時器或計數(shù)器,當(dāng)它溢出時,T2CON中的TF2置位,并可產(chǎn)生中斷。如果EXEN2=1,那么定時器2的操作是一樣的,但單片機的T2EX引腳的從1到0的電平變化會把當(dāng)前TH2和TL2的值分別捕捉到RCAP2H和RCAP2L中。此外,T2EX引腳的電平變化會使T2CON中的EXF2位置位。EXF2和TF2一樣,都可以產(chǎn)生中斷。2.自動重載(增或減計數(shù))模式在16位自動重載模式中,定時器2可以設(shè)置成增計數(shù)或減計數(shù)。這一功能由T2MOD中的DCEN(減計數(shù)使能)位設(shè)置(見表3.13)。當(dāng)單片機復(fù)位時,DCEN被置0,定時器為增計數(shù)方式。當(dāng)DCEN被置位時,定時器2可以為增計數(shù)或減計數(shù),這要取決于T2EX引腳的值。
當(dāng)DCEN=0時,定時器2處于增計數(shù)方式。在這種模式下,如果EXEN2=0,那么定時器2增計數(shù)至0xFFFF,當(dāng)定時器溢出時,把TF2位置位。定時器溢出會使定時器的寄存器值自動從RCAP2H和RCAP2L自動重載。6.6定時器206RCAP2H和RCAP2L的值由軟件預(yù)設(shè)。如果EXEN2=1,那么定時器寄存器的重載除由定時器溢出觸發(fā)外,還可以被T2EX引腳的從1到0的電平變化觸發(fā)。這一電平變化還會把EXF2位置位。如果中斷被允許,TF2和EXF2的置位都可以產(chǎn)生中斷。把DCEN位置1使定時器2可以增計數(shù)或減計數(shù)。在這種模式下,T2EX引腳的電平控制計數(shù)的方向。當(dāng)T2EX引腳為高電平時,定時器2增計數(shù)。當(dāng)定時器計數(shù)至0xFFFF溢出并把TF2置位,同時RCAP2H和RCAP2L的值會被分別自動重載至定時器的寄存器TH2和TL2。當(dāng)T2EX引腳為低電平時,定時器2減計數(shù)。當(dāng)TH2和TL2分別與RCAP2H和RCAP2L相等時,定時器下溢出,TF2置位,0xFFFF被重載至定時器的寄存器中。在這種模式下,EXF2位在定時器2上溢出或下溢出時翻轉(zhuǎn),可以被用作定時器的第17位。這時EXF2并不作為中斷的標(biāo)志位。6.6定時器2063. 波特率發(fā)生器模式通過設(shè)置T2CON中的TCLK和(或)RCLK位,定時器2可用作波特率發(fā)生器。注意如果把定時器2僅用作發(fā)送或接收而把定時器1用作另一功能,那么發(fā)送和接收的波特率可以不一樣。波特率發(fā)生器模式與自動重載模式相似,TH2的溢出會引起定時器2的定時器值被由軟件預(yù)設(shè)的RCAP2H和RCAP2L自動重載。串行通信模式1和模式3中的波特率由定時器2的溢出速率決定:
6.6定時器206這時,定時器2可以被設(shè)置作定時器或計數(shù)器。在大多數(shù)應(yīng)用中,定時器2都被設(shè)置作定時器。當(dāng)定時器2被設(shè)置作波特率發(fā)生器時,它的定時器操作是不一樣的。通常,作為一個定時器,它每個機器周期增1(以振蕩頻率的1/12的速率增1)。但作為波特率發(fā)生器,定時器每2個振蕩周期增1。波特率的計算公式如下:
其中(RCAP2H,RCAP2L)是由RCAP2H和RCAP2L組成的16位無符號整數(shù)。在使用要注意TH2的溢出并不會使TF2置位,也不會產(chǎn)生中斷。另外,如果EXEN2被置位,T2EX引腳處的從1到0的電平變化會把EXF2置位,但不會引起(RCAP2H,RCAP2L)重載到(TH2,TL2)。因此,當(dāng)定時器2被用作波特率發(fā)生器時,T2EX可以用作額外的外部中斷。當(dāng)定時器2在波特率發(fā)生器模式下運行(TR2=1)時,TH2和TL2不應(yīng)被讀寫。RCAP2寄存器可以讀,但不應(yīng)被寫入。在訪問定時器2的寄存器或RCAP2寄存器前,應(yīng)先把定時器停掉(把TR2清0)。6.6定時器206定時器/計數(shù)器T2作為波特率發(fā)生器使用時的編程方法如下:6.6定時器2064.可編程時鐘輸出P1.0可用作輸出50%占空比的方波。這一引腳除了常規(guī)的I/O外,還有兩個其它功能。它可以用作定時器2的外部時鐘輸入,也可以用作輸出從61Hz到4MHz(振蕩頻率為16MHz時)的占空比為50%的方波。要把定時器2設(shè)置成時鐘發(fā)生器,要把2/TC清0和把T2OE(T2MOD.1)置1。TR2位(T2CON.2)用于開始或停止定時器。時鐘的輸出頻率取決于振蕩器頻率和定時器2的捕捉寄存器(RCAP2H和RCAP2L):在時鐘發(fā)生器模式下,定時器2的溢出不會產(chǎn)生中斷??梢酝瑫r把定時器2用作波特率發(fā)生器和時鐘發(fā)生器。
但是,
波特率和時鐘頻率不能分別確定,
因為它們共用RCAP2H和RCAP2L。6.6定時器206【例6-4】用定時器/計數(shù)器2從P1.0產(chǎn)生一個5000Hz的方波,假設(shè)晶振頻率fosc為12MHz。分析過程:當(dāng)T2MOD的T2OE=1,T2CON的C/T2=0時,T2工作于時鐘輸出方式。T2溢出信號自動觸發(fā)T2(P1.0)引腳狀態(tài)翻轉(zhuǎn)從P1.0引腳輸出頻率可調(diào)、精度高的方波信號。解答過程:溢出后,RCAP2H和RCAP2L寄存器內(nèi)容裝入TH2和TL2寄存器中,重新計數(shù),以便獲得準(zhǔn)確的溢出信號。輸出信號頻率為:6.6定時器206C語言程序:CONTNTS6.7
看門狗6.7看門狗07看門狗是S5x系列單片機比C5x系列多出來的功能之一??撮T狗可以在CPU死機時重啟CPU。看門狗由一個14位的計數(shù)器和看門狗寄存器WDTRST組成。單片機復(fù)位后,看門狗是處于禁用狀態(tài)的。要使能看門狗,就要連續(xù)向WDTRST寄存器寫入0x1e和0xe1。當(dāng)看門狗使能且振蕩器工作時,看門狗計數(shù)器每個機器周期增1。使能看門狗后,除了復(fù)位(硬件復(fù)位或看門狗溢出復(fù)位)外沒有辦法禁用看門狗。當(dāng)看門狗計數(shù)器溢出時,它會在RST引腳產(chǎn)生一個高電平脈沖,迫使單片機復(fù)位。當(dāng)看門狗使能后,程序必須不斷地向WDTRST寫0x1e和0xe1以避免看門狗溢出(通常稱為“喂狗”)??撮T狗的14位計數(shù)器在數(shù)到16383(0x3FFF)后溢出,這時單片機會復(fù)位。這意味著程序必須最多16383機器周期內(nèi)喂一次狗。CONTNTS6.8實踐訓(xùn)練—簡易頻率計設(shè)計6.8實踐訓(xùn)練—簡易頻率計設(shè)計08利用單片機的T0、T1的定時/計數(shù)功能,完成對輸入的信號的頻率進行測量,測量的結(jié)果通過8位動態(tài)數(shù)碼管顯示出來。這里要求實現(xiàn)對0~200KHz的信號頻率進行準(zhǔn)確測量,測量誤差不超過±1Hz。頻率計的功能,是測出1s內(nèi)的輸入信號的周期個數(shù),再用數(shù)字的方式顯示出來,也就是需要完成定時1s、對輸入的脈沖計數(shù)和數(shù)字顯示的硬件電路和相應(yīng)的程序。6.8實踐訓(xùn)練—簡易頻率計設(shè)計086.8.1
應(yīng)用環(huán)境數(shù)字頻率計是一種用十進制數(shù)字顯示被測信號頻率的數(shù)字測量儀器。根據(jù)電信號的頻率的定義,就是在1s鐘內(nèi)信號變化的周期數(shù)。在一個單片機系統(tǒng)中,為了實現(xiàn)頻率的測量,就是要對外部信號進行計數(shù),每到1s時,將計數(shù)所得的數(shù)值送到顯示器上。6.8實踐訓(xùn)練—簡易頻率計設(shè)計086.8.2實現(xiàn)過程1.硬件電路分析從設(shè)計要求可以得出,定時1s,可以通過單片機內(nèi)部的定時器來完成,不需要額外的硬件電路。同樣,對脈沖的計數(shù)也可能用單片機內(nèi)部的定時/計數(shù)器來完成,也不需要另外的硬件電路,只需要將外部的計數(shù)脈沖連接對應(yīng)的引腳上,本訓(xùn)練中選擇T0作為計數(shù)用,所以將計數(shù)脈沖連接到對應(yīng)的T0引腳(P3.4,第二功能)。顯示頻率的數(shù)字,可以采用各種顯示器件,如LED、LCD等,本設(shè)計中采用LED的動態(tài)顯示電路,P0口接七段顯示器的段碼輸入端,P2口接位碼控制端。輸出脈沖的P1.0(采用定時器2產(chǎn)生脈沖)作為信號源。(可以參考后面的顯示器設(shè)計一章)6.8實踐訓(xùn)練—簡易頻率計設(shè)計082.程序設(shè)計分析通過任務(wù)分析,要求單片機要完成三個實時任務(wù),分別是:對輸入信號周期進行計數(shù)、1s定時、動態(tài)顯示,以及頻率計算及頻率轉(zhuǎn)換為顯示數(shù)據(jù)。要同時完成三個實時任務(wù),只有使用中斷的方式進行任務(wù)分割,可以用定時器T0、T1及其中斷服務(wù)程序和主程序來分別完成每一個任務(wù)。其中,動態(tài)顯示因人的視覺的不敏感,對實時要求最低,因而使用主程序完成,同時將數(shù)據(jù)的運算也放在主程序中。剩下的兩個任務(wù)分別用T0完成輸入信號的計數(shù)和T1完成1s的定時。(1)定時1sT1工作在定時狀態(tài)下,最大定時時間約為65ms,達不到1s的定時,所以采用定時50ms,共定時20次,即可完成1s的定時功能。因電路晶振fOSC=11.0592MHz,所以T1的初值的裝入語句如下:6.8實踐訓(xùn)練—簡易頻率計設(shè)計08每定時1s鐘時間到了,就停止T0的計數(shù),而從T0的計數(shù)單元中讀取計數(shù)的數(shù)值,然后進行數(shù)據(jù)處理,送到數(shù)碼管顯示出來。定時器1的中斷服務(wù)程序如下所示:6.8實踐訓(xùn)練—簡易頻率計設(shè)計08(2)輸入的脈沖計數(shù)T0是工作在計數(shù)狀態(tài)下,對輸入的頻率信號進行計數(shù)。在本任務(wù)中,由于單片機的工作頻率fOSC=11.0592MHz,工作在計數(shù)狀態(tài)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州大學(xué)《結(jié)構(gòu)力學(xué)B》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財經(jīng)大學(xué)《小學(xué)教育教學(xué)敘事研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員《B證》考試題庫及答案
- 貴陽信息科技學(xué)院《教育史專題研究》2023-2024學(xué)年第一學(xué)期期末試卷
- 硅湖職業(yè)技術(shù)學(xué)院《計算思維導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025甘肅建筑安全員-A證考試題庫及答案
- 廣州新華學(xué)院《物流與電子商務(wù)實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025遼寧省建筑安全員A證考試題庫
- 2025年湖南建筑安全員-A證考試題庫附答案
- 中華詩詞大賽題
- GB/T 44462.1-2024工業(yè)互聯(lián)網(wǎng)企業(yè)網(wǎng)絡(luò)安全第1部分:應(yīng)用工業(yè)互聯(lián)網(wǎng)的工業(yè)企業(yè)防護要求
- DB34T 3703.3-2021 長大橋梁養(yǎng)護指南 第3部分:定期檢查工作驗收
- 保潔突發(fā)事件應(yīng)急預(yù)案
- 國土空間規(guī)劃用途管制實施與研究
- 膽囊術(shù)后并發(fā)癥護理
- 醫(yī)療廢物暫存間消毒制度
- 2023-2024學(xué)年人教版高中信息技術(shù)必修二第二章第二節(jié)《 信息系統(tǒng)的開發(fā)過程》教案
- 2024六年級英語上冊 Module 9 Unit 1 Do you want to visit the UN building教案 外研版(三起)
- 2024年廣東省高中學(xué)業(yè)水平合格性考試語文試卷真題(含答案解析)
- 高技能公共實訓(xùn)基地建設(shè)方案
- DL∕T 1732-2017 電力物聯(lián)網(wǎng)傳感器信息模型規(guī)范
評論
0/150
提交評論