第6章89C51的定時(shí)器、計(jì)數(shù)器_第1頁(yè)
第6章89C51的定時(shí)器、計(jì)數(shù)器_第2頁(yè)
第6章89C51的定時(shí)器、計(jì)數(shù)器_第3頁(yè)
第6章89C51的定時(shí)器、計(jì)數(shù)器_第4頁(yè)
第6章89C51的定時(shí)器、計(jì)數(shù)器_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1定時(shí)/計(jì)數(shù)器2定時(shí)方法概述定時(shí)計(jì)數(shù)器結(jié)構(gòu)和工作原理定時(shí)計(jì)數(shù)器的控制寄存器 定時(shí)器的四種工作方式 定時(shí)器的應(yīng)用3一、定時(shí)方法概述軟件定時(shí):軟件定時(shí)靠執(zhí)行一個(gè)循環(huán)程序以進(jìn)行時(shí)間延遲。特點(diǎn)是時(shí)間精確,且不需要外加硬件電路。但軟件定時(shí)要占用CPU開(kāi)銷(xiāo),因此軟件定時(shí)的時(shí)間不宜太長(zhǎng)。 采用時(shí)基電路定時(shí):特點(diǎn)是(定時(shí)功能全部由硬件電路完成)不占CPU時(shí)間,但需通過(guò)改變電路的元件參數(shù)來(lái)調(diào)節(jié)定時(shí)時(shí)間,在使用上不夠靈活方便。采用可編程芯片定時(shí):這種定時(shí)方法是通過(guò)對(duì)系統(tǒng)時(shí)鐘脈沖的計(jì)數(shù)來(lái)實(shí)現(xiàn)的。計(jì)數(shù)值通過(guò)程序設(shè)定,改變計(jì)數(shù)值,也就改變了定時(shí)時(shí)間,使用起來(lái)既靈活有方便。 結(jié)論:MCS-51單片機(jī)把定時(shí)電路集成在芯片中

2、,稱(chēng)之為定時(shí)器/計(jì)數(shù)器。 8051型單片機(jī)有兩個(gè)定時(shí)/計(jì)數(shù)器,分別稱(chēng)為定時(shí)器/計(jì)數(shù)器0和定時(shí)器/計(jì)數(shù)器1。 4二、定時(shí)計(jì)數(shù)器結(jié)構(gòu)和工作原理定時(shí)器方式寄存器主要用于設(shè)定定時(shí)器的工作方式定時(shí)器控制寄存器主要用于控制定時(shí)器的啟動(dòng)與停止,并保存T0、T1的溢出和中斷標(biāo)志定時(shí)器0定時(shí)器15定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)框圖16位的定時(shí)器/計(jì)數(shù)器實(shí)質(zhì)上是一個(gè)加l計(jì)數(shù)器,可實(shí)現(xiàn)定時(shí)定時(shí)和計(jì)數(shù)計(jì)數(shù)兩種功能,其功能由軟件控制和切換。定時(shí)器屬硬件定時(shí)和計(jì)數(shù),是單片機(jī)中效率高而且工作靈活的部件。6n定時(shí)器/計(jì)數(shù)器的定時(shí)功能定時(shí)功能。l計(jì)數(shù)器的加1信號(hào)由振蕩器的12分頻信號(hào)產(chǎn)生,即每過(guò)一個(gè)機(jī)器周期,計(jì)數(shù)器加1,直至計(jì)滿(mǎn)溢出。l定

3、時(shí)器的定時(shí)時(shí)間與系統(tǒng)的時(shí)鐘頻率有關(guān)。因一個(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期,所以計(jì)數(shù)頻率應(yīng)為系統(tǒng)時(shí)鐘頻率的十二分之一。如果晶振頻率為12MHz,則機(jī)器周期為1s。通過(guò)改變定時(shí)器的定時(shí)初值,并適當(dāng)選擇定時(shí)器的長(zhǎng)度(8位、13位或16位),可以調(diào)整定時(shí)時(shí)間。 7n定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)功能。l通過(guò)外部計(jì)數(shù)輸入引腳T0(P3.4)和T1(P3.5)對(duì)外部信號(hào)計(jì)數(shù),外部脈沖的下降沿將觸發(fā)計(jì)數(shù)。計(jì)數(shù)器在每個(gè)機(jī)器周期的S5P2期間采樣引腳輸入電平,若一個(gè)機(jī)器周期S5P2期間采樣值為1,下一個(gè)機(jī)器周期S5P2期間采樣值為0,則計(jì)數(shù)器加1,再下一個(gè)機(jī)器周期S3P1期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。l因檢測(cè)一個(gè)由1至0的跳變

4、需要兩個(gè)機(jī)器周期,故外部信號(hào)的最高計(jì)數(shù)頻率為時(shí)鐘頻率的二十四分之一。如果晶振頻率為12MHz,則最高計(jì)數(shù)頻率為0.5MHz。雖然對(duì)外部輸入信號(hào)的占空比無(wú)特殊要求,但為了確保給定電平在變化前至少被采樣一次,外部計(jì)數(shù)脈沖的高電平與低電平保持時(shí)間均需在一個(gè)機(jī)器周期以上。 81、工作方式寄存器TMODM0M1C/T0GATE0M0M1C/ T1GATE1TMOD字節(jié)字節(jié)地址地址89H D7 D6 D5 D4 D3 D2 D1 D0控制控制T0T0控制控制T1T1方式選擇方式選擇0000:方式:方式0 00101:方式:方式1 11010:方式:方式2 21111:方式:方式3 3定時(shí)定時(shí)/ /計(jì)數(shù)選擇

5、計(jì)數(shù)選擇0 0:定時(shí)器:定時(shí)器1 1:計(jì)數(shù)器:計(jì)數(shù)器門(mén)控位三、定時(shí)計(jì)數(shù)器的控制寄存器9GATE:門(mén)控制位,用于控制定時(shí)器的啟動(dòng)是否受外部中斷源信號(hào)的影響。GATE=0時(shí),與外部中斷無(wú)關(guān), 由TCON寄存器中的TRx位控制啟動(dòng)。GATE=1時(shí),由控制位TRx和引腳 共同控制啟動(dòng),只有在沒(méi)有外部中斷請(qǐng)求信號(hào)的情況下(即外部中斷引腳 =1時(shí)),才允許定時(shí)器啟動(dòng)。 INTxINTx102、定時(shí)控制寄存器(TCON)當(dāng)定時(shí)器1計(jì)滿(mǎn)溢出時(shí),由硬件自動(dòng)使TF0置1,并申請(qǐng)中斷。對(duì)該標(biāo)志位有兩種處理方法,一種是以中斷方式工作,即TF0置1并申請(qǐng)中斷,響應(yīng)中斷后,執(zhí)行中斷服務(wù)程序,并由硬件自動(dòng)使TF0清0;另一

6、種以查詢(xún)方式工作,即通過(guò)查詢(xún)?cè)撐皇欠駷?來(lái)判斷是否溢出,TF0置1后必須用軟件使TF0清0。GATE=0時(shí),用軟件使TR0置1即啟動(dòng)定時(shí)器1,若用軟件使TR0清0則停止定時(shí)器1。GATE=1時(shí),用軟件使TR1置1的同時(shí)外部中斷INT0的引腳輸入高電平才能啟動(dòng)定時(shí)器0。113、中斷允許控制寄存器EX0ET0EX1ET1ESET2EAIE字節(jié)字節(jié)地址地址A8HA8H D7 D6 D5 D4 D3 D2 D1 D0定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1中中斷允許控制位斷允許控制位定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0中中斷允許控制位斷允許控制位0 0:允許中斷:允許中斷1 1:禁止中斷響應(yīng):禁止中斷響應(yīng)中斷允許

7、總控制位中斷允許總控制位124、中斷優(yōu)先級(jí)寄存器IP(字節(jié)地址B8H)13四、定時(shí)計(jì)數(shù)器的四種工作方式定時(shí)器定時(shí)器T0T0、T1T1的工作方式的工作方式141、工作方式0(13位計(jì)數(shù)器)TR1=1TR1=1啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù)GATE0=0GATE0=0時(shí):時(shí):GATE0=1GATE0=1時(shí):時(shí): TR1=1TR1=1且且INT1=1INT1=1啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù)啟??刂贫〞r(shí)計(jì)數(shù)選擇定時(shí)計(jì)數(shù)選擇1313位計(jì)數(shù)器位計(jì)數(shù)器15 計(jì)數(shù)工作方式計(jì)數(shù)工作方式: : 最大的計(jì)數(shù)值為最大的計(jì)數(shù)值為81928192(2 21313) 預(yù)置的初值:預(yù)置的初值:X= 2X= 21313-N-N定時(shí)工作方式定時(shí)工作方式:

8、 :定時(shí)時(shí)間的計(jì)算公式為:定時(shí)時(shí)間的計(jì)算公式為: T=T=(2 21313計(jì)數(shù)初值)計(jì)數(shù)初值)晶振周期晶振周期1212?如晶振頻率為如晶振頻率為6MHZ/12MHZ6MHZ/12MHZ,求最小定時(shí)時(shí),求最小定時(shí)時(shí)間和最小定時(shí)時(shí)間間和最小定時(shí)時(shí)間 機(jī)器周期機(jī)器周期預(yù)置的初值:預(yù)置的初值:13212TX 晶振周期16【例】 單片機(jī)晶振頻率為12MHz,若產(chǎn)生1ms定時(shí),采用方式0,試計(jì)算初值X。X=1110000000011000B=E018H所以(TH)=E0H,(TL)=18H。解:預(yù)置的初值: 1313362212121 10 s 8192-12 10 Hz12 7192D 1C18H 00

9、011100000 11000BTTX晶振頻率晶振周期15141312111098/43210THTL172、工作方式1(16位計(jì)數(shù)器)1616位計(jì)數(shù)器位計(jì)數(shù)器18 計(jì)數(shù)工作方式計(jì)數(shù)工作方式: : 最大的計(jì)數(shù)值為最大的計(jì)數(shù)值為6553665536(2 21616) 預(yù)置的初值:預(yù)置的初值:X= 2X= 21616-N-N定時(shí)工作方式定時(shí)工作方式: :定時(shí)時(shí)間的計(jì)算公式為:定時(shí)時(shí)間的計(jì)算公式為: T=T=(2 21616計(jì)數(shù)初值)計(jì)數(shù)初值)晶振周期晶振周期1212?如晶振頻率為如晶振頻率為6MHZ/12MHZ6MHZ/12MHZ,求最小定時(shí)時(shí),求最小定時(shí)時(shí)間和最小定時(shí)時(shí)間間和最小定時(shí)時(shí)間 預(yù)置的

10、初值:預(yù)置的初值:X= 2X= 21616-T/(-T/(晶振周期晶振周期12)12)19【例】 單片機(jī)晶振頻率為12MHz,若產(chǎn)生1ms定時(shí),采用方式1,試計(jì)算初值X。所以(TH)=FCH,(TL)=18H。解:預(yù)置的初值: 1616362212121 10 s 6553612 10 Hz12 64536D FC18H 11111100 00011000BTTX晶振頻率晶振周期1514131211109876543210THTL20【例【例】已知晶振頻率已知晶振頻率foscfosc=12MHz=12MHz,使用定時(shí)器,使用定時(shí)器0 0以工作方式以工作方式1 1,在,在P1.0P1.0輸出輸出

11、周期為周期為2ms2ms的連續(xù)正方波脈沖。試編寫(xiě)相關(guān)程序。的連續(xù)正方波脈沖。試編寫(xiě)相關(guān)程序。 解:解:計(jì)算初值計(jì)算初值:TH0=FC HTH0=FC H,TL0=18 HTL0=18 H。 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ;跳轉(zhuǎn)到主程序;跳轉(zhuǎn)到主程序 ORG 000BH ORG 000BH ;T0T0的中斷入口地址的中斷入口地址 LJMP DVT0 LJMP DVT0 ;轉(zhuǎn)向中斷服務(wù)程序;轉(zhuǎn)向中斷服務(wù)程序 ORG 0100HORG 0100H MAIN MAIN:MOV SP,#60H ;MOV SP,#60H ;設(shè)堆棧指針設(shè)堆棧指針 MOV MO

12、V TMODTMOD,#01H #01H ;置;置T0T0工作于方式工作于方式1 /1 /初始化初始化TMODTMOD MOV TH0 MOV TH0,#0FCH #0FCH ;裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值 /裝入初值裝入初值 MOV TL0MOV TL0,#018H #018H SETB ET0 SETB ET0 ;T0T0開(kāi)中斷開(kāi)中斷 /中斷設(shè)置中斷設(shè)置 SETB EA SETB EA ;CPUCPU開(kāi)中斷開(kāi)中斷 SETB TR0 SETB TR0 ;啟動(dòng);啟動(dòng)T0 /T0 /啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器 SJMP $ SJMP $ ;等待中斷;等待中斷 DVT0DVT0:CPL P1.0 CPL P

13、1.0 ;P1.0P1.0取反輸出取反輸出 MOV TH0MOV TH0,#0FCH #0FCH ;重新裝入計(jì)數(shù)值重新裝入計(jì)數(shù)值 MOV TL0MOV TL0,#018H #018H RETI RETI ;中斷返回;中斷返回 ENDEND21查詢(xún)方式:查詢(xún)方式: ORG 0000H ORG 0000H LJMP MAIN LJMP MAIN ;跳轉(zhuǎn)到主程序;跳轉(zhuǎn)到主程序 ORG 0100HORG 0100H MAIN MAIN:MOV MOV TMODTMOD,#01H #01H ;置;置T0T0工作于方式工作于方式1 /1 /初始化初始化TMODTMOD LOOP: MOV TH0 LOOP

14、: MOV TH0,#0FCH #0FCH ;裝入計(jì)數(shù)初值裝入計(jì)數(shù)初值 /裝入初值裝入初值 MOV TL0MOV TL0,#018H #018H SETB TR0 SETB TR0 ;啟動(dòng);啟動(dòng)T0 /T0 /啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器 JNB TF0JNB TF0,$ $ ;查詢(xún);查詢(xún)TF0TF0標(biāo)志,如為標(biāo)志,如為1 1,說(shuō)明,說(shuō)明T0T0溢出,溢出, ;則往下執(zhí)行;則往下執(zhí)行 CLR TF0CLR TF0 ;清除;清除TF0TF0中斷標(biāo)志位中斷標(biāo)志位 CLR TR0 CLR TR0 ;T0T0溢出,關(guān)閉定時(shí)器溢出,關(guān)閉定時(shí)器 CPL P1.0 CPL P1.0 ;P1.0P1.0狀態(tài)取反狀態(tài)取

15、反 SJMP LOOPSJMP LOOP END END 223、工作方式2(自動(dòng)裝載初值的8位計(jì)數(shù)器)注:注:適用于需要重復(fù)定時(shí)或計(jì)數(shù)的場(chǎng)合。適用于需要重復(fù)定時(shí)或計(jì)數(shù)的場(chǎng)合。 定時(shí)精度比較高,但定時(shí)時(shí)間較短。定時(shí)精度比較高,但定時(shí)時(shí)間較短。用作定時(shí)或計(jì)數(shù)時(shí)的加1計(jì)數(shù)器用作賦值(保存初值)。23例、已知晶振頻率例、已知晶振頻率foscfosc=6MHz=6MHz,要求使用定時(shí)器,要求使用定時(shí)器0 0以工作方式以工作方式2 2產(chǎn)生產(chǎn)生100100s s定時(shí),在定時(shí),在P1.0P1.0輸出周期為輸出周期為200200s s的連續(xù)正方波脈沖。試編寫(xiě)的連續(xù)正方波脈沖。試編寫(xiě)相關(guān)程序。相關(guān)程序。 解:解

16、:計(jì)算初值計(jì)算初值:8866221212100 10 s 2566 10 Hz12 206D0CEH11001110BTTX 晶振頻率晶振周期 MOV TMOD MOV TMOD,#02H#02H ;設(shè)置定時(shí)器;設(shè)置定時(shí)器0 0為工作方式為工作方式2 2 MOV TH0 MOV TH0,#0CEH #0CEH ;設(shè)置計(jì)數(shù)初值;設(shè)置計(jì)數(shù)初值 MOVMOV,TL0TL0,#0CEH#0CEH SETB TR0 SETB TR0;啟動(dòng)定時(shí);啟動(dòng)定時(shí)LOOPLOOP:JBC TF0JBC TF0,LOOP1LOOP1;查詢(xún)計(jì)數(shù)溢出;查詢(xún)計(jì)數(shù)溢出 AJMP LOOPAJMP LOOPLOOP1LOOP1

17、:CPL P1.0CPL P1.0;輸出方波,初值自動(dòng)裝入;輸出方波,初值自動(dòng)裝入 AJMP LOOPAJMP LOOP24例例6-3 6-3 當(dāng)當(dāng)T0T0(P3.4P3.4)引腳上發(fā)生負(fù)跳變時(shí),從)引腳上發(fā)生負(fù)跳變時(shí),從P1.0P1.0引腳上輸出一個(gè)引腳上輸出一個(gè)周期為周期為1ms1ms的方波的方波, ,如圖所示。(系統(tǒng)時(shí)鐘為如圖所示。(系統(tǒng)時(shí)鐘為6MHz6MHz)(1 1)工作方式選擇)工作方式選擇T0T0為方式為方式1 1計(jì)數(shù)計(jì)數(shù),初值,初值 0FFFFH0FFFFH,即外部計(jì)數(shù)輸入端,即外部計(jì)數(shù)輸入端T0T0(P3.4P3.4)發(fā)生一)發(fā)生一次負(fù)跳變時(shí),次負(fù)跳變時(shí),T0T0加加1 1且

18、溢出,溢出標(biāo)志且溢出,溢出標(biāo)志TF0TF0置置“1”1”,發(fā)中斷請(qǐng)求。在進(jìn),發(fā)中斷請(qǐng)求。在進(jìn)入入T0T0中斷程序后,啟動(dòng)中斷程序后,啟動(dòng)T1T1。T1T1定義為方式定義為方式2 2定時(shí)定時(shí)。在。在T0T0腳發(fā)生一次負(fù)跳變后,啟動(dòng)腳發(fā)生一次負(fù)跳變后,啟動(dòng)T1T1每每500500 s s產(chǎn)生產(chǎn)生一次中斷,在中斷服務(wù)程序中對(duì)一次中斷,在中斷服務(wù)程序中對(duì)P1.0P1.0求反,使求反,使P1.0P1.0產(chǎn)生周期產(chǎn)生周期1ms1ms的方波。的方波。25(2 2)計(jì)算)計(jì)算T1T1初值初值設(shè)設(shè)T1T1的初值為的初值為X X: 則則 (2(28 8-X)-X)2 21010-6-6=5=51010-4-4 X

19、=2 X=28 8-250=6=06H-250=6=06H(3 3)程序設(shè)計(jì))程序設(shè)計(jì) ORG 0000HORG 0000H RESET: LJMP MAIN RESET: LJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序;復(fù)位入口轉(zhuǎn)主程序 ORG 000BHORG 000BH LJMP IT0P LJMP IT0P ;轉(zhuǎn);轉(zhuǎn)T0T0中斷服務(wù)程序中斷服務(wù)程序 ORG 001BHORG 001BH LJMP IT1P LJMP IT1P ;轉(zhuǎn);轉(zhuǎn)T1T1中斷服務(wù)程序中斷服務(wù)程序 ORG 0100HORG 0100H MAIN: MOV SP,#60HMAIN: MOV SP,#60H ACALL PT0M

20、2 ; ACALL PT0M2 ;調(diào)用對(duì)調(diào)用對(duì)T0T0、T1T1初始化子程序初始化子程序 LOOPLOOP: MOV CMOV C,F(xiàn)0F0 JNC LOOP JNC LOOP ;T0T0沒(méi)有產(chǎn)生中斷,等待沒(méi)有產(chǎn)生中斷,等待T0T0中斷中斷 SETB ET1 SETB ET1 ;允許;允許T1T1中斷中斷 SETB TR1 SETB TR1 ;啟動(dòng);啟動(dòng)T1T1 SJMP $ SJMP $ 26PT0M2PT0M2:MOV TMOD,#25H MOV TMOD,#25H ;初始化,;初始化,T1T1為方式為方式2 2定時(shí),定時(shí),T0T0為方式為方式1 1計(jì)數(shù)計(jì)數(shù) MOV TL0,#0FFH M

21、OV TL0,#0FFH ;T0T0置初值置初值 MOV TH0,#0FFHMOV TH0,#0FFH SETB ET0 SETB ET0 ;允許;允許T0T0中斷中斷 MOV TL1,#06H MOV TL1,#06H ;T1T1置初值置初值 MOV TH1,#06HMOV TH1,#06H CLR F0 CLR F0 SETB EA ; SETB EA ;開(kāi)中斷開(kāi)中斷 SETB TR0SETB TR0 ;啟動(dòng);啟動(dòng)T0T0 RET RETIT0P: CLR TR0 IT0P: CLR TR0 ;T0T0中斷服務(wù)程序,停止中斷服務(wù)程序,停止T0T0計(jì)數(shù)計(jì)數(shù) SETB F0 ;SETB F0

22、;建立建立T0T0產(chǎn)生中斷的標(biāo)志產(chǎn)生中斷的標(biāo)志RETIRETI IT1P: CPL P1.0 IT1P: CPL P1.0 ;T1T1中斷服務(wù),中斷服務(wù),P1.0P1.0位取反位取反 RETIRETI END END274 4、工作方式、工作方式3 3為什么定時(shí)為什么定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1無(wú)工作方式無(wú)工作方式3 3??jī)蓚€(gè)獨(dú)立的計(jì)數(shù)器兩個(gè)獨(dú)立的計(jì)數(shù)器注:當(dāng)注:當(dāng)T1用作串行口的波特率發(fā)生器時(shí),用作串行口的波特率發(fā)生器時(shí),T0才工作在方式才工作在方式3。TH0TH0被固定為被固定為1 1個(gè)獨(dú)立個(gè)獨(dú)立的的8 8位定時(shí)器(無(wú)外位定時(shí)器(無(wú)外部計(jì)數(shù)功能),并使部計(jì)數(shù)功能),并使用用T1T1的資源

23、(的資源(TR1TR1、TF1TF1)TL0TL0使用使用T0T0的資源的資源(TR0TR0、TF0TF0、INT0INT0、GATEGATE、G/TG/T)28例:假設(shè)某MCS-51應(yīng)用系統(tǒng)的兩個(gè)外中斷源已被占用,設(shè)置T1工作在方式2,作波特率發(fā)生器用。現(xiàn)要求增加一個(gè)外部中斷源,并控制P1.0引腳輸出一個(gè)5kHz的方波。設(shè)系統(tǒng)時(shí)鐘為12MHz。29(1 1)選擇工作方式)選擇工作方式 TL0TL0為方式為方式3 3計(jì)數(shù)計(jì)數(shù),把,把T0T0引腳(引腳(P3.4P3.4)作附加的外中斷輸入端,)作附加的外中斷輸入端,TL0TL0初值設(shè)為初值設(shè)為0FFH0FFH,當(dāng)檢測(cè)到,當(dāng)檢測(cè)到T0T0引腳電平

24、出現(xiàn)負(fù)跳變時(shí),引腳電平出現(xiàn)負(fù)跳變時(shí),TL0TL0溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。溢出,申請(qǐng)中斷,這相當(dāng)于跳沿觸發(fā)的外部中斷源。 TH0TH0為為8 8位方式位方式3 3定時(shí)定時(shí),控制,控制P1.0P1.0輸出輸出5kHz5kHz的方波信號(hào)。的方波信號(hào)。30(2)初值計(jì)算 TL0的初值設(shè)為0FFH。 5kHz的方波的周期為200s,TH0的定時(shí)時(shí)間為100s。TH0初值X計(jì)算如下: (28-X)210-6=110-4 X=28-100=156=9CH(3)程序設(shè)計(jì) 31 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 000BH ORG 000

25、BH ;T0T0中斷入口中斷入口 LJMP TL0INTLJMP TL0INT;跳;跳T0T0中斷服務(wù)程序中斷服務(wù)程序 ORG 001BH ORG 001BH ;在;在T0T0方式方式3 3時(shí),時(shí),TH0TH0占用占用T1T1的中斷的中斷 LJMP TH0INTLJMP TH0INT;跳;跳TH0TH0中斷服務(wù)程序中斷服務(wù)程序 ORG 0100HORG 0100HMAINMAIN: MOV TMOD,#27H MOV TMOD,#27H ;T0T0方式方式3 3計(jì)數(shù),計(jì)數(shù),T1T1方式方式2 2定時(shí)作串定時(shí)作串 行口波特率發(fā)生器行口波特率發(fā)生器 MOV TL0,#0FFH MOV TL0,#0

26、FFH ;置;置TL0TL0初值初值 MOV TH0,#9CHMOV TH0,#9CH ;置;置TH0TH0初值初值 MOV TL1,#dataL MOV TL1,#dataL ;datadata為波特率常數(shù)為波特率常數(shù) MOV TH1,#dataHMOV TH1,#dataH32 MOV TCON,#15HMOV TCON,#15H;啟動(dòng);啟動(dòng)T0 T0 或用或用SETB TR0SETB TR0 MOV IE,#9FH MOV IE,#9FH ;允許所有中斷;允許所有中斷 SJMP $SJMP $TL0INTTL0INT:MOV TL0,#0FFH MOV TL0,#0FFH ;TL0TL0

27、中斷服務(wù)程序中斷服務(wù)程序,TL0,TL0重新裝入初值重新裝入初值 SETB TR1 ;SETB TR1 ;啟動(dòng)啟動(dòng)TH0TH0定時(shí)定時(shí) RETIRETITH0INT: MOV TH0,#9CH ;TH0TH0INT: MOV TH0,#9CH ;TH0中斷服務(wù)程序。中斷服務(wù)程序。TH0TH0重新裝入初值重新裝入初值 CPL P1.0CPL P1.0 RETI RETI33初始化程序應(yīng)完成如下工作:對(duì)TMOD賦值,以確定T0和T1的工作方式。計(jì)算初值,并將其寫(xiě)入TH0、TL0或TH1、TL1。中斷方式時(shí),則對(duì)IE賦值,開(kāi)放中斷。使TR0或TR1置位,啟動(dòng)定時(shí)/計(jì)數(shù)器定時(shí)或計(jì)數(shù)。小結(jié):34五、定時(shí)

28、器的應(yīng)用1、門(mén)控制位GATE的應(yīng)用測(cè)量脈沖寬度GATE=0時(shí),與外部中斷無(wú)關(guān), 由TCON寄存器中的TRx位控制啟動(dòng)。GATE=1時(shí),由控制位TRx和引腳 共同控制啟動(dòng),只有在沒(méi)有外部中斷請(qǐng)求信號(hào)的情況下(即外部中斷引腳 =1時(shí)),才允許定時(shí)器啟動(dòng)。 INTxINTx35ORG 0000HRESET: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序 ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#90H ;T1為方式1定時(shí)控制字 MOV TL1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0;INT1高,則循環(huán) SETB TR1 ;如INT1為低

29、,啟動(dòng)T1LOOP1: JNB P3.3,LOOP1;INT1低,則循環(huán)LOOP2: JB P3.3,LOOP2 ;INT1高,則循環(huán)CLR TR1 ;停止T1計(jì)數(shù) MOV A,TL1 ;T1計(jì)數(shù)值送A將A中的T1計(jì)數(shù)值送顯示緩沖區(qū)轉(zhuǎn)換成顯示的代碼 LOOP3: LCALL DIR ;調(diào)用顯示子程序DIR顯示T1計(jì)數(shù)值 AJMP LOOP3 ; 362、實(shí)時(shí)時(shí)鐘的設(shè)計(jì)實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想實(shí)時(shí)時(shí)鐘實(shí)現(xiàn)的基本思想: :如何獲得如何獲得1 1秒的定時(shí)秒的定時(shí)? ?可把定時(shí)時(shí)間定為可把定時(shí)時(shí)間定為100ms100ms,采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿(mǎn),采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿(mǎn)1010

30、次,次,即得到秒計(jì)時(shí)。即得到秒計(jì)時(shí)。如何保存秒、分、時(shí)?如何保存秒、分、時(shí)?片內(nèi)片內(nèi)RAMRAM中規(guī)定中規(guī)定3 3個(gè)單元作為秒、分、時(shí)單元,具體安排如下:個(gè)單元作為秒、分、時(shí)單元,具體安排如下: 42H42H:“秒秒”單元單元 ;41H41H:“分分”單元;單元;40H40H:“時(shí)時(shí)”單元單元如何實(shí)現(xiàn)從秒到分,從分到時(shí)?如何實(shí)現(xiàn)從秒到分,從分到時(shí)?從秒到分,從分到時(shí)是通過(guò)軟件累加并進(jìn)行比較的方法來(lái)實(shí)現(xiàn)的。從秒到分,從分到時(shí)是通過(guò)軟件累加并進(jìn)行比較的方法來(lái)實(shí)現(xiàn)的。37時(shí)鐘主程序流程時(shí)鐘主程序流程中斷服務(wù)程序流程中斷服務(wù)程序流程38例:將定時(shí)器T0擴(kuò)展為外部中斷源。解解:將定時(shí)器T0設(shè)定為方式2(

31、自動(dòng)恢復(fù)計(jì)數(shù)初值),TH0和TF0的初值均設(shè)置為FFH,允許T0中斷,CPU開(kāi)放中斷,源程序如下:MOVTMOD,#06H MOV TH0,#0FFHMOVTL0,#0FFHSETBTR0SETBET0SETBEA T0引腳每輸入一個(gè)負(fù)跳變,TF0都會(huì)置1,向CPU請(qǐng)求中斷 T0T0腳相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。腳相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。3、作為外部中斷源39本章小結(jié)n8051單片機(jī)共有兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器,分別稱(chēng)為定時(shí)器0和定時(shí)器1,它們都是16位加1計(jì)數(shù)器。定時(shí)器/計(jì)數(shù)器的工作方式、定時(shí)時(shí)間、計(jì)數(shù)值和啟停控制由程序來(lái)確定。n定時(shí)器/計(jì)數(shù)器有四種工作方式,工作方式由定時(shí)

32、器方式寄存器TMOD中的M1、M0位確定。方式0是13位計(jì)數(shù)器,方式1是16位計(jì)數(shù)器,方式2是自動(dòng)重裝初值8位計(jì)數(shù)器;方式3時(shí),定時(shí)器0被分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器,定時(shí)器1是無(wú)中斷的計(jì)數(shù)器,此時(shí)定時(shí)器1一般用作串行口波特率發(fā)生器。n定時(shí)器/計(jì)數(shù)器有定時(shí)和計(jì)數(shù)兩種功能,由定時(shí)器方式寄存器TMOD中的C/T位確定。當(dāng)定時(shí)器/計(jì)數(shù)器工作在定時(shí)功能時(shí),通過(guò)對(duì)單片機(jī)內(nèi)部的時(shí)鐘脈沖計(jì)數(shù)來(lái)實(shí)現(xiàn)可編程定時(shí);當(dāng)定時(shí)器/計(jì)數(shù)器工作在計(jì)數(shù)功能時(shí),通過(guò)對(duì)單片機(jī)外部的脈沖計(jì)數(shù)來(lái)實(shí)現(xiàn)可編程計(jì)數(shù)。 40n當(dāng)定時(shí)器/計(jì)數(shù)器的加1計(jì)數(shù)器計(jì)滿(mǎn)溢出時(shí), 溢出標(biāo)志位TF1(TF0)由硬件自動(dòng)置1,對(duì)該標(biāo)志位有兩種處理方法。一種是以中

33、斷方式工作,即TF1(TF0)置1并申請(qǐng)中斷,響應(yīng)中斷后,執(zhí)行中斷服務(wù)程序,并由硬件自動(dòng)使TF1(TF0)清0;另一種以查詢(xún)方式工作,即通過(guò)查詢(xún)?cè)撐皇欠駷?來(lái)判斷是否溢出,TF1(TF0)置1后必須用軟件使TF1清0。n定時(shí)器/計(jì)數(shù)器的初始化實(shí)際上就是對(duì)定時(shí)器/計(jì)數(shù)器進(jìn)行編程,以實(shí)現(xiàn)設(shè)計(jì)者所要求的控制功能。這通過(guò)對(duì)TMOD、TH0(TH1)、TL0(TL1)、IE、TCON專(zhuān)用寄存器中相關(guān)位的設(shè)置來(lái)實(shí)現(xiàn),其中IE、TCON專(zhuān)用寄存器可進(jìn)行位尋址。 41選擇題:選擇題:1 1定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0在在GATE = 1GATE = 1時(shí)運(yùn)行的條件有(時(shí)運(yùn)行的條件有( )。)。A AP3

34、.2 = 1 B.P3.2 = 1 B.設(shè)置好定時(shí)初值設(shè)置好定時(shí)初值 C.TR0=1 D.T0C.TR0=1 D.T0開(kāi)啟中開(kāi)啟中2 2對(duì)定時(shí)器對(duì)定時(shí)器 0 0 進(jìn)行關(guān)中斷操作,需要復(fù)位中斷允許控制寄存器的:進(jìn)行關(guān)中斷操作,需要復(fù)位中斷允許控制寄存器的: (A) EA (A) EA 和和 ET0 (B) EA ET0 (B) EA 和和 EX0 EX0 (C) EA (C) EA 和和 ET1 (D) EA ET1 (D) EA 和和 EX1EX13 3在下列寄存器中,與定時(shí)器在下列寄存器中,與定時(shí)器 / / 計(jì)數(shù)器控制無(wú)關(guān)的是:計(jì)數(shù)器控制無(wú)關(guān)的是: (A) TCON (B) SCON (A) TCON (B) SCON (C) IE (D) TMOD (C) IE (D) TMOD 4 4 與定時(shí)工作方式與定時(shí)工作方式 0 0 和和 1 1 相比較,定時(shí)工作方式相比較,定時(shí)工作方式 2 2 不具備的特點(diǎn)是:不具備的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論