




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.定時(shí)器 計(jì)數(shù)器的基本結(jié)構(gòu)及工作原理80C51單片機(jī)內(nèi)部設(shè)有兩個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器??删幊痰囊馑际侵钙涔δ?如工作方式、定時(shí)時(shí)間、量程、啟動(dòng)方式等)均可由指令來(lái)確定和改變。在定時(shí)器/計(jì)數(shù)器中除了有兩個(gè)16位的計(jì)數(shù)器之外,還有兩個(gè)特殊功能寄存器(控制寄存器和方式寄存器)。定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu):從上面定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)圖中我們可以看出,16位的定時(shí)/計(jì)數(shù)器分別由兩個(gè)8位專用寄存器組成,即:T0由TH0和TL0構(gòu)成;T1由TH1和TL1構(gòu)成。其訪問(wèn)地址依次為8AH-8DH。每個(gè)寄存器均可單獨(dú)訪問(wèn)。這些寄存器是用于存放定時(shí)或計(jì)數(shù)初值的。此外,其內(nèi)部還有一個(gè)8位的定時(shí)器方式寄存器TMOD和一
2、個(gè)8位的定時(shí)控制寄存器TCON。這些寄存器之間是通過(guò)內(nèi)部總線和控制邏輯電路連接起來(lái)的。TMOD主要是用于選定定時(shí)器的工作方式;TCON主要是用于控制定時(shí)器的啟動(dòng)停止,此外TCON還可以保存T0、T1的溢出和中斷標(biāo)志。當(dāng)定時(shí)器工作在計(jì)數(shù)方式時(shí),外部事件通過(guò)引腳T0(P3.4)和T1(P3.5)輸入。定時(shí)計(jì)數(shù)器的原理:16位的定時(shí)器/計(jì)數(shù)器實(shí)質(zhì)上就是一個(gè)加1計(jì)數(shù)器,其控制電路受軟件控制、切換。當(dāng)定時(shí)器/計(jì)數(shù)器為定時(shí)工作方式時(shí),計(jì)數(shù)器的加1信號(hào)由振蕩器的12分頻信號(hào)產(chǎn)生,即每過(guò)一個(gè)機(jī)器周期,計(jì)數(shù)器加1,直至計(jì)滿溢出為止。顯然,定時(shí)器的定時(shí)時(shí)間與系統(tǒng)的振蕩頻率有關(guān)。因一個(gè)機(jī)器周期等于12個(gè)振蕩周期,所
3、以計(jì)數(shù)頻率fcount=1/12osc。如果晶振為12MHz,則計(jì)數(shù)周期為:T=1/(12×106)Hz×1/12=1s這是最短的定時(shí)周期。若要延長(zhǎng)定時(shí)時(shí)間,則需要改變定時(shí)器的初值,并要適當(dāng)選擇定時(shí)器的長(zhǎng)度(如8位、13位、16位等)。當(dāng)定時(shí)器/計(jì)數(shù)器為計(jì)數(shù)工作方式時(shí),通過(guò)引腳T0和T1對(duì)外部信號(hào)計(jì)數(shù),外部脈沖的下降沿將觸發(fā)計(jì)數(shù)。計(jì)數(shù)器在每個(gè)機(jī)器周期的S5P2期間采樣引腳輸入電平。若一個(gè)機(jī)器周期采樣值為1,下一個(gè)機(jī)器周期采樣值為0,則計(jì)數(shù)器加1。此后的機(jī)器周期S3P1期間,新的計(jì)數(shù)值裝入計(jì)數(shù)器。所以檢測(cè)一個(gè)由1至0的跳變需要兩個(gè)機(jī)器周期,故外部事年的最高計(jì)數(shù)頻率為振蕩頻率的
4、1/24。例如,如果選用12MHz晶振,則最高計(jì)數(shù)頻率為0.5MHz。雖然對(duì)外部輸入信號(hào)的占空比無(wú)特殊要求,但為了確保某給定電平在變化前至少被采樣一次,外部計(jì)數(shù)脈沖的高電平與低電平保持時(shí)間均需在一個(gè)機(jī)器周期以上。當(dāng)CPU用軟件給定時(shí)器設(shè)置了某種工作方式之后,定時(shí)器就會(huì)按設(shè)定的工作方式獨(dú)立運(yùn)行,不再占用CPU的操作時(shí)間,除非定時(shí)器計(jì)滿溢出,才可能中斷CPU當(dāng)前操作。CPU也可以重新設(shè)置定時(shí)器工作方式,以改變定時(shí)器的操作。由此可見(jiàn),定時(shí)器是單片機(jī)中效率高而且工作靈活的部件。綜上所述,我們已知定時(shí)器/計(jì)數(shù)器是一種可編程部件,所以在定時(shí)器/計(jì)數(shù)器開始工作之前,CPU必須將一些命令(稱為控制字)寫入定時(shí)
5、/計(jì)數(shù)器。將控制字寫入定時(shí)/計(jì)數(shù)器的過(guò)程叫定時(shí)器/計(jì)數(shù)器初始化。在初始化過(guò)程中,要將工作方式控制字寫入方式寄存器,工作狀態(tài)字(或相關(guān)位)寫入控制寄存器,賦定時(shí)/計(jì)數(shù)初值。下面我們就提出的控制字的格式及各位的主要功能與大家詳細(xì)的講解??刂萍拇嫫鞫〞r(shí)器/計(jì)數(shù)器T0和T1有2個(gè)控制寄存器-TMOD和TCON,它們分別用來(lái)設(shè)置各個(gè)定時(shí)器/計(jì)數(shù)器的工作方式,選擇定時(shí)或計(jì)數(shù)功能,控制啟動(dòng)運(yùn)行,以及作為運(yùn)行狀態(tài)的標(biāo)志等。其中,TCON寄存器中另有4位用于中斷系統(tǒng)。定時(shí)器/計(jì)數(shù)器方式寄存器TMOD:定時(shí)器方式控制寄存器TMOD在特殊功能寄存器中,字節(jié)地址為89H,無(wú)位地址。TMOD的格式如下圖所示。由圖可見(jiàn),
6、TMOD的高4位用于T1,低4使用于T0,4種符號(hào)的含義如下:GATE:門控制位。GATE和軟件控制位TR、外部引腳信號(hào)INT的狀態(tài),共同控制定時(shí)器/計(jì)數(shù)器的打開或關(guān)閉。C/T:定時(shí)器/計(jì)數(shù)器選擇位。C/T=1,為計(jì)數(shù)器方式;C/T=0,為定時(shí)器方式。M1M0:工作方式選擇位,定時(shí)器/計(jì)數(shù)器的4種工作方式由M1M0設(shè)定。工作方式功能描述0 00 11 01 1工作方式0工作方式1工作方式2工作方式313位計(jì)數(shù)器16位計(jì)數(shù)器自動(dòng)再裝入8位計(jì)數(shù)器定時(shí)器0:分成兩個(gè)8位計(jì)數(shù)器定時(shí)器1:停止計(jì)數(shù)定時(shí)器/計(jì)數(shù)器方式控制寄存器TMOD不能進(jìn)行位尋址,只能用字節(jié)傳送指令設(shè)置定時(shí)器工作方式,低半字節(jié)定義為定時(shí)
7、器0,高半字節(jié)定義為定時(shí)器1。復(fù)位時(shí),TMOD所有位均為0。例:設(shè)定定時(shí)器1為定時(shí)工作方式,要求軟件啟動(dòng)定時(shí)器1按方式2工作。定時(shí)器0為計(jì)數(shù)方式,要求由軟件啟動(dòng)定時(shí)器0,按方式1工作。我們?cè)趺磥?lái)實(shí)現(xiàn)這個(gè)要求呢?大家先看上面TMOD寄存器各位的分布圖第一個(gè)問(wèn)題:控制定時(shí)器1工作在定時(shí)方式或計(jì)數(shù)方式是哪個(gè)位?通過(guò)前面的學(xué)習(xí),我們已知道,C/T位(D6)是定時(shí)或計(jì)數(shù)功能選擇位,當(dāng)C/T=0時(shí)定時(shí)/計(jì)數(shù)器就為定時(shí)工作方式。所以要使定時(shí)/計(jì)數(shù)器1工作在定時(shí)器方式就必需使D6為0。第二個(gè)問(wèn)題:設(shè)定定時(shí)器1按方式2工作。上表中可以看出,要使定時(shí)/計(jì)數(shù)器1工作在方式2,M0(D4)M1(D5)的值必須是1 0
8、。第三個(gè)問(wèn)題:設(shè)定定時(shí)器0為計(jì)數(shù)方式。與第一個(gè)問(wèn)題一樣,定時(shí)/計(jì)數(shù)器0的工作方式選擇位也是C/T(D2),當(dāng)C/T=1時(shí),就工作在計(jì)數(shù)器方式。第四個(gè)問(wèn)題:由軟件啟動(dòng)定時(shí)器0,前面已講過(guò),當(dāng)門控位GATE=0時(shí),定時(shí)/計(jì)數(shù)器的啟停就由軟件控制。第五個(gè)問(wèn)題:設(shè)定定時(shí)/計(jì)數(shù)器工作在方式1,使定時(shí)/計(jì)數(shù)器0工作在方式1,M0(D0)M1(D1)的值必須是0 1。從上面的分析我們可以知道,只要將TMOD的各位,按規(guī)定的要求設(shè)置好后,定時(shí)器/計(jì)靈敏器就會(huì)按我們預(yù)定的要求工作。我們分析的這個(gè)例子最后各位的情況如下:D7 D6 D5 D4 D3 D2 D1 D0 00 10 01 01二進(jìn)制數(shù)00100101
9、=十六進(jìn)制數(shù)25H。所以執(zhí)行MOV TMOD,#25H這條指令就可以實(shí)現(xiàn)上述要求。定時(shí)器/計(jì)數(shù)器控制寄存器TCON:TCON在特殊功能寄存器中,字節(jié)地址為88H,位地址(由低位到高位)為88H一8FH,由于有位地址,十分便于進(jìn)行位操作。TCON的作用是控制定時(shí)器的啟、停,標(biāo)志定時(shí)器溢出和中斷情況。TCON的格式如下圖所示。其中,TFl,TRl,TF0和TR0位用于定時(shí)器/計(jì)數(shù)器;IEl,ITl,IE0和IT0位用于中斷系統(tǒng)。各位定義如下:TF1:定時(shí)器1溢出標(biāo)志位。當(dāng)字時(shí)器1計(jì)滿溢出時(shí),由硬件使TF1置"1",并且申請(qǐng)中斷。進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清"0&q
10、uot;,在查詢方式下用軟件清"0"。TR1:定時(shí)器1運(yùn)行控制位。由軟件清"0"關(guān)閉定時(shí)器1。當(dāng)GATE=1,且INT1為高電平時(shí),TR1置"1"啟動(dòng)定時(shí)器1;當(dāng)GATE=0,TR1置"1"啟動(dòng)定時(shí)器1。TF0:定時(shí)器0溢出標(biāo)志。其功能及操作情況同TF1。TR0:定時(shí)器0運(yùn)行控制位。其功能及操作情況同TR1。IE1:外部中斷1請(qǐng)求標(biāo)志。IT1:外部中斷1觸發(fā)方式選擇位。IE0:外部中斷0請(qǐng)求標(biāo)志。IT0:外部中斷0觸發(fā)方式選擇位。TCON中低4位與中斷有關(guān),我們將在下節(jié)課講中斷時(shí)再給予講解。由于TCON是可以位尋址
11、的,因而如果只清溢出或啟動(dòng)定時(shí)器工作,可以用位操作命令。例如:執(zhí)行"CLR TF0"后則清定時(shí)器0的溢出;執(zhí)行"SETB TR1"后可啟動(dòng)定時(shí)器1開始工作(當(dāng)然前面還要設(shè)置方式定)。定時(shí)器/計(jì)數(shù)器的初始化:由于定時(shí)器/計(jì)數(shù)器的功能是由軟件編程確定的,所以一般在使用定時(shí)/計(jì)數(shù)器前都要對(duì)其進(jìn)行初始化,使其按設(shè)定的功能工作。初始貨的步驟一般如下:1、確定工作方式(即對(duì)TMOD賦值);2、預(yù)置定時(shí)或計(jì)數(shù)的初值(可直接將初值寫入TH0、TL0或TH1、TL1);3、根據(jù)需要開放定時(shí)器/計(jì)數(shù)器的中斷(直接對(duì)IE位賦值);4、啟動(dòng)定時(shí)器/計(jì)數(shù)器(若已規(guī)定用軟件啟動(dòng),則
12、可把TR0或TR1置"1";若已規(guī)定由外中斷引腳電平啟動(dòng),則需給外引腳步加啟動(dòng)電平。當(dāng)實(shí)現(xiàn)了啟動(dòng)要求后,定時(shí)器即按規(guī)定的工作方式和初值開始計(jì)數(shù)或定時(shí))。下面介紹一下確定時(shí)時(shí)/計(jì)數(shù)器初值的具體方法。因?yàn)樵诓煌ぷ鞣绞较掠?jì)數(shù)器位數(shù)不同,因而最大計(jì)數(shù)值也不同。現(xiàn)假設(shè)最大計(jì)數(shù)值為M,那么各方式下的最大值M值如下:方式0:M=213=8 192方式1:M=216=65 536方式2:M=28=256方式3:定時(shí)器0分成兩個(gè)8位計(jì)數(shù)器,所以兩個(gè)M均為256。因?yàn)槎〞r(shí)器/計(jì)數(shù)器是作"加1"計(jì)數(shù),并在計(jì)數(shù)滿溢出時(shí)產(chǎn)生中斷,因此初值X可以這樣計(jì)算:X=M-計(jì)數(shù)值下面舉例說(shuō)
13、明初值的確定方法。例1、選擇T1方式0用于定時(shí),在P1.1輸出周期為1ms方波,晶振fosc=6MHz。解:根據(jù)題意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定時(shí)時(shí)間為500us,因定時(shí)時(shí)間不長(zhǎng),取方式0即可。則M1 M0=0;因是定時(shí)器方式,所以C/T=0;在此用軟件啟動(dòng)T1,所以GATE=0。T0不用,方式字可任意設(shè)置,只要不使其進(jìn)入方式3即可,一般取0,故TMOD=00H。系統(tǒng)復(fù)位后TMOD為0,可不對(duì)TMOD重新清0。下面計(jì)算500us定時(shí)T1初始值:機(jī)器周期T=12/fosc=12/(6×106)Hz=2s設(shè)初值為X,則:(1013-X)
14、5;2×10-6s=500×10-6s X=7942D=1111100000110 B=1F06H因?yàn)樵谧?3位計(jì)數(shù)器用時(shí),TL1的高3位未用,應(yīng)填寫0,TH1占用高8位,所以X的實(shí)際填寫應(yīng)為:X=111100000000110 B=F806H結(jié)果:TH1=F8H,TL1=06H源程序如下:ORG 2000H MOV TL1,#06H;給TL1置初值MOV TH1,#0F8H;給TH1置初值SETB TR1;啟動(dòng)T1 LP1:JBC TF1,LP2;查詢計(jì)數(shù)溢出否?AJMP LP1 LP2:MOV TL1,#06H;重新設(shè)置計(jì)數(shù)初值MOV TH1,#0F8H CPL P1.
15、1;輸出取反AJMP LP1;重復(fù)循環(huán)定時(shí)器/計(jì)數(shù)器的四種工作方式:定T0或T1無(wú)論用作定時(shí)器或計(jì)數(shù)器都有4種工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作狀態(tài)。下面以T1為例,分述各種工作方式的特點(diǎn)和用法。工作方式0:13位方式由TL1的低5位和TH1的8位構(gòu)成13位計(jì)數(shù)器(TL1的高3位無(wú)效)。工作方式0的結(jié)構(gòu)見(jiàn)下圖:為定時(shí)/計(jì)數(shù)選擇:C/T=0,T1為定時(shí)器,定時(shí)信號(hào)為振蕩周期12分頻后的脈沖;C/T=l,T1為計(jì)數(shù)器,計(jì)數(shù)信號(hào)來(lái)自引腳T1的外部信號(hào)。定時(shí)器T1能否啟動(dòng)工作,還受到了R1、GATE和引腳信號(hào)INT1的控制。由圖中的邏輯電路可知,當(dāng)GATE
16、=0時(shí),只要TR1=1就可打開控制門,使定時(shí)器工作;當(dāng)GATE=1時(shí),只有TR1=1且INT1=1,才可打開控制門。GATE,TR1,C/T的狀態(tài)選擇由定時(shí)器的控制寄存器TMOD,TCON中相應(yīng)位狀態(tài)確定,INT1則是外部引腳上的信號(hào)。在一般的應(yīng)用中,通常使GATE=0,從而由TRl的狀態(tài)控制Tl的開閉:TRl=1,打開T1;TRl=0,關(guān)閉T1。在特殊的應(yīng)用場(chǎng)合,例如利用定時(shí)器測(cè)量接于INT1引腳上的外部脈沖高電平的寬度時(shí),可使GATE=1,TRl=1。當(dāng)外部脈沖出現(xiàn)上升沿,亦即INT1由0變1電平時(shí),啟動(dòng)T1定時(shí),測(cè)量開始;一旦外部脈沖出現(xiàn)下降沿,亦即INT1由l變O時(shí)就關(guān)閉了T1。定時(shí)器
17、啟動(dòng)后,定時(shí)或計(jì)數(shù)脈沖加到TLl的低5位,從預(yù)先設(shè)置的初值(時(shí)間常數(shù))開始不斷增1。TL1計(jì)滿后,向THl進(jìn)位。當(dāng)TL1和THl都計(jì)滿之后,置位T1的定時(shí)器回零標(biāo)志TFl,以此表明定時(shí)時(shí)間或計(jì)數(shù)次數(shù)已到,以供查詢或在打開中斷的條件下,可向CPU請(qǐng)求中斷。如需進(jìn)一步定時(shí)/計(jì)數(shù),需用指令重置時(shí)間常數(shù)。方式0是13位計(jì)數(shù)結(jié)構(gòu)的工作方式,其計(jì)數(shù)器由TH0全部8位和TL0的低5位構(gòu)成。當(dāng)TL0的低5位計(jì)數(shù)溢出時(shí),向TH0進(jìn)位,而全部13位計(jì)數(shù)溢出時(shí),則向計(jì)數(shù)溢出標(biāo)志位TF0進(jìn)位。在方式0下,當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是:18192(213)當(dāng)為定時(shí)工作方式時(shí),定時(shí)時(shí)間的計(jì)算公式為:(213-計(jì)數(shù)初
18、值)×晶振周期×12或(213-計(jì)數(shù)初值)×機(jī)器周期其時(shí)間單位與晶振周期或機(jī)器周期相同(ms)。例題1:當(dāng)某單片機(jī)系統(tǒng)的外接晶振頻率為6MHz,該系統(tǒng)的最小定時(shí)時(shí)間為:213-(213-1)×1/(6×106)×12=2×10-6=2(ms)最大定時(shí)時(shí)間為:(213-0)×1/(6×106)×12=16384×10-6=16384(ms)或:最小定時(shí)單位×1013=16384(ms)例題2:設(shè)某單片機(jī)系統(tǒng)的外接晶振頻率為6MHz,使用定時(shí)器1以方式0產(chǎn)生周期為500ms的等寬
19、正方波連續(xù)脈沖,并由P1.0輸出。以查詢方式完成。計(jì)算計(jì)數(shù)初值欲產(chǎn)生500ms的等寬正方波脈沖,只需在P1.0端以250ms為周期交替輸出高低電平即可實(shí)現(xiàn),為此定時(shí)時(shí)間應(yīng)為250ms。使用6MHz晶振,根據(jù)上例的計(jì)算,可知一個(gè)機(jī)器周期為2ms。方式0為13位計(jì)數(shù)結(jié)構(gòu)。設(shè)待求的計(jì)數(shù)初值為X,則:(213-X)×2×10-6=250×10-6求解得:X=213-(250÷2)=8067。二進(jìn)制數(shù)表示為1111110000011。十六進(jìn)制表示,高8位為FCH,放入TH1,即TH1=FCH;低5位為03H。放入TL1,即TL1=03H。TMOD寄存器初始化為把定
20、時(shí)器/計(jì)數(shù)器1設(shè)定為方式0,則M1M0=00;為實(shí)現(xiàn)定時(shí)功能,應(yīng)使C/T=0;為實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器1的運(yùn)行控制,則GATE=0。定時(shí)器/計(jì)數(shù)器0不用,有關(guān)位設(shè)定為0。因此TMOD寄存器應(yīng)初始化為00H。由定時(shí)器控制寄存器TCON中的TR1位控制定時(shí)的啟動(dòng)和停止TR1=1啟動(dòng),TR1=0停止。程序設(shè)計(jì):MOV TMOD,#00H;設(shè)置T1為工作方式0 MOV TH1,#OFCH;設(shè)置計(jì)數(shù)初值MOV TL1,#03H MOV IE,#00H;禁止中斷LOOP:SETB TR1;啟動(dòng)定時(shí)JBC TF1,LOOP1;查詢計(jì)數(shù)溢出AJMP LOOP LOOP1:MOV TH1,#FCH;重新設(shè)置計(jì)數(shù)初值
21、MOV TL1,#03H CLR TF1;計(jì)數(shù)溢出標(biāo)志位清0 CPL P1.0;輸出取反AJMP LOOP;重復(fù)循環(huán)工作方式1:方式1是16位計(jì)數(shù)結(jié)構(gòu)的工作方式,計(jì)數(shù)器由TH0全部8位和TL0全部8位構(gòu)成。與工作方式0基本相同,區(qū)別僅在于工作方式1的計(jì)數(shù)器TL1和TH1組成16位計(jì)數(shù)器,從而比工作方式0有更寬的定時(shí)/計(jì)數(shù)范圍。當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是:165536(216)當(dāng)為定時(shí)工作方式時(shí),定時(shí)時(shí)間計(jì)算公式為:(216-計(jì)數(shù)初值)×晶振周期×12或(216-計(jì)數(shù)初值)×機(jī)器周期例題1:當(dāng)某單片機(jī)系統(tǒng)的外部晶振頻率為6MHz,則最小定時(shí)時(shí)間為:216-(
22、216-1)×1/6×10-6×12=2×10-6=2(ms)最大定時(shí)時(shí)間為:(216-0)×1/6×10-6×12=131072×10-6(s)=131072(ms)131(ms)例題2:某單片機(jī)系統(tǒng)外接晶振頻率為6MHz,使用定時(shí)器1以工作方式1產(chǎn)生周期為500ms的等寬連續(xù)正方波脈沖,并在P1.0端輸出。,但以中斷方式完成。計(jì)算計(jì)數(shù)初值TH1=FFH TL1=83HTMOD寄存器初始化TMOD=10H程序設(shè)計(jì)主程序:MOV TMOD,#10H;定時(shí)器1工作方式1 MOV TH1,#0FFH;設(shè)置計(jì)數(shù)初值MOV
23、 TL1,#0A1H SETB EA;開中斷SETB ET1;定時(shí)器1允許中斷LOOP:SETB TR1;定時(shí)開始HERE:SJMP$;等待中斷中斷服務(wù)程序:MOV TH1,#0FFH;重新設(shè)置計(jì)數(shù)初值MOV TL1,#0A1H CPL P1.0;輸出取反RETI;中斷返回工作方式2 8位自動(dòng)裝入時(shí)間常數(shù)方式。由TLl構(gòu)成8位計(jì)數(shù)器,THl僅用來(lái)存放時(shí)間常數(shù)。啟動(dòng)T1前,TLl和THl裝入相同的時(shí)間常數(shù),當(dāng)TL1計(jì)滿后,除定時(shí)器回零標(biāo)志TFl置位,具有向CPU請(qǐng)求中斷的條件外,THl中的時(shí)間常數(shù)還會(huì)自動(dòng)地裝入TLl,并重新開始定時(shí)或計(jì)數(shù)。所以,工作方式2是一種自動(dòng)裝入時(shí)間常數(shù)的8位計(jì)數(shù)器方式。
24、由于這種方式不需要指令重裝時(shí)間常數(shù),因而操作方便,在允許的條件下,應(yīng)盡量使用這種工作方式。當(dāng)然,這種方式的定時(shí)/計(jì)數(shù)范圍要小于方式0和方式1。工作方式2的結(jié)構(gòu)見(jiàn)下圖.當(dāng)計(jì)數(shù)溢出后,不是像前兩種工作方式那樣通過(guò)軟件方法,而是由預(yù)置寄存器TH以硬件方法自動(dòng)給計(jì)數(shù)器TL重新加載。變軟件加載為硬件加載。初始化時(shí),8位計(jì)數(shù)初值同時(shí)裝入TL0和TH0中。當(dāng)TL0計(jì)數(shù)溢出時(shí),置位TF0,同時(shí)把保存在預(yù)置寄存器TH0中的計(jì)數(shù)初值自動(dòng)加載TL0,然后TL0重新計(jì)數(shù)。如此重復(fù)不止。這不但省去了用戶程序中的重裝指令,而且也有利于提高定時(shí)精度。但這種工作方式下是8位計(jì)數(shù)結(jié)構(gòu),計(jì)數(shù)值有限,最大只能到255。這種自動(dòng)重新
25、加載工作方式非常適用于循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用,例如用于產(chǎn)生固定脈寬的脈沖,此外還可以作串行數(shù)據(jù)通信的波特率發(fā)送器使用。例題1:使用定時(shí)器0以工作方式2產(chǎn)生100ms定時(shí),在P1.0輸出周期為200ms的連續(xù)正方波脈沖。已知晶振頻率fosc=6MHz。計(jì)算計(jì)數(shù)初值6MHz晶振下,一個(gè)機(jī)器周期為2ms,以TH0作重裝載的預(yù)置寄存器,TL0作8位計(jì)數(shù)器,假設(shè)計(jì)數(shù)初值為X,則:(28-X)×2×10-6=100×10-6求解得:X=206D=11001110 B=0CEH把0CEH分別裝入TH0和TL0中:TH0=0CEH,TL0=0CEHTMOD寄存器初始化定時(shí)器/計(jì)數(shù)
26、器0為工式方式2,M1M0=10;為實(shí)現(xiàn)定時(shí)功能C/T=0;為實(shí)現(xiàn)定時(shí)器/計(jì)數(shù)器0的運(yùn)行GATE=0;定時(shí)器/計(jì)數(shù)器1不用,有關(guān)位設(shè)定為0。綜上情況TMOD寄存器的狀態(tài)應(yīng)為02H。程序設(shè)計(jì)(查詢方式)MOV IE,#00H;禁止中斷MOV TMOD,#02H;設(shè)置定時(shí)器0為方式2 MOV TH0,#0CEH;保存計(jì)數(shù)初值MOV TL0,#0CEH;設(shè)置計(jì)數(shù)初值SETB TR0;啟動(dòng)定時(shí)LOOP:JBC TF0,LOOP1;查詢計(jì)數(shù)溢出AJMP LOOP LOOP1:CPL P1.0;輸出方波AJMP LOOP;重復(fù)循環(huán)由于方式2具有自動(dòng)重裝載功能,因此計(jì)數(shù)初值只需設(shè)置一次,以后不再需要軟件重置
27、。程序設(shè)計(jì)(中斷方式)主程序:MOV TMOD,#02H;定時(shí)器0工作方式2 MOV TH0,#0CEH;保存計(jì)數(shù)初值MOV TL0,#0CEH;設(shè)置計(jì)數(shù)初值SETB EA;開中斷SETB ET0;定時(shí)器0允許中斷LOOP:SETB TR0;開始定時(shí)HERE:SJMP$;等待中斷CLP TF0;計(jì)數(shù)溢出標(biāo)志位清0 AJMP LOOP中斷服務(wù)中斷:CPL P1.0;輸出方波RETI;中斷返回例題2:用定時(shí)器1以工作方式2實(shí)現(xiàn)計(jì)數(shù),每計(jì)100次進(jìn)行累加器加1操作。計(jì)算計(jì)數(shù)初值28-100=156D=09CH則TH1=09CH,TL1=09CHTMOD寄存器初始化M1M0=10,C/T=1,GATE
28、=0因此TMOD=60H程序設(shè)計(jì)MOV IE,#00H;禁止中斷MOV TMOD,#60H;設(shè)置計(jì)數(shù)器1為方式2 MOV TH1,#9CH;保存計(jì)數(shù)初值MOV TL1,#9CH;設(shè)置計(jì)數(shù)初值SETB TR1;啟動(dòng)計(jì)數(shù)DEL:JBC TF1,LOOP;查詢計(jì)數(shù)溢出AJMP DEL LOOP:INC A;累加器加1 AJMP DEL;循環(huán)返回工作方式3 2個(gè)8位方式。工作方式3只適用于定時(shí)器0。如果使定時(shí)器1為工作方式3,則定時(shí)器1將處于關(guān)閉狀態(tài)。當(dāng)T0為工作方式3時(shí),THo和TL0分成2個(gè)獨(dú)立的8位計(jì)數(shù)器。其中,TL0既可用作定時(shí)器,又可用作計(jì)數(shù)器,并使用原T0的所有控制位及其定時(shí)器回零標(biāo)志和中
29、斷源。TH0只能用作定時(shí)器,并使用T1的控制位TRl、回零標(biāo)志TFl和中斷源,見(jiàn)下圖。通常情況下,T0不運(yùn)行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時(shí),T1往往用作串行口波特率發(fā)生器(見(jiàn)1.4),TH0用作定時(shí)器,TL0作為定時(shí)器或計(jì)數(shù)器。所以,方式3是為了使單片機(jī)有1個(gè)獨(dú)立的定時(shí)器/計(jì)數(shù)器、1個(gè)定時(shí)器以及1個(gè)串行口波特率發(fā)生器的應(yīng)用場(chǎng)合而特地提供的。這時(shí),可把定時(shí)器l用于工作方式2,把定時(shí)器0用于工作方式3。下才可能使用。這時(shí),T1往往用作串行口波特率發(fā)生器,TH0用作定時(shí)器,TL0作為定時(shí)器或計(jì)數(shù)器。所以,方式3是為了使單片機(jī)有1個(gè)獨(dú)立的定時(shí)器/計(jì)數(shù)器、1
30、個(gè)定時(shí)器以及1個(gè)串行口波特率發(fā)生器的應(yīng)用場(chǎng)合而特地提供的。這時(shí),可把定時(shí)器l用于工作方式2,把定時(shí)器0用于工作方式3。理解內(nèi)容定時(shí)器/計(jì)數(shù)器的應(yīng)用例1、設(shè)fosc=6MHz,利用單片機(jī)內(nèi)定時(shí)/計(jì)數(shù)器及P10口線輸出1000個(gè)脈沖,脈沖周期為2ms,試編程。解:T=12×1/fosc=2us選取T0定時(shí);T1計(jì)數(shù)。設(shè)T0采用中斷方式產(chǎn)生周期為2ms方波,T1對(duì)該方波計(jì)數(shù),當(dāng)輸出至第1000個(gè)脈沖時(shí),使TF1置1。在主程序中用查詢方法,檢測(cè)到TF1變1時(shí),關(guān)掉T0,停止輸出方波。T0、T1參數(shù)的確定:T0模式0、定時(shí):脈寬為脈沖周期的一半所以,X=213-1ms/2us=0001 1110 0000 1100B TH0=0F0H TL0=0CH T1模式1、計(jì)數(shù):N=1000則X=65
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025四川省農(nóng)產(chǎn)品購(gòu)銷合同范本
- 2025企業(yè)借款協(xié)議合同范本
- 2025 果園、草地承包合同
- 房屋租賃合同范本范本
- 政府采購(gòu)委托合同范本
- 市區(qū)房按揭貸款購(gòu)買合同
- 租房看房協(xié)議書范本
- 2025信息技術(shù)服務(wù)購(gòu)銷合同范本
- 2025專利權(quán)許可合同樣本
- 2025年03月浙江麗水市龍泉市事業(yè)單位公開招聘工作人員70人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 如果歷史是一群喵
- 人教版小學(xué)數(shù)學(xué)六下第六單元《統(tǒng)計(jì)與概率》單元集體備課整體教學(xué)設(shè)計(jì)
- 工業(yè)設(shè)計(jì)項(xiàng)目報(bào)價(jià)單模板
- 手術(shù)前呼吸功能評(píng)估
- 針灸優(yōu)勢(shì)病種
- 中華八大菜系-閩菜
- 基于單片機(jī)的恒壓供水系統(tǒng)設(shè)計(jì)(附原理圖、程序清單及外文翻譯)
- 《中醫(yī)診斷學(xué)課件》
- MQL4命令中文詳解手冊(cè)
- 保安外包服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 2023年浙江杭州市屬事業(yè)單位統(tǒng)一招聘工作人員371人筆試參考題庫(kù)(共500題)答案詳解版
評(píng)論
0/150
提交評(píng)論