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

下載本文檔

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

文檔簡(jiǎn)介

1、第第6章章 AT89S51單片機(jī)的單片機(jī)的 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器1內(nèi)容概要內(nèi)容概要 在工業(yè)檢測(cè)與控制中,許多場(chǎng)合要用到計(jì)數(shù)或定時(shí)功能。在工業(yè)檢測(cè)與控制中,許多場(chǎng)合要用到計(jì)數(shù)或定時(shí)功能。 例如,對(duì)外部脈沖進(jìn)行計(jì)數(shù)或產(chǎn)生精確的定時(shí)時(shí)間等。片例如,對(duì)外部脈沖進(jìn)行計(jì)數(shù)或產(chǎn)生精確的定時(shí)時(shí)間等。片內(nèi)兩個(gè)可編程的定時(shí)器內(nèi)兩個(gè)可編程的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1、T0,可滿足這方面的需,可滿足這方面的需要。本章介紹要。本章介紹AT89S51單片機(jī)片內(nèi)定時(shí)器單片機(jī)片內(nèi)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)與計(jì)數(shù)器的結(jié)構(gòu)與功能,兩種工作模式和功能,兩種工作模式和4種工作方式,以及與其相關(guān)的兩個(gè)種工作方式,以及與其相關(guān)的兩個(gè)特殊功

2、能寄存器特殊功能寄存器TMOD和和TCON各位的定義及其編程,最后各位的定義及其編程,最后介紹定時(shí)器介紹定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的C51編程及應(yīng)用實(shí)例。編程及應(yīng)用實(shí)例。 26.1 定時(shí)器定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)計(jì)數(shù)器的結(jié)構(gòu) AT89S51的定時(shí)器的定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)如計(jì)數(shù)器結(jié)構(gòu)如圖圖6-1所示,所示,T0由特殊功由特殊功能寄存器能寄存器TH0、TL0構(gòu)成,構(gòu)成,T1由特殊功能寄存器由特殊功能寄存器TH1、TL1構(gòu)成。構(gòu)成。 T0 和和T1都具有定時(shí)器和計(jì)數(shù)器兩種工作模式,都具有定時(shí)器和計(jì)數(shù)器兩種工作模式,4種工作方種工作方式(方式式(方式0 3)。屬于增計(jì)數(shù)器。)。屬于增計(jì)數(shù)器。 特殊功能寄存器特殊

3、功能寄存器TMOD用于選擇用于選擇T0、T1的工作模式和工的工作模式和工作方式。特殊功能寄存器作方式。特殊功能寄存器TCON用于控制用于控制T0、T1的啟動(dòng)和停的啟動(dòng)和停止計(jì)數(shù),同時(shí)包含了止計(jì)數(shù),同時(shí)包含了T0、T1的狀態(tài)。的狀態(tài)。T0、 T1不論是工作在不論是工作在定時(shí)器模式還是計(jì)數(shù)器模式,實(shí)質(zhì)是對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù),定時(shí)器模式還是計(jì)數(shù)器模式,實(shí)質(zhì)是對(duì)脈沖信號(hào)進(jìn)行計(jì)數(shù),4圖圖6-1 AT89S51單片機(jī)的定時(shí)器單片機(jī)的定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)框圖計(jì)數(shù)器結(jié)構(gòu)框圖 只不過(guò)計(jì)數(shù)信號(hào)的來(lái)源不同。只不過(guò)計(jì)數(shù)信號(hào)的來(lái)源不同。 計(jì)數(shù)器模式是對(duì)加在計(jì)數(shù)器模式是對(duì)加在T0(P3.4)和)和T1(P3.5)兩個(gè)引腳上)

4、兩個(gè)引腳上的外部脈沖進(jìn)行計(jì)數(shù)(見(jiàn)圖的外部脈沖進(jìn)行計(jì)數(shù)(見(jiàn)圖6-1) 定時(shí)器模式是對(duì)單片機(jī)的系統(tǒng)時(shí)鐘信號(hào)經(jīng)片內(nèi)定時(shí)器模式是對(duì)單片機(jī)的系統(tǒng)時(shí)鐘信號(hào)經(jīng)片內(nèi)12分頻后的分頻后的內(nèi)部脈沖信號(hào)(機(jī)器周期)計(jì)數(shù)。由于時(shí)鐘頻率是定值,所內(nèi)部脈沖信號(hào)(機(jī)器周期)計(jì)數(shù)。由于時(shí)鐘頻率是定值,所以可根據(jù)對(duì)內(nèi)部脈沖信號(hào)的計(jì)數(shù)值可計(jì)算出定時(shí)時(shí)間。以可根據(jù)對(duì)內(nèi)部脈沖信號(hào)的計(jì)數(shù)值可計(jì)算出定時(shí)時(shí)間。 計(jì)數(shù)器的起始計(jì)數(shù)是從初值開(kāi)始。單片機(jī)復(fù)位時(shí)計(jì)數(shù)器初計(jì)數(shù)器的起始計(jì)數(shù)是從初值開(kāi)始。單片機(jī)復(fù)位時(shí)計(jì)數(shù)器初值為值為0,也可用指令給計(jì)數(shù)器裝入一個(gè)新的初值。,也可用指令給計(jì)數(shù)器裝入一個(gè)新的初值。AT89S51的的定時(shí)器定時(shí)器/計(jì)數(shù)器屬于增

5、計(jì)數(shù)器。計(jì)數(shù)器屬于增計(jì)數(shù)器。56.1.1 工作方式控制寄存器工作方式控制寄存器TMOD AT89S51定時(shí)器的工作方式寄存器定時(shí)器的工作方式寄存器TMOD用于選擇工作模式用于選擇工作模式和工作方式,字節(jié)地址為和工作方式,字節(jié)地址為89H,不能位尋址,其格式如,不能位尋址,其格式如圖圖6-2所所示。示。6圖圖6-2 寄存器寄存器TMOD格式格式8位分為兩組,高位分為兩組,高4位控制位控制T1,低,低4位控制位控制T0。下面對(duì)下面對(duì)TMOD的各位給出說(shuō)明。的各位給出說(shuō)明。(1)GATE門(mén)控位。門(mén)控位。GATE=0時(shí),僅由運(yùn)行控制位時(shí),僅由運(yùn)行控制位TRx(x = 0,1)來(lái)控制定時(shí)器)來(lái)控制定時(shí)器

6、運(yùn)行。運(yùn)行。GATE=1時(shí),用外中斷引腳時(shí),用外中斷引腳INT0*(或(或INT1* )上的電平與運(yùn))上的電平與運(yùn)行控制位行控制位TRx共同控制定時(shí)器運(yùn)行。共同控制定時(shí)器運(yùn)行。(2)M1、M0工作方式選擇位。工作方式選擇位。M1、M0的的4種編碼,對(duì)應(yīng)于種編碼,對(duì)應(yīng)于4種工作方式的選擇,如表種工作方式的選擇,如表6-1所所示。示。78(3)C/T* 計(jì)數(shù)器模式和定時(shí)器模式選擇位。計(jì)數(shù)器模式和定時(shí)器模式選擇位。 C/T*=0,為定時(shí)器工作模式,對(duì)單片機(jī)的晶體振蕩器,為定時(shí)器工作模式,對(duì)單片機(jī)的晶體振蕩器12分頻分頻后的脈沖進(jìn)行計(jì)數(shù)。后的脈沖進(jìn)行計(jì)數(shù)。 C/T*=1,為計(jì)數(shù)器工作模式,計(jì)數(shù)器對(duì)外部

7、輸入引腳,為計(jì)數(shù)器工作模式,計(jì)數(shù)器對(duì)外部輸入引腳T0(P3.4)或)或T1(P3.5)的外部脈沖(負(fù)跳變)計(jì)數(shù)。)的外部脈沖(負(fù)跳變)計(jì)數(shù)。6.1.2 定時(shí)器定時(shí)器/計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器TCON TCON字節(jié)地址為字節(jié)地址為88H,可位尋址,位地址為,可位尋址,位地址為88H8FH,格,格式如圖式如圖6-3所示。所示。9圖圖6-3 TCON格式格式 第第5章介紹了與外部中斷有關(guān)的低章介紹了與外部中斷有關(guān)的低4位。這里僅介紹與定時(shí)器位。這里僅介紹與定時(shí)器相關(guān)的高相關(guān)的高4位功能。位功能。(1)TF1、TF0計(jì)數(shù)溢出標(biāo)志位。計(jì)數(shù)溢出標(biāo)志位。 當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出時(shí),該位置當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出時(shí)

8、,該位置“1”。使用查詢(xún)方式時(shí),此位。使用查詢(xún)方式時(shí),此位作為狀態(tài)位供作為狀態(tài)位供CPU查詢(xún),但應(yīng)注意查詢(xún)有效后,應(yīng)使用軟件及查詢(xún),但應(yīng)注意查詢(xún)有效后,應(yīng)使用軟件及時(shí)將該位清時(shí)將該位清“0”。使用中斷方式時(shí),此位作為中斷請(qǐng)求標(biāo)志位。使用中斷方式時(shí),此位作為中斷請(qǐng)求標(biāo)志位,進(jìn)入中斷服務(wù)程序后由硬件自動(dòng)清,進(jìn)入中斷服務(wù)程序后由硬件自動(dòng)清“0”。(2)TR1、TR0計(jì)數(shù)運(yùn)行控制位。計(jì)數(shù)運(yùn)行控制位。 TR1位(或位(或TR0位)位)=1,啟動(dòng)定時(shí)器工作的必要條件。,啟動(dòng)定時(shí)器工作的必要條件。 TR1位(或位(或TR0位)位)=0,停止定時(shí)器工作。,停止定時(shí)器工作。該位可由軟件置該位可由軟件置“1”或清

9、或清“0”。106.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式 4種工作方式分別介紹如下。種工作方式分別介紹如下。6.2.1 方式方式0 當(dāng)當(dāng)M1、M0為為00時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器被設(shè)置為工作方式計(jì)數(shù)器被設(shè)置為工作方式0,這時(shí)定時(shí)器這時(shí)定時(shí)器/計(jì)數(shù)器的等效邏輯結(jié)構(gòu)框圖如計(jì)數(shù)器的等效邏輯結(jié)構(gòu)框圖如圖圖6-4所示(以定所示(以定時(shí)器時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1為例,為例,TMOD.5、TMOD.4 = 00)。)。11圖6-4 定時(shí)器/計(jì)數(shù)器方式0邏輯結(jié)構(gòu)框圖方式方式0時(shí),為時(shí),為13位計(jì)數(shù)器,由位計(jì)數(shù)器,由TLx(x = 0,1)的低)的低5位和位和THx的高的高8位構(gòu)成。位構(gòu)成

10、。TLx低低5位溢出則向位溢出則向THx進(jìn)位,進(jìn)位,THx計(jì)數(shù)溢出則計(jì)數(shù)溢出則把把TCON中的溢出標(biāo)志位中的溢出標(biāo)志位TFx置置“1”。 圖圖6-2中,中, C/T*位控制的電子開(kāi)關(guān)決定了定時(shí)器位控制的電子開(kāi)關(guān)決定了定時(shí)器/計(jì)數(shù)器的兩計(jì)數(shù)器的兩種工作模式。種工作模式。 (1)C/T*=0,電子開(kāi)關(guān)打在上面位置,電子開(kāi)關(guān)打在上面位置,T1(或(或T0)為定時(shí))為定時(shí)器工作模式,把時(shí)鐘振蕩器器工作模式,把時(shí)鐘振蕩器12分頻后的脈沖作為計(jì)數(shù)信號(hào)。分頻后的脈沖作為計(jì)數(shù)信號(hào)。 (2)C/T*=1,電子開(kāi)關(guān)打在下面位置,電子開(kāi)關(guān)打在下面位置,T1(或(或T0)為計(jì)數(shù))為計(jì)數(shù)器工作模式,計(jì)數(shù)脈沖為器工作模式

11、,計(jì)數(shù)脈沖為P3.4(或(或P3.5)引腳上的外部輸入脈)引腳上的外部輸入脈沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加沖,當(dāng)引腳上發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器加1。13 GATE位狀態(tài)決定定時(shí)器的運(yùn)行控制取決于位狀態(tài)決定定時(shí)器的運(yùn)行控制取決于TRx一個(gè)條件,一個(gè)條件,還是取決于還是取決于TRx和和INTX* (x = 0,1)引腳狀態(tài)這兩個(gè)條件。)引腳狀態(tài)這兩個(gè)條件。 (1)GATE=0時(shí),時(shí),A點(diǎn)(見(jiàn)圖點(diǎn)(見(jiàn)圖6-4)電位恒為)電位恒為1,B點(diǎn)電位僅點(diǎn)電位僅取決于取決于TRx狀態(tài)。狀態(tài)。TRx = 1,B點(diǎn)為高電平,控制端控制電子開(kāi)點(diǎn)為高電平,控制端控制電子開(kāi)關(guān)閉合,允許關(guān)閉合,允許T1(或(或T0)對(duì)脈沖

12、計(jì)數(shù)。)對(duì)脈沖計(jì)數(shù)。TRx = 0,B點(diǎn)為低電點(diǎn)為低電平,電子開(kāi)關(guān)斷開(kāi),禁止平,電子開(kāi)關(guān)斷開(kāi),禁止T1(或(或T0)計(jì)數(shù)。)計(jì)數(shù)。 (2)GATE=1時(shí),時(shí),B點(diǎn)電位由點(diǎn)電位由INTX*(x = 0,1)的輸入電)的輸入電平和平和TRx的狀態(tài)兩個(gè)條件來(lái)定。當(dāng)?shù)臓顟B(tài)兩個(gè)條件來(lái)定。當(dāng)TRx=1,且,且INTX*=1時(shí),時(shí),B點(diǎn)才為點(diǎn)才為1,控制端控制電子開(kāi)關(guān)閉合,允許,控制端控制電子開(kāi)關(guān)閉合,允許T1(或(或T0)計(jì)數(shù)。)計(jì)數(shù)。故這種情況下計(jì)數(shù)器是否計(jì)數(shù)是由故這種情況下計(jì)數(shù)器是否計(jì)數(shù)是由TRx和和INTX*兩個(gè)條件來(lái)共兩個(gè)條件來(lái)共同控制。同控制。146.2.2 方式方式1 當(dāng)當(dāng)M1、M0為為01時(shí)

13、,工作于方式時(shí),工作于方式1,方式,方式1的等效電路邏輯的等效電路邏輯結(jié)構(gòu)如結(jié)構(gòu)如圖圖6-5所示。所示。 方式方式1和方式和方式0的差別僅僅在于計(jì)數(shù)器的位數(shù)不同,方式的差別僅僅在于計(jì)數(shù)器的位數(shù)不同,方式1為為16位計(jì)數(shù)器,由位計(jì)數(shù)器,由THx高高8位和位和TLx低低8位構(gòu)成(位構(gòu)成(x = 0,1),),方式方式0則為則為13位計(jì)數(shù)器,有關(guān)控制狀態(tài)位的含義(位計(jì)數(shù)器,有關(guān)控制狀態(tài)位的含義(GATE、C/T*、TFx、TRx)與方式)與方式0相同。相同。 1516圖6-5 定時(shí)器/計(jì)數(shù)器方式1邏輯結(jié)構(gòu)框圖 6.2.3 方式方式2 方式方式0和方式和方式1的最大特點(diǎn)是計(jì)數(shù)溢出后,計(jì)數(shù)器為全的最大特

14、點(diǎn)是計(jì)數(shù)溢出后,計(jì)數(shù)器為全0。因。因此在循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在用指令反復(fù)裝入計(jì)數(shù)初此在循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在用指令反復(fù)裝入計(jì)數(shù)初值的問(wèn)題。這不僅影響定時(shí)精度,也給程序設(shè)計(jì)帶來(lái)麻煩。方值的問(wèn)題。這不僅影響定時(shí)精度,也給程序設(shè)計(jì)帶來(lái)麻煩。方式式2就是解決此問(wèn)題而設(shè)置的。就是解決此問(wèn)題而設(shè)置的。 當(dāng)當(dāng)M1、M0為為10時(shí),定時(shí)器時(shí),定時(shí)器/計(jì)數(shù)器處于工作方式計(jì)數(shù)器處于工作方式2,這時(shí)定,這時(shí)定時(shí)器時(shí)器/計(jì)數(shù)器的等效邏輯結(jié)構(gòu)如計(jì)數(shù)器的等效邏輯結(jié)構(gòu)如圖圖6-6所示(以定時(shí)器所示(以定時(shí)器T1為例,為例,x = 1)。)。 1718圖6-6 定時(shí)器/計(jì)數(shù)器方式2邏輯結(jié)構(gòu)框圖 定時(shí)器定時(shí)器/

15、計(jì)數(shù)器的方式計(jì)數(shù)器的方式2為自動(dòng)恢復(fù)初值(初值自動(dòng)裝入)的為自動(dòng)恢復(fù)初值(初值自動(dòng)裝入)的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,計(jì)數(shù)器,TLx(x = 0,1)作為常數(shù)緩沖器,當(dāng))作為常數(shù)緩沖器,當(dāng)TLx計(jì)數(shù)溢出時(shí),在溢出標(biāo)志計(jì)數(shù)溢出時(shí),在溢出標(biāo)志TFx置置“1”的同時(shí),還自動(dòng)將的同時(shí),還自動(dòng)將THx中中的初值送至的初值送至TLx,使,使TLx從初值開(kāi)始重新計(jì)數(shù)。定時(shí)器從初值開(kāi)始重新計(jì)數(shù)。定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器的方式的方式2工作過(guò)程如工作過(guò)程如圖圖6-7所示。所示。 此工作方式可省去用戶軟件中重裝初值的指令的執(zhí)行時(shí)間,此工作方式可省去用戶軟件中重裝初值的指令的執(zhí)行時(shí)間,簡(jiǎn)化定時(shí)初值的計(jì)算方法,可相當(dāng)精確地

16、確定定時(shí)時(shí)間。簡(jiǎn)化定時(shí)初值的計(jì)算方法,可相當(dāng)精確地確定定時(shí)時(shí)間。196.2.4 方式方式3 方式方式3是為了增加一個(gè)附加的是為了增加一個(gè)附加的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器而設(shè)置的,計(jì)數(shù)器而設(shè)置的,從而使從而使AT89S51單片機(jī)具有單片機(jī)具有3個(gè)定時(shí)器個(gè)定時(shí)器/計(jì)數(shù)器。方式計(jì)數(shù)器。方式3只適用只適用于定時(shí)器于定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0,定時(shí)器,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1不能工作在方式不能工作在方式3。T1處于方式處于方式3時(shí)相當(dāng)于時(shí)相當(dāng)于TR1 = 0,停止計(jì)數(shù)(此時(shí),停止計(jì)數(shù)(此時(shí)T1可用來(lái)作為可用來(lái)作為20圖6-7 方式2工作過(guò)程 串行口波特率產(chǎn)生器)。串行口波特率產(chǎn)生器)。1工作方式工作方式3

17、下的下的T0 當(dāng)當(dāng)TMOD的低的低2位為位為11時(shí),時(shí),T0的工作方式被選為方式的工作方式被選為方式3,各引腳與各引腳與T0的邏輯關(guān)系如的邏輯關(guān)系如圖圖6-8所示。所示。 T0分為兩個(gè)獨(dú)立的分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器位計(jì)數(shù)器TL0和和TH0,TL0使用使用T0的的狀態(tài)控制位狀態(tài)控制位C/T*、GATE、TR0,而,而TH0被固定為一個(gè)被固定為一個(gè)8位定位定時(shí)器(不能作為外部計(jì)數(shù)模式),并使用時(shí)器(不能作為外部計(jì)數(shù)模式),并使用T1的狀態(tài)控制位的狀態(tài)控制位TR1和和TF1,同時(shí)占用,同時(shí)占用T1的中斷請(qǐng)求源的中斷請(qǐng)求源TF1。2122圖圖6-8 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0方式方式3的邏輯結(jié)構(gòu)框

18、圖的邏輯結(jié)構(gòu)框圖(1)T1工作在方式工作在方式0T1的控制字中的控制字中M1、M0 = 00時(shí),時(shí),T1工作在方式工作在方式0,工作示意圖,工作示意圖如如圖圖6-9所示。所示。 23圖6-9 T0工作在方式3時(shí)T1為方式0的工作示意圖(2)T1工作在方式工作在方式1當(dāng)當(dāng)T1的控制字中的控制字中M1、M0 = 01時(shí),時(shí),T1工作在方式工作在方式1,工作示意圖,工作示意圖如如圖圖6-10所示。所示。24圖6-10 T0工作在方式3時(shí)T1為方式1的工作示意圖(3)T1工作在方式工作在方式2 當(dāng)當(dāng)T1的控制字中的控制字中M1、M0 = 10時(shí),時(shí),T1的工作方式為方式的工作方式為方式2,工作示意圖如

19、工作示意圖如圖圖6-11所示。所示。 25圖圖6-11 T0工作在方式工作在方式3時(shí)時(shí)T1為方式為方式2的工作示意圖的工作示意圖(4)T1設(shè)置在方式設(shè)置在方式3。 當(dāng)當(dāng)T0設(shè)置在方式設(shè)置在方式3時(shí),再把時(shí),再把T1也設(shè)置成方式也設(shè)置成方式3,此時(shí),此時(shí)T1停停止計(jì)數(shù)。止計(jì)數(shù)。6.3 對(duì)外部輸入的計(jì)數(shù)信號(hào)的要求對(duì)外部輸入的計(jì)數(shù)信號(hào)的要求 當(dāng)定時(shí)器當(dāng)定時(shí)器/計(jì)數(shù)器工作在計(jì)數(shù)器模式時(shí),計(jì)數(shù)脈沖來(lái)自外計(jì)數(shù)器工作在計(jì)數(shù)器模式時(shí),計(jì)數(shù)脈沖來(lái)自外部輸入引腳部輸入引腳T0或或T1。當(dāng)輸入信號(hào)產(chǎn)生由。當(dāng)輸入信號(hào)產(chǎn)生由1至至0的跳變(即負(fù)的跳變(即負(fù)跳變)時(shí),計(jì)數(shù)器值增跳變)時(shí),計(jì)數(shù)器值增1。每個(gè)機(jī)器周期的。每個(gè)

20、機(jī)器周期的S5P2期間,都對(duì)期間,都對(duì)外部輸入引腳外部輸入引腳T0或或T1進(jìn)行采樣。如在第一個(gè)機(jī)器周期中采進(jìn)行采樣。如在第一個(gè)機(jī)器周期中采得的值為得的值為1,而在下一個(gè)機(jī)器周期中采得的值為,而在下一個(gè)機(jī)器周期中采得的值為0,則在緊跟,則在緊跟著的再下一個(gè)機(jī)器周期著的再下一個(gè)機(jī)器周期S3P1期間,計(jì)數(shù)器加期間,計(jì)數(shù)器加1。27 由于確認(rèn)一次負(fù)跳變花由于確認(rèn)一次負(fù)跳變花2個(gè)機(jī)器周期,即個(gè)機(jī)器周期,即24個(gè)振蕩周期,因個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的此外部輸入的計(jì)數(shù)脈沖的最高頻率為系統(tǒng)振蕩器頻率的1/24。圖圖6-12 對(duì)外部計(jì)數(shù)輸入信號(hào)的要求對(duì)外部計(jì)數(shù)輸入信號(hào)的要求

21、例如,選用例如,選用6MHz頻率的晶體,允許輸入的脈沖頻率最高頻率的晶體,允許輸入的脈沖頻率最高為為250kHz。如果選用。如果選用12MHz頻率的晶體,則可輸入最高頻頻率的晶體,則可輸入最高頻率為率為500kHz的外部脈沖。對(duì)于外部輸入信號(hào)的占空比并沒(méi)的外部脈沖。對(duì)于外部輸入信號(hào)的占空比并沒(méi)有什么限制,但為了確保某一給定電平在變化之前能被采樣有什么限制,但為了確保某一給定電平在變化之前能被采樣一次,則這一電平至少要保持一個(gè)機(jī)器周期。故對(duì)外部輸入一次,則這一電平至少要保持一個(gè)機(jī)器周期。故對(duì)外部輸入信號(hào)的要求如信號(hào)的要求如圖圖6-12所示,圖中所示,圖中Tcy為機(jī)器周期。為機(jī)器周期。 286.4

22、 定時(shí)器定時(shí)器/計(jì)數(shù)器的編程和應(yīng)用計(jì)數(shù)器的編程和應(yīng)用 在在4種工作方式中,方式種工作方式中,方式0與方式與方式1基本相同,只是計(jì)數(shù)器的基本相同,只是計(jì)數(shù)器的計(jì)數(shù)位數(shù)不同。方式計(jì)數(shù)位數(shù)不同。方式0為為13位計(jì)數(shù)器,方式位計(jì)數(shù)器,方式1為為16位計(jì)數(shù)器。位計(jì)數(shù)器。由于方式由于方式0是為兼容是為兼容MCS-48而設(shè),且其計(jì)數(shù)初值計(jì)算復(fù)雜,而設(shè),且其計(jì)數(shù)初值計(jì)算復(fù)雜,所以在實(shí)際應(yīng)用中,一般不用方式所以在實(shí)際應(yīng)用中,一般不用方式0,而采用方式,而采用方式1。6.4.1 P1口外接的口外接的8只只LED每每0.5s閃亮一次。閃亮一次。 【例例6-1】在在AT89S51單片機(jī)的單片機(jī)的P1口上接有口上接有8

23、只只LED。下面。下面采用定時(shí)器采用定時(shí)器T0的方式的方式1的定時(shí)中斷方式,使的定時(shí)中斷方式,使P1口外接的口外接的8只只LED每每0.5s閃亮一次。閃亮一次。 (1)設(shè)置)設(shè)置TMOD寄存器寄存器 定時(shí)器定時(shí)器T0工作在方式工作在方式1,應(yīng)使,應(yīng)使TMOD寄存器的寄存器的M1、M0=01;應(yīng)設(shè)置;應(yīng)設(shè)置C/=0,為定時(shí)器工作模式;對(duì),為定時(shí)器工作模式;對(duì)T0的運(yùn)行控制僅由的運(yùn)行控制僅由TR0來(lái)控制,應(yīng)使來(lái)控制,應(yīng)使GATE0=0。定時(shí)器。定時(shí)器T1不使用,各相關(guān)位均設(shè)為不使用,各相關(guān)位均設(shè)為0。所以,。所以,TMOD寄存器應(yīng)初始化為寄存器應(yīng)初始化為0 x01。(2)計(jì)算)計(jì)算T0計(jì)數(shù)初值計(jì)數(shù)

24、初值 設(shè)定時(shí)時(shí)間設(shè)定時(shí)時(shí)間5ms(即(即5000s),設(shè)定時(shí)器),設(shè)定時(shí)器T0的計(jì)數(shù)初值為的計(jì)數(shù)初值為X,假設(shè)晶振的頻率為,假設(shè)晶振的頻率為11.0592MHz,則定時(shí)時(shí)間為:定時(shí)時(shí),則定時(shí)時(shí)間為:定時(shí)時(shí)間間=(216X) 12/晶振頻率晶振頻率30則則5000=(216 X) 12/11.0592得:得:X = 60928,轉(zhuǎn)換成,轉(zhuǎn)換成16進(jìn)制后為:進(jìn)制后為:0 xee00,其中,其中0 xee裝裝入入TH0,0 x00裝入裝入TL0。(3)設(shè)置)設(shè)置IE寄存器寄存器 本例由于采用定時(shí)器本例由于采用定時(shí)器T0中斷,因此需將中斷,因此需將IE寄存器中的寄存器中的EA、ET0位置位置1。(4)

25、啟動(dòng)和停止定時(shí)器)啟動(dòng)和停止定時(shí)器T0 將定時(shí)器控制寄存器將定時(shí)器控制寄存器TCON中的中的TR0=1,則啟動(dòng)定時(shí)器,則啟動(dòng)定時(shí)器T0;TR0=0,則停止定時(shí)器,則停止定時(shí)器T0定時(shí)。定時(shí)。 參考程序如下:參考程序如下:31#includeChar i=100;/*給變量給變量i賦初值賦初值*/void main( )TMOD=0 x01;/*設(shè)置定時(shí)器設(shè)置定時(shí)器T0為方式為方式1*/TH0=0 xee;/*向向TH0寫(xiě)入初值的高寫(xiě)入初值的高8位位*/TL0=0 x00;/*向向TL0寫(xiě)入初值的低寫(xiě)入初值的低8位位*/P1=0 x00; /*P1口口8只只LED點(diǎn)亮點(diǎn)亮*/EA=1; /*總中

26、斷允許總中斷允許*/ET0=1; /*定時(shí)器定時(shí)器T0中斷允許中斷允許*/ TR0=1; /*啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器T0*/while(1) ; /*無(wú)窮循環(huán),等待定時(shí)中斷無(wú)窮循環(huán),等待定時(shí)中斷*/32/*以下為定時(shí)器以下為定時(shí)器T0的中斷服務(wù)程序的中斷服務(wù)程序*/void T0_int(void) interrupt 1 TH0=0 xee;/*給給T0裝入裝入16位初值,計(jì)位初值,計(jì)4608個(gè)數(shù)后,個(gè)數(shù)后,T0溢出溢出*/TL0=0 x00; i-; /*循環(huán)次數(shù)減循環(huán)次數(shù)減1*/if(i=0)P1=P1; /*P1口按位取反口按位取反*/i=100;/*重新設(shè)置循環(huán)次數(shù)重新設(shè)置循環(huán)次數(shù)*/

27、336.4.2 計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用 【例例6-2】 采用定時(shí)器采用定時(shí)器T1的方式的方式1的中斷計(jì)數(shù)方式,如的中斷計(jì)數(shù)方式,如圖圖6-13所示,計(jì)數(shù)輸入引腳所示,計(jì)數(shù)輸入引腳T1(P3.5)上外接開(kāi)關(guān))上外接開(kāi)關(guān)K1,作為,作為計(jì)數(shù)信號(hào)輸入。按計(jì)數(shù)信號(hào)輸入。按4次次K1后,后,P1口的口的8只只LED閃爍不停。閃爍不停。(1)設(shè)置)設(shè)置TMOD寄存器寄存器 T1工作在方式工作在方式1,應(yīng)使,應(yīng)使TMOD的的M1、M0=01;設(shè)置計(jì)數(shù)器;設(shè)置計(jì)數(shù)器工作模式工作模式C/T*=1;對(duì);對(duì)T0的運(yùn)行控制僅由的運(yùn)行控制僅由TR0來(lái)控制,應(yīng)使來(lái)控制,應(yīng)使GATE0=0。定時(shí)器。定時(shí)器T0不使用,各相

28、關(guān)位均設(shè)為不使用,各相關(guān)位均設(shè)為0。所以,。所以,TMOD寄存器應(yīng)初始化為寄存器應(yīng)初始化為0 x50。3435圖圖6-13 由外部計(jì)數(shù)輸入信號(hào)控制由外部計(jì)數(shù)輸入信號(hào)控制LED的閃爍的閃爍(2)計(jì)算)計(jì)算T1計(jì)數(shù)初值計(jì)數(shù)初值 由于每按由于每按4次次K1,計(jì)數(shù)一次,因此計(jì)數(shù)器的初值為,計(jì)數(shù)一次,因此計(jì)數(shù)器的初值為65536-4=65532,將其轉(zhuǎn)換成,將其轉(zhuǎn)換成16進(jìn)制后為:進(jìn)制后為:0 xfffc,因此,因此,TH0=0 xff,TL0=0 xfc。(3)設(shè)置)設(shè)置IE寄存器寄存器 本例由于采用定時(shí)器本例由于采用定時(shí)器T1中斷,因此需將中斷,因此需將IE寄存器中的寄存器中的EA、ET1位置位置1

29、。(4)啟動(dòng)和停止定時(shí)器)啟動(dòng)和停止定時(shí)器T1 將定時(shí)器控制寄存器將定時(shí)器控制寄存器TCON中的中的TR1=1,則啟動(dòng)定時(shí)器,則啟動(dòng)定時(shí)器T1計(jì)數(shù);計(jì)數(shù);TR1=0,則停止定時(shí)器,則停止定時(shí)器T1計(jì)數(shù)。計(jì)數(shù)。 參考程序如下:參考程序如下:36#include void Delay(unsigned int i)/* 定義延時(shí)函數(shù)定義延時(shí)函數(shù)Delay( ),i是形式參數(shù),不是形式參數(shù),不能賦初值能賦初值*/unsigned int j;for(;i0;i-) /* 變量變量i由實(shí)際參數(shù)傳入一個(gè)值,因此由實(shí)際參數(shù)傳入一個(gè)值,因此i不能賦初值不能賦初值*/for(j=0;j125;j+);/*空函

30、數(shù)空函數(shù)*/void main( )/*主函數(shù)主函數(shù)*/TMOD=0 x50;/*設(shè)置定時(shí)器設(shè)置定時(shí)器T1為方式為方式1計(jì)數(shù)計(jì)數(shù)*/TH0=0 xff;/*向向TH0寫(xiě)入初值的高寫(xiě)入初值的高8位位*/37TL0=0 xfc;/*向向TL0寫(xiě)入初值低寫(xiě)入初值低8位位*/EA=1; /*總中斷允許總中斷允許*/ET1=1; /*T1中斷允許中斷允許*/ TR1=1; /*啟動(dòng)啟動(dòng)T1*/while(1) ; /*無(wú)窮循環(huán),等待定時(shí)中斷無(wú)窮循環(huán),等待定時(shí)中斷*/*以下為定時(shí)器以下為定時(shí)器T1的中斷服務(wù)程序的中斷服務(wù)程序*/void T1_int(void) interrupt 3 for(;) /*

31、無(wú)限循環(huán)無(wú)限循環(huán)*/P1=0 xff;/*8位位LED全滅全滅*/Delay(500) ;/*延時(shí)延時(shí)500ms*/P1=0;/*8位位LED全亮全亮*/Delay(500); /*延時(shí)延時(shí)500ms */386.4.3 擴(kuò)展一個(gè)外部中斷源擴(kuò)展一個(gè)外部中斷源 方式方式2可自動(dòng)重新裝載初值。此方式可省去用戶程序中重新可自動(dòng)重新裝載初值。此方式可省去用戶程序中重新裝初值的指令。裝初值的指令。 當(dāng)某個(gè)定時(shí)器當(dāng)某個(gè)定時(shí)器/計(jì)數(shù)器不使用時(shí),可為計(jì)數(shù)器不使用時(shí),可為AT89S51擴(kuò)展一個(gè)負(fù)擴(kuò)展一個(gè)負(fù)跳沿觸發(fā)的外部中斷源。跳沿觸發(fā)的外部中斷源。 基本思想是把定時(shí)器溢出中斷做成外部中斷,然后把計(jì)數(shù)輸基本思想是

32、把定時(shí)器溢出中斷做成外部中斷,然后把計(jì)數(shù)輸入信號(hào)接到定時(shí)器的相應(yīng)引腳上入信號(hào)接到定時(shí)器的相應(yīng)引腳上T0腳(或腳(或T1腳),并把定時(shí)腳),并把定時(shí)器被設(shè)置為方式器被設(shè)置為方式2(自動(dòng)裝入常數(shù)方式)計(jì)數(shù)工作模式,計(jì)數(shù)(自動(dòng)裝入常數(shù)方式)計(jì)數(shù)工作模式,計(jì)數(shù)器器TH0、TL0初值均為初值均為0FFH,并允許,并允許T0中斷,總中斷開(kāi)放。中斷,總中斷開(kāi)放。當(dāng)檢測(cè)到當(dāng)檢測(cè)到T0腳(或腳(或T1腳)引腳電平發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器腳)引腳電平發(fā)生負(fù)跳變時(shí),計(jì)數(shù)器TF0(或或TF1)溢出,這時(shí)將產(chǎn)生一個(gè)中斷請(qǐng)求。溢出,這時(shí)將產(chǎn)生一個(gè)中斷請(qǐng)求。 39 【例例6-3】擴(kuò)展一個(gè)負(fù)跳沿觸發(fā)的外部中斷源,把定時(shí)器擴(kuò)展一個(gè)

33、負(fù)跳沿觸發(fā)的外部中斷源,把定時(shí)器T0計(jì)數(shù)輸入引腳作為外部中斷請(qǐng)求信號(hào)的輸入端。計(jì)數(shù)輸入引腳作為外部中斷請(qǐng)求信號(hào)的輸入端。#includevoid main( ) TMOD=0 x06;/*設(shè)置定時(shí)器T0為方式2計(jì)數(shù)*/TH0=0 xff;/*給T0裝入初值*/TL0=0 xff; /*給T0裝入初值*/ET0=1; /*允許T0中斷*/EA=1; /*總中斷開(kāi)*/TF0=0;/*T0中斷溢出標(biāo)志位清0*/TR0=1/*接通T0 計(jì)數(shù)* /while (1) /*無(wú)限循環(huán)等待* /40/*以下為定時(shí)器T0的中斷服務(wù)程序*/void T0_int(void) interrupt 1 using 0

34、 /*外中斷處理部分*/ 說(shuō)明:本例所述的使用定時(shí)器擴(kuò)展的外中斷源只能是負(fù)跳沿說(shuō)明:本例所述的使用定時(shí)器擴(kuò)展的外中斷源只能是負(fù)跳沿觸發(fā)。此外,只有當(dāng)定時(shí)器觸發(fā)。此外,只有當(dāng)定時(shí)器T0(或(或T1)不用的話,才可使用)不用的話,才可使用本方法來(lái)擴(kuò)充外部中斷源,此時(shí)定時(shí)器本方法來(lái)擴(kuò)充外部中斷源,此時(shí)定時(shí)器T0本身的功能將不能再本身的功能將不能再使用,除非使用軟件來(lái)對(duì)它進(jìn)行復(fù)用控制。使用,除非使用軟件來(lái)對(duì)它進(jìn)行復(fù)用控制。6.4.4 P1.0上產(chǎn)生周期為上產(chǎn)生周期為2ms的方波的方波 【例例6-4】系統(tǒng)時(shí)鐘為系統(tǒng)時(shí)鐘為12MHz,編程實(shí)現(xiàn)從,編程實(shí)現(xiàn)從P1.0引腳上輸出引腳上輸出一個(gè)周期為一個(gè)周期為2

35、ms的方波,如的方波,如圖圖6-14所示所示4142圖圖6-14 定時(shí)器控制定時(shí)器控制P1.0輸出一個(gè)周期為輸出一個(gè)周期為2ms的方波的方波 基本思想:基本思想:要在要在P1.0上產(chǎn)生周期為上產(chǎn)生周期為2ms的方波,定時(shí)器應(yīng)的方波,定時(shí)器應(yīng)產(chǎn)生產(chǎn)生1ms的周期性的定時(shí),定時(shí)對(duì)的周期性的定時(shí),定時(shí)對(duì)P1.0求反。選擇定時(shí)器求反。選擇定時(shí)器T0,方式,方式1定時(shí),采用中斷方式,定時(shí),采用中斷方式,GATE不起作用。不起作用。 計(jì)算計(jì)算T0的初值計(jì)算:的初值計(jì)算: 設(shè)設(shè)T0的初值為的初值為X,則,則(216 X) 1 106 = 1 103= 65536X =1000 則初值為:則初值為:65536

36、1000=64536,因此因此 TH0=(65536 1000) /256 ,TL0=(65536 1000) %256。 參考程序如下:參考程序如下:43#includesbit P1_0=P10;void main(void)TMOD=0 x01;/*設(shè)置定時(shí)器設(shè)置定時(shí)器T0為方式為方式2計(jì)數(shù)計(jì)數(shù)*/P1_0=0;TH0=(65536 1000) /256;/*給給T0裝入初值裝入初值*/TL0=(65536 1000) %256; /*給給T0裝入初值裝入初值*/ET0=1; /* 允許允許T0中斷中斷 */EA=1; /* 總中斷開(kāi)總中斷開(kāi) */TR0=1/* 接通接通T0 計(jì)數(shù)計(jì)數(shù)

37、* /do while (1); /* 無(wú)限循環(huán)等待無(wú)限循環(huán)等待 * /void T0_int(void) interrupt 1 using 1P1_0=! P1_0;TH0=(65536 1000) /256;TL0=(65536 1000) %256;446.4.5 P1.1上產(chǎn)生周期為上產(chǎn)生周期為1s的方波的方波 【例例6-5】假設(shè)系統(tǒng)時(shí)鐘為假設(shè)系統(tǒng)時(shí)鐘為12MHz,編程實(shí)現(xiàn)從,編程實(shí)現(xiàn)從P1.1引腳引腳上上輸出一個(gè)周期為輸出一個(gè)周期為1s的方波。的方波。 基本思想:基本思想:要在要在P1.0上產(chǎn)生周期為上產(chǎn)生周期為1s的方波,定時(shí)器應(yīng)產(chǎn)的方波,定時(shí)器應(yīng)產(chǎn)生生500ms的周期性定時(shí),定

38、時(shí)到則對(duì)的周期性定時(shí),定時(shí)到則對(duì)P1.0求反。由于定時(shí)時(shí)求反。由于定時(shí)時(shí)間較長(zhǎng),用定時(shí)器不能直接實(shí)現(xiàn),直接定時(shí)時(shí)間最長(zhǎng)的就是間較長(zhǎng),用定時(shí)器不能直接實(shí)現(xiàn),直接定時(shí)時(shí)間最長(zhǎng)的就是方式方式1,僅為,僅為65ms(系統(tǒng)時(shí)鐘系統(tǒng)時(shí)鐘12MHz)多一點(diǎn)。多一點(diǎn)。 實(shí)現(xiàn)實(shí)現(xiàn):T0定為定為10ms定時(shí),每定時(shí),每10ms對(duì)對(duì)P1.0求反一次,求反一次,P1.0輸出的脈沖加到定時(shí)器輸出的脈沖加到定時(shí)器T1的計(jì)數(shù)輸入腳的計(jì)數(shù)輸入腳P3.5(T1腳)腳),作為計(jì)數(shù)輸入,定時(shí),作為計(jì)數(shù)輸入,定時(shí)500ms需計(jì)數(shù)需計(jì)數(shù)50次。次。T1設(shè)為方式設(shè)為方式2計(jì)計(jì)數(shù),初值數(shù),初值X為:為:28X=50,則,則X=206,45

39、 所以所以TH1= TL1=206。T0設(shè)為方式設(shè)為方式1定時(shí),則控制字為定時(shí),則控制字為61H。定時(shí)器。定時(shí)器T0和和T1均采用中斷方式工作。均采用中斷方式工作。 參考程序如下:參考程序如下:#includesbit P1_0=P10;sbit P1_1=P11;void main(void)TMOD=0 x61;/*設(shè)置定時(shí)器設(shè)置定時(shí)器T0為方式為方式1定時(shí),定時(shí),T1為方式為方式2計(jì)數(shù)計(jì)數(shù)*/P1_0=0;TH0=(65536 10000) /256;/*給給T0裝初值裝初值*/TL0=(65536 10000) %256; TH1=206;/*給給T1裝初值裝初值*/TL1=206;4

40、6EA=1; /* 總中斷開(kāi)總中斷開(kāi) */ET0=1; /* 允許允許T0中斷中斷 */ET1=1; /* 允許允許T1中斷中斷 */TR0=1;TR1=1;while (1);void T0_int(void) interrupt 1 TH0=(65536 1000) /256;TL0=(65536 1000) %256;P1_0=! P1_0;void T1_int(void) interrupt 3 P1_1=! P1_1; ;/* P1.1腳產(chǎn)生腳產(chǎn)生1s的方波的方波*/ 。476.4.6 T1控制發(fā)出控制發(fā)出1KHz的音頻信號(hào)的音頻信號(hào)【例例6-6】 利用定時(shí)器利用定時(shí)器T1的中斷來(lái)

41、控制蜂鳴器發(fā)出的中斷來(lái)控制蜂鳴器發(fā)出1KHz的音頻的音頻信號(hào),電路圖見(jiàn)信號(hào),電路圖見(jiàn)圖圖6-15。假設(shè)系統(tǒng)時(shí)鐘為假設(shè)系統(tǒng)時(shí)鐘為11.0592MHz,則每個(gè)脈沖的周期為,則每個(gè)脈沖的周期為12/11.0592=1.085s。1KHz的音頻信號(hào)周期為的音頻信號(hào)周期為1ms,因此,因此要計(jì)數(shù)的脈沖數(shù)為要計(jì)數(shù)的脈沖數(shù)為1000/1.085=921次。所以次。所以T1的初值:的初值:TH1=(65536 921) /256;TL1=(65536 921) %256 參考程序如下:參考程序如下:4849圖6-15 控制蜂鳴器發(fā)出1KHz的音頻信號(hào) #includesbit P1_0=P10;sbit so

42、und=P17;void main(void)EA=1; /* 總中斷開(kāi) */ET1=1; /* 允許T0中斷 */TMOD=0 x10;/*設(shè)置定時(shí)器T1為方式1定時(shí)*/P1_0=0;TH1=(65536 921) /256;/*給T1裝初值*/TL1=(65536 921) %256; TR1=1;while (1);50void T1_int(void) interrupt 3 using0 sound =sound;TH1=(65536 921) /256;TL1=(65536 921) %256;516.4.7 測(cè)量脈沖寬度(門(mén)控位測(cè)量脈沖寬度(門(mén)控位GATEx的應(yīng)用)的應(yīng)用) 下面

43、以定時(shí)器下面以定時(shí)器T1為例,介紹門(mén)控制位為例,介紹門(mén)控制位GATE的具體應(yīng)用,的具體應(yīng)用,即測(cè)量即測(cè)量INT0*(或(或INT1* )引腳上正脈沖的寬度。)引腳上正脈沖的寬度。 【例例6-7】 門(mén)控位門(mén)控位GATE1可使可使T1的啟動(dòng)計(jì)數(shù)受的控制,的啟動(dòng)計(jì)數(shù)受的控制,當(dāng)當(dāng)GATE1=1,TR1=1時(shí),只有引腳時(shí),只有引腳INT1*輸入高電平時(shí),輸入高電平時(shí),T1才被允許計(jì)數(shù)。利用才被允許計(jì)數(shù)。利用GATE1的這一功能,可測(cè)量引腳的這一功能,可測(cè)量引腳INT1*(P3.3)上正脈沖的寬度(機(jī)器周期數(shù)),利用門(mén)控制位)上正脈沖的寬度(機(jī)器周期數(shù)),利用門(mén)控制位GATE1,測(cè)量引腳,測(cè)量引腳INT

44、1*上正脈沖的寬度。方法如上正脈沖的寬度。方法如圖圖6-16所所示。示。5253圖6-16 利用GATE位測(cè)量正脈沖的寬度 參考程序如下:#includesbit P3_3=P33;/* 位變量定義位變量定義*/unsigned count_high; /* 定義計(jì)數(shù)變量,用來(lái)讀取定義計(jì)數(shù)變量,用來(lái)讀取TH0*/unsigned count_low;/* 定義計(jì)數(shù)變量,用來(lái)讀取定義計(jì)數(shù)變量,用來(lái)讀取TL0*/void read_ count( ) ; /* 讀計(jì)數(shù)器函數(shù)讀計(jì)數(shù)器函數(shù)*/void main( )TMOD=0 x90;/*設(shè)置定時(shí)器設(shè)置定時(shí)器T1為方式為方式1定時(shí)定時(shí)*/TH1=0

45、;/*向定時(shí)器向定時(shí)器T1寫(xiě)入計(jì)數(shù)初值寫(xiě)入計(jì)數(shù)初值*/TL1=0;TR1=1;while(P3_3=1); /* 等待變低等待變低*/54TR1=1;/* 如果為低,啟動(dòng)如果為低,啟動(dòng)T1(未真正開(kāi)始計(jì)數(shù)未真正開(kāi)始計(jì)數(shù))*/while(P3_3=0); /* 等待變高,變高后等待變高,變高后T1真正開(kāi)始計(jì)數(shù)真正開(kāi)始計(jì)數(shù)*/while(P3_3=1); /* 等待變低,變低后等待變低,變低后T1停止計(jì)數(shù)停止計(jì)數(shù)*/TR1=0;read_ count( ) /* 讀計(jì)數(shù)寄存器內(nèi)容的函數(shù)讀計(jì)數(shù)寄存器內(nèi)容的函數(shù)*/void read_ count( ) /* 讀取計(jì)數(shù)寄存器的內(nèi)容讀取計(jì)數(shù)寄存器的內(nèi)容*

46、/docount_high=TH1;/* 讀高字節(jié)讀高字節(jié)*/count_low =TL1;/* 讀低字節(jié)讀低字節(jié)*/* 可將兩字節(jié)的機(jī)器周期數(shù)進(jìn)行顯示處理可將兩字節(jié)的機(jī)器周期數(shù)進(jìn)行顯示處理*/while(count_high!= TH1); 執(zhí)行以上程序,使引腳上出現(xiàn)的正脈沖寬度以機(jī)器周期數(shù)執(zhí)行以上程序,使引腳上出現(xiàn)的正脈沖寬度以機(jī)器周期數(shù)的形式讀入到的形式讀入到count_high 和和count_low兩個(gè)單元中,如果編兩個(gè)單元中,如果編寫(xiě)了顯示程序,可將其顯示在顯示器上。寫(xiě)了顯示程序,可將其顯示在顯示器上。6.4.8 實(shí)時(shí)時(shí)鐘的設(shè)計(jì)實(shí)時(shí)時(shí)鐘的設(shè)計(jì) 本節(jié)介紹如何使用定時(shí)器本節(jié)介紹如何使用

47、定時(shí)器/計(jì)數(shù)器來(lái)實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘。實(shí)時(shí)時(shí)計(jì)數(shù)器來(lái)實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘。實(shí)時(shí)時(shí)鐘就是以秒、分、時(shí)為單位計(jì)時(shí)。鐘就是以秒、分、時(shí)為單位計(jì)時(shí)。1計(jì)時(shí)的實(shí)現(xiàn)計(jì)時(shí)的實(shí)現(xiàn) 時(shí)鐘最小計(jì)時(shí)單位是秒,如何獲得時(shí)鐘最小計(jì)時(shí)單位是秒,如何獲得1s定時(shí)?可將定時(shí)器定時(shí)?可將定時(shí)器T0的定時(shí)時(shí)間定為的定時(shí)時(shí)間定為50ms,采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),采用中斷方式進(jìn)行溢出次數(shù)的累計(jì),計(jì)滿計(jì)滿20次,則秒計(jì)數(shù)變量次,則秒計(jì)數(shù)變量s加加1;若秒計(jì)滿;若秒計(jì)滿60,則分計(jì)數(shù)變量,則分計(jì)數(shù)變量m加加1,同時(shí)將秒計(jì)數(shù)變量,同時(shí)將秒計(jì)數(shù)變量s清清0;若分鐘計(jì)滿;若分鐘計(jì)滿60,則小時(shí)計(jì)數(shù),則小時(shí)計(jì)數(shù)變量變量h h加加1 1;若小時(shí)計(jì)數(shù)變量滿;若小時(shí)計(jì)數(shù)變量滿2424,則將小時(shí)計(jì)數(shù)變量清,則將小時(shí)計(jì)數(shù)變量清0 0。2 2程序設(shè)計(jì)程序設(shè)計(jì) 先將定時(shí)器以及各計(jì)數(shù)變量,然后調(diào)用時(shí)間顯示的子程序。先將定時(shí)器以及各計(jì)數(shù)變量,然后調(diào)用時(shí)間顯示的子程序。計(jì)時(shí)功能由定時(shí)器計(jì)時(shí)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論