




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第第9 9章章 MCS-51MCS-51單片機(jī)的單片機(jī)的 定時(shí)器定時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器12 2本章教學(xué)基本要求本章教學(xué)基本要求1掌握掌握MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)、計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)、工作方式以及相關(guān)寄存器的控制方法。工作方式以及相關(guān)寄存器的控制方法。2掌握掌握MCS-51單片機(jī)定時(shí)器單片機(jī)定時(shí)器/計(jì)數(shù)器的匯編語(yǔ)言和計(jì)數(shù)器的匯編語(yǔ)言和C語(yǔ)言編程方法。語(yǔ)言編程方法。重點(diǎn)與難點(diǎn)重點(diǎn)與難點(diǎn)1定時(shí)器定時(shí)器/計(jì)數(shù)器的中斷控制與編程技巧。計(jì)數(shù)器的中斷控制與編程技巧。2定時(shí)器定時(shí)器/計(jì)數(shù)器作為波特率發(fā)生器時(shí)的控制與編計(jì)數(shù)器作為波特率發(fā)生器時(shí)的控制與編程技巧。程技巧。3 3第第9
2、章章 目錄目錄9.1 定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu) 9.1.1 工作方式控制寄存器TMOD 9.1.2 定時(shí)器/計(jì)數(shù)器控制寄存器TCON9.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作方式計(jì)數(shù)器的工作方式 9.2.1 方式0 9.2.2 方式1 9.2.3 方式2 9.2.4 方式3 9.2.5 8052單片機(jī)定時(shí)器/計(jì)數(shù)器249.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用 9.3.1 毫秒級(jí)定時(shí) 9.3.2 超出最大范圍定時(shí)/計(jì)數(shù) 9.3.3 8052單片機(jī)Timer2的應(yīng)用 5內(nèi)容概要內(nèi)容概要工業(yè)檢測(cè)與控制,許多場(chǎng)合都要用到計(jì)數(shù)計(jì)數(shù)或定時(shí)定時(shí)功能。例如,對(duì)外部脈沖進(jìn)行計(jì)數(shù),產(chǎn)生精確
3、的定時(shí)時(shí)間等。C51片內(nèi)有兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器T1、T0,可滿足需要。本章介紹定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)結(jié)構(gòu)與功能功能,2種工作模式工作模式和4種工作方式工作方式,以及相關(guān)的2個(gè)特殊功能寄存器個(gè)特殊功能寄存器TMOD和TCON各位的定義及其編程,最后介紹定時(shí)器/計(jì)數(shù)器的編程及應(yīng)用實(shí)例。69.1 定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu)定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)結(jié)構(gòu)如圖圖9-1所示所示,定時(shí)器/計(jì)數(shù)器T0由特殊功能寄存器TH0、TL0構(gòu)成,定時(shí)器/計(jì)數(shù)器T1由特殊功能寄存器TH1、TL1構(gòu)成。 6圖9-1 AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)框圖7具有定時(shí)器和計(jì)數(shù)器2種工作模式種工作模式,4種工作方式
4、(種工作方式(方式0、方式1、方式2和方式3)。屬于增計(jì)數(shù)器增計(jì)數(shù)器。TMOD用于選擇定時(shí)器/計(jì)數(shù)器T0、T1的工作模式和工作方式。TCON用于控制T0、T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了T0、T1的狀態(tài)。T0、T1不論是工作在定時(shí)器模式還是計(jì)數(shù)器模式,都是對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù),只是計(jì)數(shù)信號(hào)的來(lái)源不同。計(jì)數(shù)器模式計(jì)數(shù)器模式是對(duì)加在T0(P3.4)和T1(P3.5)兩個(gè)引腳上的外部脈沖進(jìn)行計(jì)數(shù)(見(jiàn)圖9-1)。定時(shí)器工作模式定時(shí)器工作模式是對(duì)單片機(jī)的時(shí)鐘振蕩器信號(hào)經(jīng)片內(nèi)7812分頻后的內(nèi)部脈沖信號(hào)計(jì)數(shù)。由于時(shí)鐘頻率是定值,所以可根據(jù)計(jì)數(shù)值根據(jù)計(jì)數(shù)值可計(jì)算出定時(shí)時(shí)間計(jì)算出定時(shí)時(shí)間。計(jì)數(shù)器的起始計(jì)數(shù)都是從
5、計(jì)數(shù)器初值開始從計(jì)數(shù)器初值開始的的。單片機(jī)復(fù)位時(shí)計(jì)數(shù)器的初值為0,也可用指令給計(jì)數(shù)器裝入一個(gè)新的初值。AT89C51的定時(shí)器/計(jì)數(shù)器屬于增1計(jì)數(shù)器。9.1.1 工作方式控制寄存器工作方式控制寄存器TMOD用于選擇定時(shí)器/計(jì)數(shù)器的工作模式和工作方式,字節(jié)地字節(jié)地址址為89H,不能位尋址,格式如圖圖9-2所示所示。9圖圖9-2 TMOD格式格式8位分為兩組,高高4位位控制T1,低低4位位控制T0。TMOD各位的功能。(1)GATE門控位門控位。 0:僅由運(yùn)行控制位TRx(x = 0,1)來(lái)控制定時(shí)器/計(jì)數(shù)器運(yùn)行。 1:用外中斷引腳( 或 )上的電平與運(yùn)行控制位TRx共同來(lái)控制定時(shí)器/計(jì)數(shù)器運(yùn)行。9
6、10(2)M1、M0工作方式選擇位工作方式選擇位M1、M0共有4種編碼,對(duì)應(yīng)于4種工作方式種工作方式的選擇,如表9-1所示。(3)C/ 計(jì)數(shù)器模式和定時(shí)器模式選擇位計(jì)數(shù)器模式和定時(shí)器模式選擇位10T11 0:為定時(shí)器工作模式,對(duì)單片機(jī)的晶體振蕩器12分頻后的脈沖進(jìn)行計(jì)數(shù)。1:為計(jì)數(shù)器工作模式,計(jì)數(shù)器對(duì)外部輸入引腳T0(P3.4)或T1(P3.5)的外部脈沖(負(fù)跳變)計(jì)數(shù)。9.1.2 定時(shí)器定時(shí)器/計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器TCON 字節(jié)地址為88H,可位尋址,位地址為88H8FH。格式如圖9-3所示所示。圖圖9-3 TCON格式格式12在第8章已介紹與外部中斷有關(guān)的低4位。這里僅介紹與定
7、時(shí)器/計(jì)數(shù)器相關(guān)的高4位功能。(1)TF1、TF0計(jì)數(shù)溢出標(biāo)志位。當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出時(shí),該位置“1”。使用查詢方式時(shí),此位作為狀態(tài)位供CPU查詢,但應(yīng)注意查詢有效后,應(yīng)使用軟件及時(shí)將該位清“0”。使用中斷方式時(shí),此位作為中斷請(qǐng)求標(biāo)志位,進(jìn)入中斷服務(wù)程序后由硬件自動(dòng)清“0”。(2)TR1、TR0計(jì)數(shù)運(yùn)行控制位。TR1位(或TR0位)= 1,啟動(dòng)定時(shí)器/計(jì)數(shù)器工作的必要條件。1213TR1位(或TR0位) = 0,停止定時(shí)器/計(jì)數(shù)器工作。該位可由軟件置“1”或清“0”。9.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式4種工作方式分別介紹如下。9.2.1 方式方式0M1、M0=00時(shí),被設(shè)
8、置為工作方式0,等效邏輯結(jié)構(gòu)框圖如圖圖9-4所示所示(以定時(shí)器/計(jì)數(shù)器T1為例,TMOD.5、TMOD.4 = 00)。1314圖圖9-4 定時(shí)器定時(shí)器/計(jì)數(shù)器方式計(jì)數(shù)器方式0邏輯結(jié)構(gòu)框圖邏輯結(jié)構(gòu)框圖13位位計(jì)數(shù)器,由TLx x(x = 0,1)低低5位位和THx高高8位位構(gòu)成。TLx低5位溢出則向THx進(jìn)位,THx計(jì)數(shù)溢出則把TCON中的溢出標(biāo)志位TFx置“1”。1415圖圖9-4的的C/ 位位控制的電子開關(guān)決定了定時(shí)器/計(jì)數(shù)器的兩種工作模式。(1)C/ =0,電子開關(guān)打在上面位置,T1(或T0)為定時(shí)器工作模式,把時(shí)鐘振蕩器12分頻后的脈沖作為計(jì)數(shù)信號(hào)。(2)C/ =1,電子開關(guān)打在下面位
9、置,T1(或T0)為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為P3.4(或P3.5)引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1。GATE位狀態(tài)位狀態(tài)決定定時(shí)器/計(jì)數(shù)器的運(yùn)行控制取決TRx一個(gè)條件還是TRx和 x(x = 0,1)引腳狀態(tài)兩個(gè)條件兩個(gè)條件。15TTTINT16(1) GATE = 0,A點(diǎn)(見(jiàn)圖9-4)電位恒為1,B點(diǎn)電位僅取決于TRx狀態(tài)。TRx = 1,B點(diǎn)為高電平,控制端控制電子開關(guān)閉合,允許T1(或T0)對(duì)脈沖計(jì)數(shù)。TRx = 0,B點(diǎn)為低電平,電子開關(guān)斷開,禁止T1(或T0)計(jì)數(shù)。(2) GATE = 1,B點(diǎn)電位由 (x = 0,1)的輸入電平和TRx的狀態(tài)這兩個(gè)條件來(lái)確
10、定。當(dāng)TRx = 1,且 =1時(shí),B點(diǎn)才為1,控制端控制電子開關(guān)閉合,允許T1(或T0)計(jì)數(shù)。故這種情況下計(jì)數(shù)器是否計(jì)數(shù)是由TRx和 兩個(gè)兩個(gè)條件條件來(lái)共同控制的。INTxxINT17在工作方式在工作方式0下,計(jì)數(shù)器的計(jì)數(shù)值下,計(jì)數(shù)器的計(jì)數(shù)值X范圍為范圍為18192(213)。)。由于由于MCS-51單片機(jī)的單片機(jī)的T0和和T1采用加計(jì)數(shù),因此采用加計(jì)數(shù),因此TH0(TH1),),TL0(TL1)的初值)的初值N=8192-X。如當(dāng)計(jì)數(shù)值。如當(dāng)計(jì)數(shù)值X=1000,則計(jì)數(shù)初,則計(jì)數(shù)初值值N=7192=1C18H,那么,那么TH0(TH1),),TL0(TL1)的值分別)的值分別為為0E0H和和1
11、8H。由于。由于TL0(TL1)為低)為低5為有效,所以該計(jì)數(shù)初為有效,所以該計(jì)數(shù)初值值N不能簡(jiǎn)單地分成高不能簡(jiǎn)單地分成高8位和低位和低8位賦值給位賦值給TH0(TH1),),TL0(TL1)。當(dāng)計(jì)數(shù)初值)。當(dāng)計(jì)數(shù)初值N=7192=1C18H,其二進(jìn)制編碼如下:,其二進(jìn)制編碼如下: 1C18H=0001 1100 0001 1000B 再將再將16位的二進(jìn)制編碼去除最高的位的二進(jìn)制編碼去除最高的3位,保留后面位,保留后面13位,并位,并取低取低5位寫入到位寫入到TL0(TL1),高),高8位寫入到位寫入到TH0(TH1),具體),具體操作如下:操作如下:1C18H=0001 1100 0001
12、 1000 = 1110 0000 11000B 其中:其中:11000B是是TL0(TL1)對(duì)應(yīng)的低)對(duì)應(yīng)的低5位,其位,其16進(jìn)制編碼進(jìn)制編碼為為18H,而,而1110 0000這這8位為位為TH0(TH1)的內(nèi)容,其)的內(nèi)容,其16進(jìn)制進(jìn)制編碼為編碼為0E0H。1718當(dāng)定時(shí)器當(dāng)定時(shí)器/計(jì)數(shù)器工作于方式計(jì)數(shù)器工作于方式0且確定了定時(shí)時(shí)間且確定了定時(shí)時(shí)間T1后,其后,其計(jì)數(shù)初值計(jì)數(shù)初值N的計(jì)算公式為:的計(jì)算公式為:N=8192-T1fosc/12 (9-1)其中其中fosc為系統(tǒng)時(shí)鐘振蕩頻率。假設(shè)單片機(jī)的晶振選為為系統(tǒng)時(shí)鐘振蕩頻率。假設(shè)單片機(jī)的晶振選為12MHz,需要用,需要用T0進(jìn)行進(jìn)行
13、2ms定時(shí)控制,則定時(shí)控制,則T0的初值的初值N計(jì)算為:計(jì)算為:N=8192-T1fosc/12=8192-210-312106/12=6192=1830H=0001 1000 0011 0000B,則對(duì)應(yīng)的,則對(duì)應(yīng)的13位二進(jìn)制編碼為:位二進(jìn)制編碼為:1100 0001 1 0000則則TH0=0C1H,TL0=10H 18199.2.2 方式方式1 當(dāng)M1、M0=01時(shí),定時(shí)器/計(jì)數(shù)器工作于方式方式1,這時(shí)定時(shí)器/計(jì)數(shù)器的等效電路邏輯結(jié)構(gòu)如圖圖9-5所示。 方式方式1和方式和方式0的差別的差別僅僅在于計(jì)數(shù)器的位數(shù)計(jì)數(shù)器的位數(shù)不同,方式1為16位計(jì)數(shù)器位計(jì)數(shù)器,由THx高8位和TLx低8位構(gòu)
14、成(x = 0,1),方式0則為13位計(jì)數(shù)器,有關(guān)控制狀態(tài)位的含義(GATE、 、TFx、TRx)與方式0相同。TC/TC/20 20圖圖9-5 定時(shí)器定時(shí)器/計(jì)數(shù)器方式計(jì)數(shù)器方式1邏輯結(jié)構(gòu)框圖邏輯結(jié)構(gòu)框圖21在工作方式在工作方式1下,計(jì)數(shù)器的計(jì)數(shù)值下,計(jì)數(shù)器的計(jì)數(shù)值X范圍是:范圍是:165536(216)當(dāng)定時(shí)器當(dāng)定時(shí)器/計(jì)數(shù)器工作于方式計(jì)數(shù)器工作于方式1且確定了定時(shí)時(shí)間且確定了定時(shí)時(shí)間T1后,其計(jì)后,其計(jì)數(shù)初值數(shù)初值N的計(jì)算公式為:的計(jì)算公式為:N=65536-T1fosc/12 (9-2)則寫入到則寫入到8位寄存器位寄存器TH0(TH1),),TL0(TL1)值分別為:)值分別為:TH0
15、(TH1)N/256TL0(TL1)=N%25621229.2.3 方式方式2 方式0和方式1的最大特點(diǎn)是計(jì)數(shù)溢出后,計(jì)數(shù)器為全0。因此在循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在用指令反復(fù)存在用指令反復(fù)裝入計(jì)數(shù)初值的裝入計(jì)數(shù)初值的問(wèn)題問(wèn)題。這不僅影響定時(shí)精度,也給程序設(shè)計(jì)帶來(lái)麻煩。方式2就是針對(duì)此問(wèn)題而設(shè)置的。 當(dāng)M1、M0為10時(shí),定時(shí)器/計(jì)數(shù)器處于工作方式2,這時(shí)定時(shí)器/計(jì)數(shù)器的等效邏輯結(jié)構(gòu)如圖圖9-6所示所示(以定時(shí)器T1為例,x= 1)。2323圖9-6 定時(shí)器/計(jì)數(shù)器方式2邏輯結(jié)構(gòu)框圖24 定時(shí)器/計(jì)數(shù)器的方式方式2為自動(dòng)為自動(dòng)恢復(fù)初值恢復(fù)初值(初值自動(dòng)裝入)的8位位定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器
16、。 TLx(x = 0,1)作為常數(shù)緩沖器,當(dāng)TLx計(jì)數(shù)溢出時(shí),在溢出標(biāo)志TFx置“1”的同時(shí),還自動(dòng)將自動(dòng)將THx中的初值送至中的初值送至TLx,使TLx從初值開始重新計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器的方式2工作過(guò)程如圖9-7所示。圖圖9-7 方式方式2工作過(guò)程工作過(guò)程25該方式可省去用戶軟件中重裝初值的指令執(zhí)行時(shí)間,簡(jiǎn)化定時(shí)初值的計(jì)算方法,可以相當(dāng)精確地確定相當(dāng)精確地確定定時(shí)時(shí)間定時(shí)時(shí)間。缺點(diǎn):計(jì)數(shù)結(jié)構(gòu)只有計(jì)數(shù)結(jié)構(gòu)只有8位,計(jì)數(shù)值有限,最大只能計(jì)數(shù)位,計(jì)數(shù)值有限,最大只能計(jì)數(shù)到到255。所以這種工作方式很適合于適合于那些重復(fù)計(jì)數(shù)重復(fù)計(jì)數(shù)的應(yīng)用場(chǎng)合,也可以當(dāng)作串行數(shù)據(jù)通信的波特率發(fā)生器串行數(shù)據(jù)通信的波特
17、率發(fā)生器使用。 25269.2.4 方式方式3是為增加一個(gè)增加一個(gè)8位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器而設(shè),使AT89S51單片機(jī)具有3個(gè)個(gè)定時(shí)器/計(jì)數(shù)器。方式方式3只適用于只適用于T0,T1不能工作在方式不能工作在方式3。T1處于方式3時(shí)相當(dāng)于TR1= 0,停止計(jì)數(shù)(此時(shí)T1可用來(lái)作為串行口波特率產(chǎn)生器)。1工作方式工作方式3下的下的T0TMOD的低的低2位為位為11時(shí),T0的工作方式被選為方式3,各引腳與T0的邏輯關(guān)系如圖圖9-8所示所示。定時(shí)器/計(jì)數(shù)器T0分為分為兩個(gè)獨(dú)立的兩個(gè)獨(dú)立的8位計(jì)數(shù)器位計(jì)數(shù)器TL0和和TH0,TL0既可以作為計(jì)數(shù)器使用,也可以作為定時(shí)器使用,定時(shí)器/計(jì)數(shù)器0的各控制
18、位和引腳信號(hào)全歸它使用。2627 27圖圖9-8 定時(shí)器/計(jì)數(shù)器T0方式3的邏輯結(jié)構(gòu)框圖28 TF0 ,而TH0被固定為一個(gè)固定為一個(gè)8位定時(shí)器位定時(shí)器(不能作為外部計(jì)數(shù)模式),并借用定時(shí)器T1的狀態(tài)控制位TR1和TF1,同時(shí)占用定時(shí)器T1的中斷請(qǐng)求源TF1。實(shí)際上此時(shí)T1只能作為波特率發(fā)生器使用。2T0工作在方式工作在方式3時(shí)時(shí)T1的各種工作方式的各種工作方式 一般情況下,當(dāng)當(dāng)T1用作串行口的波特率發(fā)生器時(shí),用作串行口的波特率發(fā)生器時(shí),T0才工作在方式才工作在方式3。T0處于工作方式3時(shí),T1可定為方式0、方式1和方式2,用來(lái)作為串行口的波特率發(fā)生器,或不需要中斷的場(chǎng)合。29(1 1)T1T
19、1工作在方式工作在方式0 0T1的控制字中M1、M0 = 00時(shí),T1工作在方式0,工作示意圖如圖圖9-9所示所示。 29圖9-9 T0工作在方式3時(shí)T1為方式0的工作示意圖30(2)T1工作在方式工作在方式1當(dāng)T1的控制字中M1、M0 = 01時(shí),T1工作在方式1,工作示意圖如圖9-10所示。 30圖圖9-10 T0工作在方式3時(shí)T1為方式1的工作示意圖31(3)T1工作在方式工作在方式2當(dāng)T1的控制字中M1、M0 = 10時(shí),T1的工作方式為方式2,工作示意圖如圖9-11所示。 31圖圖9-11 T0工作在方式3時(shí)T1為方式2的工作示意圖32(4)T1設(shè)置在方式設(shè)置在方式3 當(dāng)T0設(shè)置在方
20、式3,再把T1也設(shè)成方式3,此時(shí)T1停止計(jì)數(shù)停止計(jì)數(shù)。注意事項(xiàng):對(duì)外部輸入的計(jì)數(shù)信號(hào)的要求注意事項(xiàng):對(duì)外部輸入的計(jì)數(shù)信號(hào)的要求當(dāng)定時(shí)器/計(jì)數(shù)器工作在計(jì)數(shù)器模式時(shí),計(jì)數(shù)脈沖來(lái)自外部輸入引腳T0或T1。當(dāng)輸入信號(hào)產(chǎn)生負(fù)跳變時(shí),計(jì)數(shù)器的值增1。每個(gè)機(jī)器周期的S5P2期間,都對(duì)外部輸入引腳T0或T1進(jìn)行采樣。如在第一個(gè)機(jī)器周期中采得的值為1,而在下一個(gè)機(jī)器周期中采得的值為0,則在緊跟著的再下一個(gè)機(jī)器周期S3P1期間,計(jì)數(shù)器加1。由于確認(rèn)一次負(fù)跳變要花2個(gè)機(jī)器周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。 33例如,選用6MHz頻率的晶體,允許輸入的脈沖頻率最高為250kHz。如果選
21、用12MHz頻率的晶體,則可輸入最高頻率為500kHz的外部脈沖。對(duì)于外部輸入信號(hào)的占空比占空比并沒(méi)有什么限制并沒(méi)有什么限制,但為了確保某一給定電平在變化之前能被采樣一次,則這一電平至少要保持一個(gè)機(jī)器周期至少要保持一個(gè)機(jī)器周期。34故對(duì)外部輸入信號(hào)的要求如圖圖6-12所示,圖中,Tcy為機(jī)器周期。圖圖 對(duì)外部計(jì)數(shù)輸入信號(hào)的要求對(duì)外部計(jì)數(shù)輸入信號(hào)的要求369.3 9.3 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用在使用單片機(jī)定時(shí)器在使用單片機(jī)定時(shí)器/計(jì)數(shù)器功能時(shí),可以按照以下步驟進(jìn)行:計(jì)數(shù)器功能時(shí),可以按照以下步驟進(jìn)行:1定時(shí)器定時(shí)器/計(jì)數(shù)器初始化計(jì)數(shù)器初始化在初始化階段,根據(jù)需要設(shè)
22、置寄存器在初始化階段,根據(jù)需要設(shè)置寄存器TMOD內(nèi)容。內(nèi)容。2計(jì)算計(jì)數(shù)計(jì)算計(jì)數(shù)/定時(shí)器的計(jì)數(shù)初值定時(shí)器的計(jì)數(shù)初值N在定時(shí)器方式下,其時(shí)鐘源為系統(tǒng)振蕩時(shí)鐘經(jīng)在定時(shí)器方式下,其時(shí)鐘源為系統(tǒng)振蕩時(shí)鐘經(jīng)12分頻后計(jì)數(shù),分頻后計(jì)數(shù),計(jì)數(shù)初值的計(jì)算公式可參考式計(jì)數(shù)初值的計(jì)算公式可參考式(9-2)。3啟動(dòng)計(jì)數(shù)啟動(dòng)計(jì)數(shù)/定時(shí)器定時(shí)器在進(jìn)行計(jì)數(shù)過(guò)程中,啟動(dòng)計(jì)數(shù)器還受到在進(jìn)行計(jì)數(shù)過(guò)程中,啟動(dòng)計(jì)數(shù)器還受到GATE的影響,這在前的影響,這在前面已經(jīng)介紹過(guò)。如果激活為面已經(jīng)介紹過(guò)。如果激活為GATE=1的方式,則啟動(dòng)定時(shí)的方式,則啟動(dòng)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器還與還與GATE相關(guān)的外部管腳(相關(guān)的外部管腳(P3.3、P3.4管
23、腳)上的電平變化有關(guān)管腳)上的電平變化有關(guān);如果;如果GATE=0,啟動(dòng)定時(shí)器,則只需控制,啟動(dòng)定時(shí)器,則只需控制TR0或或TR1,將其置,將其置“1”,則啟動(dòng)相應(yīng)的定時(shí)器。,則啟動(dòng)相應(yīng)的定時(shí)器。 36374 4種方式,方式種方式,方式0 0與方式與方式1 1基本相同,只是計(jì)數(shù)位數(shù)不同。方基本相同,只是計(jì)數(shù)位數(shù)不同。方式式0 0初值計(jì)算復(fù)雜,初值計(jì)算復(fù)雜,一般不用方式一般不用方式0 0,而,而用方式用方式1 1。9.3.1 9.3.1 方式方式1 1的應(yīng)用的應(yīng)用【例例1 1】假設(shè)系統(tǒng)時(shí)鐘頻率采用假設(shè)系統(tǒng)時(shí)鐘頻率采用6MHz6MHz,在在P1.0P1.0引腳上輸出一引腳上輸出一個(gè)個(gè)周期為周期為2
24、ms2ms的的方波方波,如,如圖圖所示。所示。3737圖圖 P1.0引腳上輸出周期為引腳上輸出周期為2ms的方波的方波38基本思想基本思想:方波周期:方波周期T0T0確定,確定,T0T0每隔每隔1ms1ms計(jì)數(shù)溢出計(jì)數(shù)溢出1 1次,次,即即T0T0每隔每隔1ms1ms產(chǎn)生一次中斷,產(chǎn)生一次中斷,CPUCPU響應(yīng)中斷后,在中斷服務(wù)響應(yīng)中斷后,在中斷服務(wù)子程序中對(duì)子程序中對(duì)P1.0P1.0取反取反, ,如如圖圖所示。為此要做如下幾步工作。所示。為此要做如下幾步工作。 (1 1)計(jì)算計(jì)數(shù)初值)計(jì)算計(jì)數(shù)初值X X機(jī)器周期機(jī)器周期 = 2= 2 s = 2s = 2 10 106 6s s設(shè)需要設(shè)需要裝
25、入裝入T0T0的的初值為初值為X X,則有,則有(2(21616X X) ) 2 2 10106 6=1=1 10 103 3,2 21616X X=500=500,X X=65036=65036。X X化為十六進(jìn)制數(shù),即:化為十六進(jìn)制數(shù),即: 65036 = FE0CH 65036 = FE0CH 。T0T0的的初值初值為為TH0 =FEHTH0 =FEH,TL0 = 0CHTL0 = 0CH。383839(2)初始化程序設(shè)計(jì))初始化程序設(shè)計(jì)采用定時(shí)器中斷方式中斷方式工作。包括定時(shí)器初始化和中斷系統(tǒng)初始化,主要是對(duì)寄存器寄存器IP、IE、TCON、TMOD的相應(yīng)位進(jìn)行正確的設(shè)置,并將計(jì)數(shù)初值
26、送入定時(shí)器中。(3)程序設(shè)計(jì))程序設(shè)計(jì)中斷服務(wù)子程序除了完成所要求的產(chǎn)生方波產(chǎn)生方波的工作之外,還要注意將計(jì)數(shù)初值重新裝入定時(shí)器初值重新裝入定時(shí)器,為下一次產(chǎn)生中斷做準(zhǔn)備。本例,主程序主程序用一條轉(zhuǎn)至自身的短跳轉(zhuǎn)指令來(lái)代替。393940參考程序如下:參考程序如下: ORG0000H;程序入口RESET:AJMP MAIN ;轉(zhuǎn)主程序 ORG 000BH ;T0中斷入口 AJMP IT0P;轉(zhuǎn)T0中斷處理程序IT0P ORG 0100H;主程序入口MAIN: MOV SP,#60H;設(shè)堆棧指針 MOV TMOD,#01H;設(shè)置T0為方式1定時(shí) ACALL PT0M0;調(diào)用初始化子程序PT0M0H
27、ERE: AJMP HERE ;原地循環(huán),等待中斷404041PT0M0: MOV TL0,#0CH;T0初始化,裝初值的低8位 MOV TH0,#0FEH;裝初值的高8位 SETB ET0;允許T0中斷 SETB EA ;總中斷允許 SETB TR0;啟動(dòng)T0 RETIT0P: MOV TL0,#0CH;中斷子程序,T0重裝初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的狀態(tài)取反 RETI程序說(shuō)明:程序說(shuō)明:當(dāng)單片機(jī)復(fù)位時(shí),從程序入口0000H跳向主程序MAIN處執(zhí)行。其中調(diào)用了T0初始化子程序PT0M0。414142子程序返回后,程序執(zhí)行程序執(zhí)行“AJMP HERE”指令,
28、則指令,則循環(huán)等待。循環(huán)等待。當(dāng)響應(yīng)響應(yīng)T0定時(shí)中斷定時(shí)中斷時(shí),則跳向T0中斷入口,再?gòu)腡0中斷入口跳向IT0P標(biāo)號(hào)處執(zhí)行T0中斷服務(wù)子程序。當(dāng)執(zhí)行完中斷返回的指令執(zhí)行完中斷返回的指令“RETI”后,又返回?cái)帱c(diǎn)處繼續(xù)執(zhí)行循環(huán)指令“AJMP HERE”。在實(shí)際的程序中,“AJMP HERE” 實(shí)際上是一段主程序。當(dāng)下一次定時(shí)器T0的1ms定時(shí)中斷發(fā)生時(shí),再跳向T0中斷入口,從而重復(fù)執(zhí)行上述過(guò)程。如CPU不做其他工作,也可用查詢方式也可用查詢方式進(jìn)行控制,程序要簡(jiǎn)單得多。424243查詢方式參考程序:查詢方式參考程序: MOVTMOD,#01H;設(shè)置T0為方式1LOOP: MOVTH0,#0FEH
29、 ;T0置初值 MOVTL0,# 0CH SETBTR0 ;接通T0LOOP1:JNB TF0,LOOP1 ;查TF0,TF0 =0, T0未溢出; ;TF0 =1, T0溢出, CLRTR0 ;T0溢出, 關(guān)斷T0 CPLP1.0 ;P1.0的狀態(tài)求反 SJMPLOOP查詢程序雖簡(jiǎn)單程序雖簡(jiǎn)單,但CPU必須要不斷查詢TF0標(biāo)志,工作效率低效率低。434344【例例2】系統(tǒng)時(shí)鐘為6MHz,編寫定時(shí)器T0產(chǎn)生1s定時(shí)的程序?;舅枷耄夯舅枷耄翰捎枚〞r(shí)器模式。因定時(shí)時(shí)間較長(zhǎng),首先確定采用哪一種工作方式采用哪一種工作方式。時(shí)鐘為6MHz的條件下,定時(shí)器各種工作方式最長(zhǎng)可定時(shí)時(shí)間:方式方式0最長(zhǎng)可定
30、時(shí)16.384ms;方式方式1最長(zhǎng)可定時(shí)131.072ms;方式方式2最長(zhǎng)可定時(shí)512 s。由上可見(jiàn),可選選方式方式1,每隔,每隔100ms中斷一次中斷一次,中斷中斷10次次為1s。444445(1)計(jì)算計(jì)數(shù)初值)計(jì)算計(jì)數(shù)初值X因?yàn)?216 X) 2 106 = 101,所以X = 15536 = 3CB0H。因此TH0 = 3CH,TL0 = B0H。(2)10次計(jì)數(shù)的實(shí)現(xiàn)次計(jì)數(shù)的實(shí)現(xiàn)對(duì)于中斷10次的計(jì)數(shù),采用B寄存器寄存器作為中斷次數(shù)計(jì)數(shù)器中斷次數(shù)計(jì)數(shù)器。(3)程序設(shè)計(jì))程序設(shè)計(jì)參考程序如下: ORG0000H;程序運(yùn)行入口RESET:LJMP MAIN ;跳向主程序入口MAIN ORG0
31、00BH ;T0的中斷入口 LJMPIT0P;轉(zhuǎn)T0中斷處理子程序IT0P ORG1000H;主程序入口454546MAIN:MOVSP,#60H;設(shè)堆棧指針 MOVB,#0AH;設(shè)循環(huán)次數(shù)10次 MOVTMOD,#01H;設(shè)置T0工作在方式1定時(shí) MOV TL0,#0B0H;給T0設(shè)初值 MOV TH0,#3CH SETBET0;允許T0中斷 SETBEA ;總中斷允許 SETBTR0;啟動(dòng)T0HERE: SJMPHERE;原地循環(huán),等待中斷464647IT0P: MOVTL0,#0B0H ;T0中斷子程序,T0重裝初值 MOVTH0,#3CH DJNZB,RTURN;B中斷次數(shù)計(jì)數(shù),減1非
32、0則;中斷返回 CLRTR0 ;1s定時(shí)時(shí)間到,停止T0工作SETBF0;1s定時(shí)時(shí)間到標(biāo)志F0置1RTURN:RETI程序說(shuō)明:程序說(shuō)明:不論1s定時(shí)時(shí)間是否已到,都返回到“SJMP HERE”指令處。“SJMP HERE”指令實(shí)際是一段主程序。在這段主程序中再通過(guò)對(duì)再通過(guò)對(duì)F0標(biāo)志標(biāo)志的的判定判定,可知1s定時(shí)是否到,再進(jìn)行具體處理。4747489.3.2 方式方式2的應(yīng)用的應(yīng)用方式2是一個(gè)可以自動(dòng)重新裝載初值自動(dòng)重新裝載初值的8位計(jì)數(shù)器/定時(shí)器??墒∪ナ∪ブ匮b初值指令。當(dāng)某個(gè)定時(shí)器/計(jì)數(shù)器不使用時(shí),可擴(kuò)展一個(gè)擴(kuò)展一個(gè)負(fù)跳沿觸負(fù)跳沿觸發(fā)發(fā)的的外中斷源外中斷源?!纠? 3】擴(kuò)展一個(gè)負(fù)跳沿觸
33、發(fā)的外部中斷源負(fù)跳沿觸發(fā)的外部中斷源,把定時(shí)器/計(jì)數(shù)器T0腳腳作為外部中斷請(qǐng)求輸入端外部中斷請(qǐng)求輸入端,溢出標(biāo)志TF0作為外中斷請(qǐng)求標(biāo)志。基本思想:基本思想:設(shè)為方式2(自動(dòng)裝入常數(shù)方式)計(jì)數(shù)模式,TH0、TL0初值初值均為0FFH。當(dāng)T0腳發(fā)生負(fù)跳變時(shí),T0計(jì)數(shù)溢出,TF0置“1”,單片機(jī)發(fā)出中斷請(qǐng)求。484849初始化程序: ORG0000H AJMPIINI;跳到初始化程序 ORG000BH AJMPIT0P;跳到外中斷處理程序IINI:MOV TMOD,#06H;設(shè)置T0為方式2 MOV TL0,#0FFH;設(shè)T0初值 MOV TH0,#0FFH SETB ET0;允許T0中斷 SET
34、B EA;總中斷允許 SETBTR0;啟動(dòng)T0 IT0P: 外中斷處理程序段外中斷處理程序段 494950程序說(shuō)明:程序說(shuō)明:當(dāng)連接在P3.4(T0腳)的外部中斷請(qǐng)求輸入腳電平發(fā)生負(fù)跳變時(shí),TL0加1,產(chǎn)生溢出,TF0置“1”,向單片機(jī)發(fā)出中斷請(qǐng)求,同時(shí)TH0的內(nèi)容的內(nèi)容0FFH送TL0,即TL0恢復(fù)初值0FFH。P3.4腳相當(dāng)于一個(gè)腳相當(dāng)于一個(gè)負(fù)跳沿負(fù)跳沿觸發(fā)的觸發(fā)的外中斷請(qǐng)求源外中斷請(qǐng)求源輸入輸入。對(duì)P3.5也可做類似的處理?!纠?】 當(dāng)T0(P3.4)引腳上發(fā)生負(fù)跳變時(shí),作為P1.0引腳產(chǎn)生方波的啟動(dòng)信號(hào)。開始從P1.0腳腳上輸出一個(gè)周期周期為為1ms的方波方波,如圖圖所示所示(系統(tǒng)時(shí)
35、鐘6MHz)。505051基本思想:基本思想:T0設(shè)為方式方式1計(jì)數(shù)計(jì)數(shù),初值初值為FFFFH。當(dāng)外部計(jì)數(shù)輸入端T0(P3.4)發(fā)生一次負(fù)跳變發(fā)生一次負(fù)跳變時(shí),T0加1且溢出溢出,溢出標(biāo)志TF0置“1”,向CPU發(fā)出中斷請(qǐng)求,此時(shí)T0相當(dāng)于一個(gè)負(fù)跳沿觸發(fā)的外部中斷源。進(jìn)入T0中斷程序后,F(xiàn)0標(biāo)志置“1”,說(shuō)明T0引腳上已接收過(guò)負(fù)跳變信號(hào)。T1定義為方式方式2定時(shí)定時(shí)。在T0引腳產(chǎn)生一次負(fù)跳變后,啟動(dòng)T1每每500 s產(chǎn)生一次中斷產(chǎn)生一次中斷,在中斷服中斷服務(wù)子程序務(wù)子程序中對(duì)P1.0求反求反,使P1.0產(chǎn)生周期周期1ms的方波。由于省去重新裝初值指令,所以可產(chǎn)生精確精確的定時(shí)時(shí)間。515152
36、 5252圖圖 負(fù)跳變觸發(fā)輸出一個(gè)周期為負(fù)跳變觸發(fā)輸出一個(gè)周期為1ms1ms的方波的方波53(2)計(jì)算)計(jì)算T1的初值的初值設(shè)T1的初值為x,則(28 x) 2 106 = 5 104x = 28 250 = 6 = 06H(3)程序設(shè)計(jì))程序設(shè)計(jì)參考程序參考程序: ORG 0000H;程序入口RESET:LJMP MAIN ;跳向主程序MAIN ORG 000BH ;T0的中斷入口 LJMP IT0P ;轉(zhuǎn)T0中斷服務(wù)程序 ORG 001BH;T1的中斷入口 535354LJMP IT1P ;轉(zhuǎn)T1中斷服務(wù)程序 ORG 0100H;主程序入口MAIN: MOV SP,#60H;設(shè)堆棧指針 A
37、CALL PT0M2;調(diào)用對(duì)T0,T1初始化子程序LOOP: MOV C,F(xiàn)0 ;T0是否是否產(chǎn)產(chǎn)生過(guò)中斷,若產(chǎn)生;過(guò),F(xiàn)0置1 JNC LOOP;T0未產(chǎn)生中斷,C=0,則跳;到LOOP,等待T0中斷 SETB ET1 ;允許T1產(chǎn)生定時(shí)中斷SETB TR1 ;啟動(dòng)T1HERE: AJMP HERE545455PT0M2: MOV TMOD,#26H ;對(duì)T0,T1初始化,T0方式1;計(jì)數(shù),T1方式2定時(shí) MOV TL0,#0FFH ;T0置初值 MOV TH0,#0FFH SETB ET0;允許T0中斷 MOV TL1,#06H;T1置初值 MOV TH1,#06H CLR F0;把T0已
38、發(fā)生中斷標(biāo)志F0清0 SETB EA;總中斷允許 SETB TR0;啟動(dòng)T0 RET555556IT0P: CLRTR0 ;T0中斷服務(wù)程序中斷服務(wù)程序,停止T0計(jì)數(shù) SETBF0 ;把T0引腳接收過(guò)負(fù)脈沖標(biāo)志F0置1,;即接收過(guò)負(fù)跳變 RETIIT1P: CPL P1.0;T1中斷服務(wù)程序中斷服務(wù)程序,P1.0位取反 RETI程序說(shuō)明:程序說(shuō)明:當(dāng)單片機(jī)復(fù)位時(shí),從0000H跳向主程序MAIN處執(zhí)行程序。其中調(diào)用了對(duì)T0,T1初始化子程序PT0M2。子程序返回后執(zhí)行標(biāo)號(hào)LOOP處指令,循環(huán)等待T0引腳上負(fù)脈沖的到來(lái)。由于負(fù)脈沖到來(lái)的標(biāo)志位F0的復(fù)位初始值為0,所以程序就在標(biāo)號(hào)LOOP處循環(huán)等待
39、。565657當(dāng)T0(P3.4)腳)腳發(fā)生負(fù)跳變發(fā)生負(fù)跳變時(shí),由于T0計(jì)數(shù)溢出,則跳向T0中斷服務(wù)子程序。此時(shí)停止T0計(jì)數(shù),并把T0引腳接收過(guò)負(fù)脈沖的標(biāo)志F0置1。當(dāng)中斷返回中斷返回時(shí),由于F0已被置已被置1,則程序跳出LOOP處的循環(huán)等待。此時(shí)執(zhí)行指令來(lái)允許T1中斷,并啟動(dòng)T1定時(shí),然后執(zhí)行“AJMP HERE”指令,循環(huán)等待,等待等待T1的的500 s定時(shí)中斷定時(shí)中斷到來(lái)。當(dāng)T1的500s定時(shí)中斷產(chǎn)生時(shí),則進(jìn)入則進(jìn)入T1的中斷服務(wù)子的中斷服務(wù)子程序程序IT1P,把P1.0腳電平取反。由于是自動(dòng)裝初值,省去對(duì)T1重裝初值指令。中斷返回后,到“AJMP HERE” 處等待T1的500s定時(shí)中斷
40、。如此重復(fù),即得到圖波形。575758【例例5】 利用定時(shí)器T1的方式方式2計(jì)數(shù)計(jì)數(shù),每計(jì)滿計(jì)滿100個(gè)個(gè)數(shù),將P1.0取反。本例是方式方式2計(jì)數(shù)模式計(jì)數(shù)模式的應(yīng)用舉例。(1)選擇工作方式)選擇工作方式外部信號(hào)由T1(P3.5)引腳輸入,每發(fā)生一次負(fù)跳變計(jì)數(shù)器便加1,每輸入100個(gè)脈沖,計(jì)數(shù)器將產(chǎn)生溢出中斷,在中斷服務(wù)程序中將P1.0取反一次。T1工作在方式方式2的控制字TMOD = 60H。不使用T0時(shí),TMOD低4位任取,但不能使T0為方式3,這里取全0。(2)計(jì)算)計(jì)算T1的初值的初值X = 28 100 = 156 = 9CHTL1的初值為9CH,重裝初值寄存器TH1 = 9CH。58
41、5859(3)參考程序:)參考程序: ORG0000H;程序運(yùn)行入口 LJMP MAIN;跳向主程序MAIN ORG001BH;T1中斷服務(wù)程序入口 CPLP1.0;P1.0位取反 RETI ORG0100H;主程序入口MAIN: MOV TMOD,#60H;設(shè)置T1為方式2計(jì)數(shù) MOVTL0,#9CH ;T0置初值 MOVTH0,#9CH SETBTR1 ;啟動(dòng)T1HERE: AJMPHEREEND 5959609.3.3 方式方式3的應(yīng)用的應(yīng)用方式方式3下的下的T0和和T1大不相同大不相同。T0工作在方式3,TL0和TH0被分成兩個(gè)獨(dú)立的8位定時(shí)器/計(jì)數(shù)器。其中,TL0可作為8位的定時(shí)器/
42、計(jì)數(shù)器,而TH0只能作為8位的定時(shí)器。此時(shí)T1只能工作在方式0、1或2。一般情況下,當(dāng)T1用作串行口波特率發(fā)生器串行口波特率發(fā)生器時(shí),T0才設(shè)置為方式方式3。此時(shí),常把定時(shí)器T1設(shè)置為方式方式2,用作波特率發(fā)生器。606061【例例6】假設(shè)某AT89S51單片機(jī)應(yīng)用系統(tǒng)的兩個(gè)外部中斷源已被占用,設(shè)置T1工作在方式工作在方式2,用作波特率發(fā)生器,用作波特率發(fā)生器。現(xiàn)要求增加一個(gè)要求增加一個(gè)外部中斷源外部中斷源,并控制控制P1.0引腳輸出一個(gè)引腳輸出一個(gè)5kHz(周期為(周期為200 s)的)的方波方波。設(shè)時(shí)鐘為12MHz?;舅枷耄夯舅枷耄涸O(shè)置TL0工作在方式3計(jì)數(shù)模式,TL0的初值設(shè)為0FF
43、H,當(dāng)檢測(cè)到檢測(cè)到T0腳信號(hào)出現(xiàn)腳信號(hào)出現(xiàn)負(fù)跳變負(fù)跳變時(shí),TL0溢出,同時(shí)向CPU申請(qǐng)中斷,這里T0腳作為一個(gè)負(fù)跳沿觸發(fā)的腳作為一個(gè)負(fù)跳沿觸發(fā)的外部中斷請(qǐng)求輸入端外部中斷請(qǐng)求輸入端。在中斷處理子程序中,啟動(dòng)TH0,TH0事先被設(shè)置為方式方式3的的100 s定時(shí)定時(shí),從而控制控制P1.0輸輸出周期為出周期為200 s的方波信號(hào)的方波信號(hào),如圖圖所示所示。6161626262圖圖 定時(shí)器定時(shí)器P1.0P1.0輸出的方波信號(hào)輸出的方波信號(hào)63(1)初值)初值X計(jì)算計(jì)算TL0的初值設(shè)為0FFH。5kHz方波方波的周期為周期為200 s,因此TH0的定時(shí)時(shí)間為100 s。 初值X計(jì)算:(28 X) 1
44、106 = 1 104 X = 28 100 = 156 = 9CH(2)程序設(shè)計(jì))程序設(shè)計(jì)ORG0000H LJMPMAIN ORG 000BH ;TL0中斷入口,TL0使用T0的中斷 LJMP TL0INT ;跳向TL0中斷服務(wù)程序, TL0占用T0中斷 636364ORG 001BH;TH0中斷入口,T1為方式3時(shí),TH0;使用了T1的中斷LJMP TH0INT ;跳向TH0中斷服務(wù)程序ORG 0100H;主程序入口MAIN: MOVTMOD,#27H ;T0方式3,T1方式2定時(shí)作串;行口波特率發(fā)生器 MOVTL0,#0FFH ;置TL0初值 MOVTH0,#9CH;置TH0初值 MO
45、VTL1,#datal ;TL1裝入串口波特率常數(shù)MOV TH1,#datah;TH1裝入串口波特率常數(shù) MOV TCON,#55H;允許T0中斷 646465MOVIE,#9FH;設(shè)置中斷允許,總中斷允許,;TH0、TL0中斷允許HERE: AJMP HERE;循環(huán)等待TL0INT: MOV TL0,#0FFH;TL0中斷服務(wù)處理子程序,TL0;重新裝入初值 SETB TR1;開始啟動(dòng)TH0定時(shí) RETITH0INT:MOV TH0,#9CH;TH0中斷服務(wù)程序,TH0重新;裝入初值 CPLP1.0;P1.0位取反輸出 RETI 6565669.3.4 門控制位門控制位GATEx的應(yīng)用的應(yīng)用
46、測(cè)量脈沖寬度測(cè)量脈沖寬度介紹門控制位GATE的具體應(yīng)用,測(cè)量 (P3.3)引腳上正脈沖的寬度。【例例7】 門控位GATE1可使T1的啟動(dòng)計(jì)數(shù)受 的控制,當(dāng)GATE1 = 1,TR1=1時(shí),時(shí),只有只有 INT1*引腳輸入高電引腳輸入高電平時(shí)平時(shí),T1才被允許計(jì)數(shù)才被允許計(jì)數(shù)??蓽y(cè)量 引腳 (P3.3)上正脈沖的寬度。其方法如圖圖所示所示。6666INT1INT1INT1圖圖 利用利用GATE位測(cè)量正脈沖的寬度位測(cè)量正脈沖的寬度67參考程序: ORG0000HRESET: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序 ORG 0100H;主程序入口MAIN: MOV SP,#60H MOVTMOD,#
47、90H;向TMOD寫控制字,T1為方;式1定時(shí),GATE1 = 1 MOV TL1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0;等待 低 SETB TR1;如 為低,啟動(dòng)T16767INT1INT168LOOP1:JNB P3.3,LOOP1;等待 升高LOOP2:JB P3.3,LOOP2 ; 為高, 此時(shí)計(jì)數(shù)器計(jì)數(shù), ;等待 降低 CLR TR1 ;停止T1計(jì)數(shù) MOV A,TL1 ;T1計(jì)數(shù)值送A ;將T1計(jì)數(shù)值送顯示器 END執(zhí)行以上程序,使 引腳上出現(xiàn)的正脈沖寬度正脈沖寬度以機(jī)機(jī)器周期數(shù)器周期數(shù)的形式顯示在顯示器上。6868將將A中的中的T1計(jì)數(shù)值送計(jì)
48、數(shù)值送到顯示器顯示到顯示器顯示INT1INT1INT1INT169綜合應(yīng)用案例綜合應(yīng)用案例1應(yīng)用定時(shí)器實(shí)現(xiàn)應(yīng)用定時(shí)器實(shí)現(xiàn)8個(gè)個(gè)LED燈循環(huán)閃爍,每個(gè)燈的間隔閃爍時(shí)間燈循環(huán)閃爍,每個(gè)燈的間隔閃爍時(shí)間為為50ms(如果間隔時(shí)間太短,某些(如果間隔時(shí)間太短,某些LED可能常亮或常滅),單可能常亮或常滅),單片機(jī)時(shí)鐘頻率片機(jī)時(shí)鐘頻率fosc為為6MHz,采用定時(shí)器,采用定時(shí)器0以中斷方式進(jìn)行控制以中斷方式進(jìn)行控制各個(gè)各個(gè)LED。LED與單片機(jī)連接電路圖如圖與單片機(jī)連接電路圖如圖9-6所示。所示。在圖在圖9-6中,中,8個(gè)個(gè)LED分別連接在分別連接在P1.0P1.7口上。當(dāng)口上。當(dāng)P1.X(X=07)相
49、應(yīng)端口為高電平時(shí),則相應(yīng)的)相應(yīng)端口為高電平時(shí),則相應(yīng)的LED燈點(diǎn)亮;反之,燈點(diǎn)亮;反之,LED燈滅,燈滅,P1.X端口的值按照端口的值按照50ms變化一次就可以實(shí)現(xiàn)所有的變化一次就可以實(shí)現(xiàn)所有的LED閃爍了。由于閃爍了。由于8個(gè)個(gè)LED循環(huán)閃爍,則定時(shí)器計(jì)數(shù)完畢后,循環(huán)閃爍,則定時(shí)器計(jì)數(shù)完畢后,P1的狀態(tài)需要進(jìn)行切換,表的狀態(tài)需要進(jìn)行切換,表9-4給出給出LED閃爍與閃爍與P1口狀態(tài)對(duì)應(yīng)關(guān)系口狀態(tài)對(duì)應(yīng)關(guān)系。697070圖圖9-6 LED 硬件接線圖硬件接線圖7171表表9-3 LED燈閃爍燈閃爍P1口狀態(tài)說(shuō)明口狀態(tài)說(shuō)明狀態(tài)順序狀態(tài)順序LED閃爍過(guò)程閃爍過(guò)程P1口值口值16進(jìn)制值進(jìn)制值初狀態(tài)初
50、狀態(tài)L1-L8滅滅0000000000H第一次第一次L1燈亮,其他燈滅燈亮,其他燈滅0000000101H第二次第二次L2燈亮,其他燈滅燈亮,其他燈滅0000001002H第三次第三次L3燈亮,其他燈滅燈亮,其他燈滅0000010004H第四次第四次L4燈亮,其他燈滅燈亮,其他燈滅0000100008H第五次第五次L5燈亮,其他燈滅燈亮,其他燈滅0001000010H第六次第六次L6燈亮,其他燈滅燈亮,其他燈滅0010000020H第七次第七次L7燈亮,其他燈滅燈亮,其他燈滅0100000040H第八次第八次L8燈亮,其他燈滅燈亮,其他燈滅1000000080H返回到初狀態(tài)返回到初狀態(tài)L1-L
51、8滅滅0000000000H72n根據(jù)根據(jù)LED閃爍時(shí)間間隔要求,確定定時(shí)器工作于方式閃爍時(shí)間間隔要求,確定定時(shí)器工作于方式1,定時(shí)時(shí)間定時(shí)時(shí)間T1=50ms=5010-3s。利用公式。利用公式(9-2)計(jì)算得到初計(jì)算得到初值值N=9E58H,則,則TH0=9EH,TL0=58H。nLED控制主程序和中斷服務(wù)程序流程圖如圖控制主程序和中斷服務(wù)程序流程圖如圖9-7所示。所示。7273一、匯編語(yǔ)言參考代碼一、匯編語(yǔ)言參考代碼ORG 0000H ;程序起始地址程序起始地址LJMP STARTORG 000BH ;定時(shí)器中斷入口地址定時(shí)器中斷入口地址LJMP TIME0_INTORG 0030H ;跳
52、過(guò)中斷入口地址區(qū)跳過(guò)中斷入口地址區(qū) ; 主程序開始地址主程序開始地址START:;完成定時(shí)器、完成定時(shí)器、 ;P1端口初始化工作端口初始化工作MOV SP, #30H ;設(shè)置堆棧入口地址設(shè)置堆棧入口地址MOV R2, #08H ;設(shè)置左移次數(shù)設(shè)置左移次數(shù)MOV P1, #00HMOV A, #01H ;設(shè)置初值設(shè)置初值TIME0_INTIAL:MOV TMOD, #01HMOV TH0, #9EH ;設(shè)定設(shè)定TH0的值的值MOV TL0, #58H ;設(shè)定設(shè)定TL0的值的值73SETB EA ;允許中斷允許中斷SETB ET0 ;開啟定時(shí)中斷開啟定時(shí)中斷SETB TR0 ;啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器WAIT: SJMP $ ;等待定時(shí)時(shí)間到達(dá)等待定時(shí)時(shí)間到達(dá)TIME
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 時(shí)裝面料企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 掏耳勺企業(yè)縣域市場(chǎng)拓展與下沉戰(zhàn)略研究報(bào)告
- 2025年度電子產(chǎn)品售后維修與退換貨服務(wù)協(xié)議
- 二零二五年度科技產(chǎn)品銷售返利與知識(shí)產(chǎn)權(quán)保護(hù)協(xié)議
- 中老年服裝企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級(jí)戰(zhàn)略研究報(bào)告
- 長(zhǎng)沙2025年度個(gè)人租房租賃物退租清潔責(zé)任合同
- 二零二五年度個(gè)人出租房租賃房屋租賃合同租賃期限延長(zhǎng)服務(wù)協(xié)議
- 二零二五年度朋友絕交協(xié)議附贈(zèng)心理評(píng)估與情感修復(fù)建議
- 二零二五年度雙向轉(zhuǎn)診醫(yī)療人才培養(yǎng)合作協(xié)議
- 二零二五年度新能源車輛充電設(shè)施眾籌協(xié)議
- 2025年湖南理工職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)一套
- 2025年專利權(quán)侵權(quán)和解協(xié)議書范本
- 2024中考百日誓師大會(huì)動(dòng)員講話稿
- 2025年中國(guó)廣州軌道交通行業(yè)市場(chǎng)全景評(píng)估及投資前景展望報(bào)告
- 2025年中國(guó)電力中電華創(chuàng)電力技術(shù)研究有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 教職工開學(xué)安全第一課培訓(xùn)
- 2025年貴州貴安發(fā)展集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 2024-2025學(xué)年北京西城區(qū)八年級(jí)初二(上)期末英語(yǔ)試卷(含答案)
- 安徽省蕪湖市2024-2025學(xué)年第一學(xué)期期末考試七年級(jí)語(yǔ)文試卷(含答案)
- 《家庭護(hù)士》課件
- 2024年社區(qū)工作者考試時(shí)事政治模擬題及答案
評(píng)論
0/150
提交評(píng)論