第章定時器計數(shù)器_第1頁
第章定時器計數(shù)器_第2頁
第章定時器計數(shù)器_第3頁
第章定時器計數(shù)器_第4頁
第章定時器計數(shù)器_第5頁
已閱讀5頁,還剩67頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第6 6章章 AT89S51AT89S51單片機的單片機的 定時器定時器/ /計數(shù)器計數(shù)器12第第6章章 目錄目錄6.1 定時器定時器/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu) 6.1.1 工作方式控制寄存器工作方式控制寄存器TMOD 6.1.2 定時器定時器/計數(shù)器控制寄存器計數(shù)器控制寄存器TCON6.2 定時器定時器/計數(shù)器的計數(shù)器的4種工作方式種工作方式 6.2.1 方式方式0 6.2.2 方式方式1 6.2.3 方式方式2 6.2.4 方式方式36.3 對外部輸入的計數(shù)信號的要求對外部輸入的計數(shù)信號的要求36.4 定時器定時器/計數(shù)器的編程和應(yīng)用計數(shù)器的編程和應(yīng)用 6.4.1 方式方式1的應(yīng)用的應(yīng)用

2、 6.4.2 方式方式2的應(yīng)用的應(yīng)用 6.4.3 方式方式3的應(yīng)用的應(yīng)用 6.4.4 門控制位門控制位GATEx的應(yīng)用的應(yīng)用測量脈沖寬度測量脈沖寬度 6.4.5 實時時鐘的設(shè)計實時時鐘的設(shè)計4內(nèi)容概要內(nèi)容概要工業(yè)檢測與控制,許多場合都要用到工業(yè)檢測與控制,許多場合都要用到計數(shù)計數(shù)或或定時定時功功能。例如,對外部脈沖進行計數(shù),產(chǎn)生精確的定時時間等。能。例如,對外部脈沖進行計數(shù),產(chǎn)生精確的定時時間等。AT89S51片內(nèi)有兩個可編程的定時器片內(nèi)有兩個可編程的定時器/計數(shù)器計數(shù)器T1、T0,可,可滿足需要。滿足需要。本章介紹定時器本章介紹定時器/計數(shù)器的計數(shù)器的結(jié)構(gòu)結(jié)構(gòu)與與功能功能,2種種工作模式工作

3、模式和和4種種工作方式工作方式,以及相關(guān)的,以及相關(guān)的2個特殊功能寄存器個特殊功能寄存器TMOD和和TCON各位的定義及其編程,最后介紹定時器各位的定義及其編程,最后介紹定時器/計數(shù)器的編計數(shù)器的編程及應(yīng)用實例。程及應(yīng)用實例。6.1 定時器定時器/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)定時器定時器/計數(shù)器計數(shù)器結(jié)構(gòu)結(jié)構(gòu)如如圖圖6-1所示所示,定時器,定時器/計數(shù)器計數(shù)器T0由由特殊功能寄存器特殊功能寄存器TH0、TL0構(gòu)成,定時器構(gòu)成,定時器/計數(shù)器計數(shù)器T1由特殊由特殊功能寄存器功能寄存器TH1、TL1構(gòu)成。構(gòu)成。 5圖圖6-1 AT89S51單片機的定時器單片機的定時器/計數(shù)器結(jié)構(gòu)框圖計數(shù)器結(jié)構(gòu)框圖具有

4、定時器和計數(shù)器具有定時器和計數(shù)器2種工作模式種工作模式,4種工作方式(種工作方式(方式方式0、方式方式1、方式、方式2和方式和方式3)。屬于)。屬于增增1計數(shù)器計數(shù)器。TMOD用于選擇定時器用于選擇定時器/計數(shù)器計數(shù)器T0、T1的工作模式和工作的工作模式和工作方式。方式。TCON用于控制用于控制T0、T1的啟動和停止計數(shù),同時包含了的啟動和停止計數(shù),同時包含了T0、T1的狀態(tài)。的狀態(tài)。T0、T1不論是工作在定時器模式還是計數(shù)器模式,都是不論是工作在定時器模式還是計數(shù)器模式,都是對脈沖信號進行計數(shù),只是計數(shù)信號的來源不同。對脈沖信號進行計數(shù),只是計數(shù)信號的來源不同。計數(shù)器模式計數(shù)器模式是對加在是

5、對加在T0(P3.4)和)和T1(P3.5)兩個引腳)兩個引腳上的外部脈沖進行計數(shù)(見上的外部脈沖進行計數(shù)(見圖圖6-1)。)。67定時器工作模式定時器工作模式是對單片機的時鐘振蕩器信號經(jīng)片內(nèi)是對單片機的時鐘振蕩器信號經(jīng)片內(nèi)12分頻分頻后的內(nèi)部脈沖信號計數(shù)。由于時鐘頻率是定值,所以可后的內(nèi)部脈沖信號計數(shù)。由于時鐘頻率是定值,所以可根根據(jù)計數(shù)值計算出定時時間據(jù)計數(shù)值計算出定時時間。計數(shù)器的起始計數(shù)都是計數(shù)器的起始計數(shù)都是從計數(shù)器初值開始從計數(shù)器初值開始的。單片機復(fù)位時的。單片機復(fù)位時計數(shù)器的初值為計數(shù)器的初值為0,也可用指令給計數(shù)器裝入一個新的初,也可用指令給計數(shù)器裝入一個新的初值。值。86.1

6、.1 工作方式控制寄存器工作方式控制寄存器TMOD用于選擇定時器用于選擇定時器/計數(shù)器的工作模式和工作方式,計數(shù)器的工作模式和工作方式,字節(jié)地址字節(jié)地址為為89H,不能位尋址,格式如,不能位尋址,格式如圖圖6-2所示所示。圖6-2 TMOD格式圖圖6-2 TMOD格式格式8位分為兩組,位分為兩組,高高4位位控制控制T1,低低4位位控制控制T0。TMOD各位的功能。各位的功能。(1)GATE門控位門控位。 0:僅由運行控制位僅由運行控制位TRx(x = 0,1)來控制定時器)來控制定時器/計計數(shù)器運行。數(shù)器運行。 1:用外中斷引腳(用外中斷引腳( 或或 )上的電平與運行)上的電平與運行控制位控制

7、位TRx共同來控制定時器共同來控制定時器/計數(shù)器運行。計數(shù)器運行。90INT1INT(2)M1、M0工作方式選擇位工作方式選擇位M1、M0共有共有4種編碼種編碼,對應(yīng)于,對應(yīng)于4種工作方式種工作方式的選擇,如的選擇,如表表6-1所示。所示。(3)C/ 計數(shù)器模式和定時器模式選擇位計數(shù)器模式和定時器模式選擇位 0:為定時器工作模式,對單片機的晶體振蕩器為定時器工作模式,對單片機的晶體振蕩器12分頻分頻后的脈沖進行計數(shù)。后的脈沖進行計數(shù)。1:為計數(shù)器工作模式,計數(shù)器對外部輸入引腳為計數(shù)器工作模式,計數(shù)器對外部輸入引腳T0(P3.4)或)或T1(P3.5)的外部脈沖(負跳變)計數(shù)。)的外部脈沖(負跳

8、變)計數(shù)。10T116.1.2 定時器定時器/計數(shù)器控制寄存器計數(shù)器控制寄存器TCON 字節(jié)地址為字節(jié)地址為88H,可位尋址,位地址為,可位尋址,位地址為88H8FH。格式。格式如如圖圖6-3所示所示。圖圖6-3 TCON格式格式在第在第5章已介紹與外部中斷有關(guān)的低章已介紹與外部中斷有關(guān)的低4位。這里僅介紹與定位。這里僅介紹與定時器時器/計數(shù)器相關(guān)的高計數(shù)器相關(guān)的高4位功能。位功能。(1)TF1、TF0計數(shù)溢出標志位。計數(shù)溢出標志位。當計數(shù)器計數(shù)溢出時,該位置當計數(shù)器計數(shù)溢出時,該位置“1”。使用查詢方式時,。使用查詢方式時,此位作為狀態(tài)位供此位作為狀態(tài)位供CPU查詢,但應(yīng)注意查詢有效后,應(yīng)使

9、用查詢,但應(yīng)注意查詢有效后,應(yīng)使用軟件及時將該位清軟件及時將該位清“0”。使用中斷方式時,此位作為中斷。使用中斷方式時,此位作為中斷請求標志位,進入中斷服務(wù)程序后由硬件自動清請求標志位,進入中斷服務(wù)程序后由硬件自動清“0”。(2)TR1、TR0計數(shù)運行控制位。計數(shù)運行控制位。TR1位(或位(或TR0位)位)= 1,啟動定時器,啟動定時器/計數(shù)器工作的必要計數(shù)器工作的必要條件。條件。TR1位(或位(或TR0位)位) = 0,停止定時器,停止定時器/計數(shù)器工作。計數(shù)器工作。該位可由軟件置該位可由軟件置“1”或清或清“0”。126.2 定時器定時器/計數(shù)器的計數(shù)器的4種工作方式種工作方式4種工作方式

10、分別介紹如下。種工作方式分別介紹如下。6.2.1 方式方式0M1、M0=00時,被設(shè)置為工作方式時,被設(shè)置為工作方式0,等效邏輯結(jié)構(gòu)框圖,等效邏輯結(jié)構(gòu)框圖如如圖圖6-4所示所示(以定時器(以定時器/計數(shù)器計數(shù)器T1為例,為例,TMOD.5、TMOD.4 = 00)。)。13圖圖6-4 定時器定時器/計數(shù)器方式計數(shù)器方式0邏輯結(jié)構(gòu)框圖邏輯結(jié)構(gòu)框圖13位位計數(shù)器,由計數(shù)器,由TLx x(x = 0,1)低低5位位和和THx高高8位位構(gòu)成。構(gòu)成。TLx x低低5位溢出則向位溢出則向THx x進位,進位,THx x計數(shù)溢出則把計數(shù)溢出則把TCON中中的溢出標志位的溢出標志位TFx x置置“1”。14圖

11、圖6-2的的C/ 位位控制的電子開關(guān)決定了定時器控制的電子開關(guān)決定了定時器/計數(shù)器的計數(shù)器的兩種工作模式。兩種工作模式。(1)C/ =0,電子開關(guān)打在上面位置,電子開關(guān)打在上面位置,T1(或(或T0)為定時器工作模式,把時鐘振蕩器為定時器工作模式,把時鐘振蕩器12分頻后的脈沖作為計分頻后的脈沖作為計數(shù)信號。數(shù)信號。(2)C/ =1,電子開關(guān)打在下面位置,電子開關(guān)打在下面位置,T1(或(或T0)為計數(shù)器工作模式,計數(shù)脈沖為為計數(shù)器工作模式,計數(shù)脈沖為P3.4(或(或P3.5)引腳上的)引腳上的外部輸入脈沖,當引腳上發(fā)生負跳變時,計數(shù)器加外部輸入脈沖,當引腳上發(fā)生負跳變時,計數(shù)器加1。GATE位狀

12、態(tài)位狀態(tài)決定定時器決定定時器/計數(shù)器的運行控制取決計數(shù)器的運行控制取決TRx一一個條件個條件還是還是TRx x和和 x x(x = 0,1)引腳狀態(tài))引腳狀態(tài)兩個條件兩個條件。15TTTINT16(1) GATE = 0,A點(見點(見圖圖6-4)電位恒為)電位恒為1,B點電位點電位僅取決僅取決于于TRx狀態(tài)狀態(tài)。TRx = 1,B點為高電平,控制端控制電子開關(guān)點為高電平,控制端控制電子開關(guān)閉合,允許閉合,允許T1(或(或T0)對脈沖計數(shù)。)對脈沖計數(shù)。TRx = 0,B點為低電平,點為低電平,電子開關(guān)斷開,禁止電子開關(guān)斷開,禁止T1(或(或T0)計數(shù)。)計數(shù)。(2) GATE = 1,B點電

13、位由點電位由 (x = 0,1)的輸入電平和)的輸入電平和TRx的狀態(tài)這兩個條件來確定。當?shù)臓顟B(tài)這兩個條件來確定。當TRx = 1,且,且 =1時,時,B點才為點才為1,控制端控制電子開關(guān)閉合,允許,控制端控制電子開關(guān)閉合,允許T1(或(或T0)計數(shù)。)計數(shù)。故這種情況下計數(shù)器是否計數(shù)是由故這種情況下計數(shù)器是否計數(shù)是由TRx 和和 兩個條件兩個條件來來共同控制的。共同控制的。INTxxINTxINT176.2.2 方式方式1當當M1、M0=01時,定時器時,定時器/計數(shù)器工作于計數(shù)器工作于方式方式1,這時定時器,這時定時器/計數(shù)器的等效電路邏輯結(jié)構(gòu)如計數(shù)器的等效電路邏輯結(jié)構(gòu)如圖圖6-5所示。所

14、示。方式方式1和方式和方式0的差別的差別僅僅在于僅僅在于計數(shù)器的位數(shù)計數(shù)器的位數(shù)不同,方式不同,方式1為為16位計數(shù)器位計數(shù)器,由,由THx高高8位和位和TLx低低8位構(gòu)成(位構(gòu)成(x= 0,1),方式),方式0則為則為13位計數(shù)器,有關(guān)控制狀態(tài)位的含義(位計數(shù)器,有關(guān)控制狀態(tài)位的含義(GATE、C/ 、TFx、TRx)與方式)與方式0相同。相同。T 18圖圖6-5 定時器定時器/計數(shù)器方式計數(shù)器方式1邏輯結(jié)構(gòu)框圖邏輯結(jié)構(gòu)框圖196.2.3 方式方式2方式方式0和方式和方式1的最大特點是計數(shù)溢出后,計數(shù)器為全的最大特點是計數(shù)溢出后,計數(shù)器為全0。因。因此在循環(huán)定時或循環(huán)計數(shù)應(yīng)用時就此在循環(huán)定時

15、或循環(huán)計數(shù)應(yīng)用時就存在用指令反復(fù)裝入計存在用指令反復(fù)裝入計數(shù)初值的數(shù)初值的問題問題。這不僅影響定時精度,也給程序設(shè)計帶來這不僅影響定時精度,也給程序設(shè)計帶來麻煩。方式麻煩。方式2就是針對此問題而設(shè)置的。就是針對此問題而設(shè)置的。當當M1、M0為為10時,定時器時,定時器/計數(shù)器處于工作方式計數(shù)器處于工作方式2,這時定,這時定時器時器/計數(shù)器的等效邏輯結(jié)構(gòu)如計數(shù)器的等效邏輯結(jié)構(gòu)如圖圖6-6所示所示(以定時器(以定時器T1為為例,例,x= 1)。)。20圖圖6-6 定時器定時器/計數(shù)器方式計數(shù)器方式2邏輯結(jié)構(gòu)框圖邏輯結(jié)構(gòu)框圖21定時器定時器/計數(shù)器的計數(shù)器的方式方式2為自動恢復(fù)初值為自動恢復(fù)初值(初

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

17、相當精確地確定定時時間定時時間。226.2.4 方式方式3是為是為增加一個增加一個8位定時器位定時器/計數(shù)器計數(shù)器而設(shè),使而設(shè),使AT89S51單片機單片機具有具有3個個定時器定時器/計數(shù)器。計數(shù)器。方式方式3只適用于只適用于T0,T1不能工作在方式不能工作在方式3。T1處于方式處于方式3時時相當于相當于TR1= 0,停止計數(shù)(此時,停止計數(shù)(此時T1可用來作為串行口波特可用來作為串行口波特率產(chǎn)生器)。率產(chǎn)生器)。1工作方式工作方式3下的下的T0TMOD的低的低2位為位為11時,時,T0的工作方式被選為方式的工作方式被選為方式3,各,各引腳與引腳與T0的邏輯關(guān)系如的邏輯關(guān)系如圖圖6-8所示所示

18、。定時器定時器/計數(shù)器計數(shù)器T0分為兩個獨立的分為兩個獨立的8位計數(shù)器位計數(shù)器TL0和和TH0,TL0使用使用T0的狀態(tài)控制位的狀態(tài)控制位C/ 、GATE、TR0、TF0 ,而,而TH0被固定為一個被固定為一個8位定時器(不能作為外部計數(shù)模式),位定時器(不能作為外部計數(shù)模式),并使用定時器并使用定時器T1的狀態(tài)控制位的狀態(tài)控制位TR1和和TF1,同時占用定時器,同時占用定時器T1的中斷請求源的中斷請求源TF1。23T 24圖圖6-8 定時器定時器/計數(shù)器計數(shù)器T0方式方式3的邏輯結(jié)構(gòu)框圖的邏輯結(jié)構(gòu)框圖252T0工作在方式工作在方式3時時T1的各種工作方式的各種工作方式一般情況下,一般情況下,

19、當當T1用作串行口的波特率發(fā)生器時,用作串行口的波特率發(fā)生器時,T0才工才工作在方式作在方式3。T0處于工作方式處于工作方式3時,時,T1可定為方式可定為方式0、方式、方式1和方式和方式2,用來作為串行口的波特率發(fā)生器,或不需要中,用來作為串行口的波特率發(fā)生器,或不需要中斷的場合。斷的場合。(1 1)T1T1工作在方式工作在方式0 0T1的控制字中的控制字中M1、M0 = 00時,時,T1工作在方式工作在方式0,工作,工作示意圖如示意圖如圖圖6-9所示所示。 26圖圖6-9 T0工作在方式工作在方式3時時T1為方式為方式0的工作示意圖的工作示意圖(2)T1工作在方式工作在方式1當當T1的控制字

20、中的控制字中M1、M0 = 01時,時,T1工作在方式工作在方式1,工,工作示意圖如圖作示意圖如圖6-10所示。所示。 27圖圖6-10 T0工作在方式工作在方式3時時T1為方式為方式1的工作示意圖的工作示意圖(3)T1工作在方式工作在方式2當當T1的控制字中的控制字中M1、M0 = 10時,時,T1的工作方式為方的工作方式為方式式2,工作示意圖如圖,工作示意圖如圖6-11所示。所示。 28圖圖6-11 T0工作在方式工作在方式3時時T1為方式為方式2的工作示意圖的工作示意圖 (4)T1設(shè)置在方式設(shè)置在方式3 當當T0設(shè)置在方式設(shè)置在方式3,再把,再把T1也設(shè)成方式也設(shè)成方式3,此時,此時T1

21、停止計數(shù)停止計數(shù)。296.3 對外部輸入的計數(shù)信號的要求對外部輸入的計數(shù)信號的要求當定時器當定時器/計數(shù)器工作在計數(shù)器模式時,計數(shù)脈沖來自外部輸計數(shù)器工作在計數(shù)器模式時,計數(shù)脈沖來自外部輸入引腳入引腳T0或或T1。當輸入信號產(chǎn)生負跳變時,計數(shù)器的值增當輸入信號產(chǎn)生負跳變時,計數(shù)器的值增1。每個機器周期每個機器周期的的S5P2期間,都期間,都對外部輸入引腳對外部輸入引腳T0或或T1進行采進行采樣。如在第一個機器周期中采得的值為樣。如在第一個機器周期中采得的值為1,而在下一個機器,而在下一個機器周期中采得的值為周期中采得的值為0,則在緊跟著的再下一個機器周期,則在緊跟著的再下一個機器周期S3P1期

22、間,計數(shù)器加期間,計數(shù)器加1。由于。由于確認一次確認一次負跳變負跳變要花要花2個個機器周期機器周期,即即24個振蕩周期,因此個振蕩周期,因此外部輸入的計數(shù)脈沖的外部輸入的計數(shù)脈沖的最高頻率最高頻率為為系統(tǒng)振蕩器頻率的系統(tǒng)振蕩器頻率的1/24。 30例如,選用例如,選用6MHz頻率的晶體,允許輸入的脈沖頻率最高為頻率的晶體,允許輸入的脈沖頻率最高為250kHz。如果選用。如果選用12MHz頻率的晶體,則可輸入最高頻頻率的晶體,則可輸入最高頻率為率為500kHz的外部脈沖。的外部脈沖。對于外部輸入信號的對于外部輸入信號的占空比占空比并沒有什么限制并沒有什么限制,但為了確保某,但為了確保某一給定電平

23、在變化之前能被采樣一次,則這一電平一給定電平在變化之前能被采樣一次,則這一電平至少要至少要保持一個機器周期保持一個機器周期。故對外部輸入信號的要求如故對外部輸入信號的要求如圖圖6-12所示,圖中,所示,圖中,Tcy為為機器周期。機器周期。31圖圖6-12 對外部計數(shù)輸入信號的要求對外部計數(shù)輸入信號的要求6.4 6.4 定時器定時器/ /計數(shù)器的編程和應(yīng)用計數(shù)器的編程和應(yīng)用4 4種方式,方式種方式,方式0 0與方式與方式1 1基本相同,只是計數(shù)位數(shù)不同。方基本相同,只是計數(shù)位數(shù)不同。方式式0 0初值計算復(fù)雜,初值計算復(fù)雜,一般不用方式一般不用方式0 0,而,而用方式用方式1 1。6.4.1 6.

24、4.1 方式方式1 1的應(yīng)用的應(yīng)用【例例6-16-1】假設(shè)系統(tǒng)時鐘頻率采用假設(shè)系統(tǒng)時鐘頻率采用6MHz6MHz,在在P1.0P1.0引腳上輸出引腳上輸出一個一個周期為周期為2ms2ms的的方波方波,如,如圖圖6-136-13所示。所示。32圖圖6-13 P1.0引腳上輸出周期為引腳上輸出周期為2ms的方波的方波基本思想基本思想:方波周期:方波周期T0T0確定,確定,T0T0每隔每隔1ms1ms計數(shù)溢出計數(shù)溢出1 1次,次,即即T0T0每隔每隔1ms1ms產(chǎn)生一次中斷,產(chǎn)生一次中斷,CPUCPU響應(yīng)中斷后,在中斷服務(wù)響應(yīng)中斷后,在中斷服務(wù)子程序中對子程序中對P1.0P1.0取反取反, ,如如圖圖

25、6-136-13所示。為此要做如下幾步所示。為此要做如下幾步工作。工作。 (1 1)計算計數(shù)初值)計算計數(shù)初值X X機器周期機器周期 = = 2 2 s s = = 2 2 10106 6s s設(shè)需要設(shè)需要裝入裝入T0T0的的初值為初值為X X,則有,則有(2(21616X X) ) 2 2 10106 6=1=1 10103 3,2 21616X X=500=500,X X=65036=65036。X X化為十六進制數(shù),即:化為十六進制數(shù),即: 6503665036 = = FE0CHFE0CH 。T0T0的的初值初值為為TH0 =FEHTH0 =FEH,TL0 =TL0 = 0CH0CH。

26、33(2)初始化程序設(shè)計)初始化程序設(shè)計采用定時器采用定時器中斷方式中斷方式工作。包括定時器初始化和中斷系工作。包括定時器初始化和中斷系統(tǒng)初始化,主要是對統(tǒng)初始化,主要是對寄存器寄存器IP、IE、TCON、TMOD的相的相應(yīng)位進行正確的設(shè)置,并將計數(shù)初值送入定時器中。應(yīng)位進行正確的設(shè)置,并將計數(shù)初值送入定時器中。(3)程序設(shè)計)程序設(shè)計中斷服務(wù)子程序除了完成所要求的中斷服務(wù)子程序除了完成所要求的產(chǎn)生方波產(chǎn)生方波的工作之外,的工作之外,還要注意將計數(shù)還要注意將計數(shù)初值重新裝入定時器初值重新裝入定時器,為下一次產(chǎn)生中斷,為下一次產(chǎn)生中斷做準備。做準備。本例,本例,主程序主程序用一條轉(zhuǎn)至自身的短跳轉(zhuǎn)

27、指令來代替。用一條轉(zhuǎn)至自身的短跳轉(zhuǎn)指令來代替。34參考程序如下:參考程序如下: ORG0000H;程序入口;程序入口RESET:AJMP MAIN ;轉(zhuǎn)主程序;轉(zhuǎn)主程序 ORG 000BH ;T0中斷入口中斷入口 AJMP IT0P;轉(zhuǎn);轉(zhuǎn)T0中斷處理程序中斷處理程序IT0P ORG 0100H;主程序入口;主程序入口MAIN: MOV SP,#60H;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD,#01H;設(shè)置;設(shè)置T0為方式為方式1定時定時 ACALL PT0M0;調(diào)用初始化子程序;調(diào)用初始化子程序PT0M0HERE: AJMP HERE ;原地循環(huán),等待中斷;原地循環(huán),等待中斷35PT0M0

28、: MOV TL0,#0CH;T0初始化,裝初值的低初始化,裝初值的低8位位 MOV TH0,#0FEH;裝初值的高;裝初值的高8位位 SETB ET0;允許;允許T0中斷中斷 SETB EA ;總中斷允許;總中斷允許 SETB TR0;啟動;啟動T0 RETIT0P: MOV TL0,#0CH;中斷子程序,;中斷子程序,T0重裝初值重裝初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的狀態(tài)取反的狀態(tài)取反 RETI程序說明:程序說明:當單片機復(fù)位時,從程序入口當單片機復(fù)位時,從程序入口0000H跳向主跳向主程序程序MAIN處執(zhí)行。其中調(diào)用了處執(zhí)行。其中調(diào)用了T0初始化子程序初始化

29、子程序PT0M0。36子程序返回后,子程序返回后,程序執(zhí)行程序執(zhí)行“AJMP HERE”指令,則指令,則循環(huán)等待。循環(huán)等待。當當響應(yīng)響應(yīng)T0定時中斷定時中斷時,則跳向時,則跳向T0中斷入口,再從中斷入口,再從T0中中斷入口跳向斷入口跳向IT0P標號處執(zhí)行標號處執(zhí)行T0中斷服務(wù)子程序。中斷服務(wù)子程序。當當執(zhí)行完中斷返回的指令執(zhí)行完中斷返回的指令“RETI”后,又返回斷點處后,又返回斷點處繼續(xù)執(zhí)行循環(huán)指令繼續(xù)執(zhí)行循環(huán)指令“AJMP HERE”。在實際的程序中,。在實際的程序中,“AJMP HERE” 實際上是一段主程序。當下一次定時實際上是一段主程序。當下一次定時器器T0的的1ms定時中斷發(fā)生時,

30、再跳向定時中斷發(fā)生時,再跳向T0中斷入口,從而中斷入口,從而重復(fù)執(zhí)行上述過程。重復(fù)執(zhí)行上述過程。如如CPU不做其他工作,不做其他工作,也可用查詢方式也可用查詢方式進行控制,程進行控制,程序要簡單得多。序要簡單得多。37查詢方式參考程序:查詢方式參考程序: MOVTMOD,#01H;設(shè)置;設(shè)置T0為方式為方式1LOOP: MOVTH0,#0FEH ;T0置初值置初值 MOVTL0,# 0CH SETBTR0 ;接通;接通T0LOOP1:JNB TF0,LOOP1 ;查;查TF0,TF0 =0, T0未溢出;未溢出; ;TF0 =1, T0溢出,溢出, CLRTR0 ;T0溢出,溢出, 關(guān)斷關(guān)斷T

31、0 CPLP1.0 ;P1.0的狀態(tài)求反的狀態(tài)求反 SJMPLOOP查詢查詢程序雖簡單程序雖簡單,但,但CPU必須要不斷查詢必須要不斷查詢TF0標志,工作標志,工作效率低效率低。38【例例6-2】系統(tǒng)時鐘為系統(tǒng)時鐘為6MHz,編寫定時器,編寫定時器T0產(chǎn)生產(chǎn)生1s定定時的程序。時的程序。基本思想:基本思想:采用定時器模式。因采用定時器模式。因定時時間較長定時時間較長,首先確,首先確定定采用哪一種工作方式采用哪一種工作方式。時鐘為。時鐘為6MHz的條件下,定時器的條件下,定時器各種工作方式最長可定時時間:各種工作方式最長可定時時間:方式方式0最長可定時最長可定時16.384ms;方式方式1最長可

32、定時最長可定時131.072ms;方式方式2最長可定時最長可定時512 s。由上可見,可由上可見,可選選方式方式1,每隔,每隔100ms中斷一次中斷一次,中斷中斷10次次為為1s。39(1)計算計數(shù)初值)計算計數(shù)初值X因為因為(216 X) 2 106 = 101,所以,所以X = 15536 = 3CB0H。因此因此TH0 = 3CH,TL0 = B0H。(2)10次計數(shù)的實現(xiàn)次計數(shù)的實現(xiàn)對于中斷對于中斷10次的計數(shù),采用次的計數(shù),采用B寄存器寄存器作為作為中斷次數(shù)計數(shù)器中斷次數(shù)計數(shù)器。(3)程序設(shè)計)程序設(shè)計參考程序如下:參考程序如下: ORG0000H;程序運行入口;程序運行入口RESE

33、T:LJMP MAIN ;跳向主程序入口;跳向主程序入口MAIN ORG000BH ;T0的中斷入口的中斷入口 LJMPIT0P;轉(zhuǎn);轉(zhuǎn)T0中斷處理子程序中斷處理子程序IT0P ORG1000H;主程序入口;主程序入口40MAIN:MOVSP,#60H;設(shè)堆棧指針;設(shè)堆棧指針 MOVB,#0AH;設(shè)循環(huán)次數(shù);設(shè)循環(huán)次數(shù)10次次 MOVTMOD,#01H;設(shè)置;設(shè)置T0工作在方式工作在方式1定時定時 MOV TL0,#0B0H;給;給T0設(shè)初值設(shè)初值 MOV TH0,#3CH SETBET0;允許;允許T0中斷中斷 SETBEA ;總中斷允許;總中斷允許 SETBTR0;啟動;啟動T0HERE:

34、 SJMPHERE;原地循環(huán),等待中斷;原地循環(huán),等待中斷IT0P: MOVTL0,#0B0H ;T0中斷子程序,中斷子程序,T0重裝初值重裝初值 MOVTH0,#3CH DJNZB,RTURN;B中斷次數(shù)計數(shù),減中斷次數(shù)計數(shù),減1非非0則則;中斷返回;中斷返回 CLRTR0 ;1s定時時間到,停止定時時間到,停止T0工作工作SETBF0;1s定時時間到標志定時時間到標志F0置置1RTURN:RETI41程序說明:程序說明:不論不論1s定時時間是否已到,都返回到定時時間是否已到,都返回到“SJMP HERE”指令處。指令處?!癝JMP HERE”指令實際是指令實際是一段主程序。在這段主程序中一

35、段主程序。在這段主程序中再通過對再通過對F0標志標志的的判定判定,可,可知知1s定時是否到,再進行具體處理。定時是否到,再進行具體處理。426.4.2 方式方式2的應(yīng)用的應(yīng)用方式方式2是一個可以是一個可以自動重新裝載初值自動重新裝載初值的的8位計數(shù)器位計數(shù)器/定時器。定時器。可可省去省去重裝初值指令。重裝初值指令。當某個定時器當某個定時器/計數(shù)器不使用時,可計數(shù)器不使用時,可擴展一個擴展一個負跳沿觸發(fā)負跳沿觸發(fā)的的外中斷源外中斷源。【例例6-36-3】擴展一個擴展一個負跳沿觸發(fā)的外部中斷源負跳沿觸發(fā)的外部中斷源,把定時器,把定時器/計數(shù)器計數(shù)器T0腳腳作為作為外部中斷請求輸入端外部中斷請求輸入

36、端,溢出標志,溢出標志TF0作為外作為外中斷請求標志。中斷請求標志。基本思想:基本思想:設(shè)為方式設(shè)為方式2(自動裝入常數(shù)方式)計數(shù)模式,(自動裝入常數(shù)方式)計數(shù)模式,TH0、TL0初值初值均為均為0FFH。當。當T0腳發(fā)生負跳變時,腳發(fā)生負跳變時,T0計數(shù)計數(shù)溢出,溢出,TF0置置“1”,單片機發(fā)出中斷請求。,單片機發(fā)出中斷請求。43初始化程序:初始化程序: ORG0000H AJMPIINI;跳到初始化程序;跳到初始化程序 ORG000BH AJMPIT0P;跳到外中斷處理程序;跳到外中斷處理程序IINI:MOV TMOD,#06H;設(shè)置;設(shè)置T0為方式為方式2 MOV TL0,#0FFH;

37、設(shè);設(shè)T0初值初值 MOV TH0,#0FFH SETB ET0;允許;允許T0中斷中斷 SETB EA;總中斷允許;總中斷允許 SETB TR0;啟動;啟動T0 IT0P: 外中斷處理程序段外中斷處理程序段 44程序說明:程序說明:當連接在當連接在P3.4(T0腳)的外部中斷請求輸腳)的外部中斷請求輸入腳電平發(fā)生負跳變時,入腳電平發(fā)生負跳變時,TL0加加1,產(chǎn)生溢出,產(chǎn)生溢出,TF0置置“1”,向單片機發(fā)出中斷請求,同時,向單片機發(fā)出中斷請求,同時TH0的內(nèi)容的內(nèi)容0FFH送送TL0,即,即TL0恢復(fù)初值恢復(fù)初值0FFH。P3.4腳相當于一個腳相當于一個負跳沿負跳沿觸發(fā)的觸發(fā)的外中斷請求源外

38、中斷請求源輸入輸入。對。對P3.5也可做類似的處理。也可做類似的處理。45【例例6-4】 當當T0(P3.4)引腳上發(fā)生負跳變時,作為)引腳上發(fā)生負跳變時,作為P1.0引腳產(chǎn)生方波的啟動信號。開始從引腳產(chǎn)生方波的啟動信號。開始從P1.0腳腳上輸出一個上輸出一個周期為周期為1ms的的方波方波,如,如圖圖6-14所示所示(系統(tǒng)時鐘(系統(tǒng)時鐘6MHz)。)?;舅枷耄夯舅枷耄篢0設(shè)為設(shè)為方式方式1計數(shù)計數(shù),初值初值為為FFFFH。當外部計。當外部計數(shù)輸入端數(shù)輸入端T0(P3.4)發(fā)生一次負跳變發(fā)生一次負跳變時,時,T0加加1且且溢出溢出,溢,溢出標志出標志TF0置置“1”,向,向CPU發(fā)出中斷請求

39、,此時發(fā)出中斷請求,此時T0相當于相當于一個負跳沿觸發(fā)的外部中斷源。一個負跳沿觸發(fā)的外部中斷源。進入進入T0中斷程序后,中斷程序后,F(xiàn)0標志置標志置“1”,說明,說明T0引腳上已接引腳上已接收過負跳變信號。收過負跳變信號。T1定義為定義為方式方式2定時定時。在。在T0引腳產(chǎn)生一次引腳產(chǎn)生一次負跳變后,啟動負跳變后,啟動T1每每500 s產(chǎn)生一次中斷產(chǎn)生一次中斷,在,在中斷服務(wù)子程中斷服務(wù)子程序序中對中對P1.0求反求反,使,使P1.0產(chǎn)生產(chǎn)生周期周期1ms的方波。由于省去重的方波。由于省去重新裝初值指令,所以可產(chǎn)生新裝初值指令,所以可產(chǎn)生精確精確的定時時間。的定時時間。46 47圖圖6-14

40、6-14 負跳變觸發(fā)輸出一個周期為負跳變觸發(fā)輸出一個周期為1ms1ms的方波的方波(1)計算)計算T1的初值的初值設(shè)設(shè)T1的初值為的初值為x,則,則(28 x) 2 106 = 5 104x = 28 250 = 6 = 06H(2)程序設(shè)計)程序設(shè)計參考程序參考程序: ORG 0000H;程序入口;程序入口RESET:LJMP MAIN ;跳向主程序;跳向主程序MAIN ORG 000BH;T0的中斷入口的中斷入口 LJMP IT0P ;轉(zhuǎn);轉(zhuǎn)T0中斷服務(wù)程序中斷服務(wù)程序 ORG 001BH;T1的中斷入口的中斷入口 LJMP IT1P ;轉(zhuǎn);轉(zhuǎn)T1中斷服務(wù)程序中斷服務(wù)程序48 ORG 01

41、00H;主程序入口;主程序入口MAIN: MOV SP,#60H;設(shè)堆棧指針;設(shè)堆棧指針 ACALL PT0M2;調(diào)用對;調(diào)用對T0,T1初始化子程序初始化子程序LOOP: MOV C,F(xiàn)0 ;T0是否是否產(chǎn)生過中斷,若產(chǎn)生產(chǎn)生過中斷,若產(chǎn)生;過,;過,F(xiàn)0置置1 JNC LOOP;T0未產(chǎn)生中斷,未產(chǎn)生中斷,C=0,則跳,則跳;到;到LOOP,等待,等待T0中斷中斷 SETB ET1 ;允許;允許T1產(chǎn)生定時中斷產(chǎn)生定時中斷SETB TR1 ;啟動;啟動T1HERE: AJMP HERE49PT0M2: MOV TMOD,#26H ;對;對T0,T1初始化,初始化,T0方式方式1;計數(shù),計數(shù)

42、,T1方式方式2定時定時 MOV TL0,#0FFH ;T0置初值置初值 MOV TH0,#0FFH SETB ET0;允許;允許T0中斷中斷 MOV TL1,#06H;T1置初值置初值 MOV TH1,#06H CLR F0;把;把T0已發(fā)生中斷標志已發(fā)生中斷標志F0清清0 SETB EA;總中斷允許;總中斷允許 SETB TR0;啟動;啟動T0 RET50IT0P: CLRTR0 ;T0中斷服務(wù)程序中斷服務(wù)程序,停止,停止T0計數(shù)計數(shù) SETBF0 ;把;把T0引腳接收過負脈沖標志引腳接收過負脈沖標志F0置置1,;即接收過負跳變;即接收過負跳變 RETIIT1P: CPL P1.0;T1中

43、斷服務(wù)程序中斷服務(wù)程序,P1.0位取反位取反 RETI程序說明:程序說明:當單片機復(fù)位時,從當單片機復(fù)位時,從0000H跳向主程序跳向主程序MAIN處執(zhí)行程序。其中調(diào)用了對處執(zhí)行程序。其中調(diào)用了對T0,T1初始化子程序初始化子程序PT0M2。子程序返回后執(zhí)行標號。子程序返回后執(zhí)行標號LOOP處指令,循環(huán)等待處指令,循環(huán)等待T0引腳上負脈沖的到來。由于負脈沖到來的標志位引腳上負脈沖的到來。由于負脈沖到來的標志位F0的的復(fù)位初始值為復(fù)位初始值為0,所以程序就在標號,所以程序就在標號LOOP處循環(huán)等待。處循環(huán)等待。51當當T0(P3.4)腳)腳發(fā)生負跳變發(fā)生負跳變時,由于時,由于T0計數(shù)溢出,則跳計

44、數(shù)溢出,則跳向向T0中斷服務(wù)子程序。此時停止中斷服務(wù)子程序。此時停止T0計數(shù),并把計數(shù),并把T0引腳接收引腳接收過負脈沖的標志過負脈沖的標志F0置置1。當當中斷返回中斷返回時,由于時,由于F0已被置已被置1,則程序跳出,則程序跳出LOOP處的處的循環(huán)等待。此時執(zhí)行指令來允許循環(huán)等待。此時執(zhí)行指令來允許T1中斷,并啟動中斷,并啟動T1定時,定時,然后執(zhí)行然后執(zhí)行“AJMP HERE”指令,循環(huán)等待,指令,循環(huán)等待,等待等待T1的的500 s定時中斷定時中斷到來。到來。當當T1的的500 s定時中斷產(chǎn)生時,定時中斷產(chǎn)生時,則進入則進入T1的中斷服務(wù)子的中斷服務(wù)子程序程序IT1P,把,把P1.0腳電

45、平取反。由于是自動裝初值,省去腳電平取反。由于是自動裝初值,省去對對T1重裝初值指令。中斷返回后,到重裝初值指令。中斷返回后,到“AJMP HERE” 處處等待等待T1的的500 s定時中斷。如此重復(fù),即得到定時中斷。如此重復(fù),即得到圖圖6-14波形。波形。52【例例6-5】 利用定時器利用定時器T1的的方式方式2計數(shù)計數(shù),每,每計滿計滿100個個數(shù),將數(shù),將P1.0取反。本例是取反。本例是方式方式2計數(shù)模式計數(shù)模式的應(yīng)用舉例。的應(yīng)用舉例。(1)選擇工作方式)選擇工作方式外部信號由外部信號由T1(P3.5)引腳輸入,每發(fā)生一次負跳變)引腳輸入,每發(fā)生一次負跳變計數(shù)器便加計數(shù)器便加1,每輸入,每

46、輸入100個脈沖,計數(shù)器將產(chǎn)生溢出中個脈沖,計數(shù)器將產(chǎn)生溢出中斷,在中斷服務(wù)程序中將斷,在中斷服務(wù)程序中將P1.0取反一次。取反一次。T1工作在工作在方式方式2的控制字的控制字TMOD = 60H。不使用。不使用T0時,時,TMOD低低4位任取,但不能使位任取,但不能使T0為方式為方式3,這里取全,這里取全0。(2)計算)計算T1的初值的初值X = 28 100 = 156 = 9CHTL1的初值為的初值為9CH,重裝初值寄存器,重裝初值寄存器TH1 = 9CH。53(3)參考程序:)參考程序: ORG0000H;程序運行入口;程序運行入口 LJMP MAIN;跳向主程序;跳向主程序MAIN

47、ORG001BH;T1中斷服務(wù)程序入口中斷服務(wù)程序入口 CPLP1.0;P1.0位取反位取反 RETI ORG0100H;主程序入口;主程序入口MAIN: MOV TMOD,#60H;設(shè)置;設(shè)置T1為方式為方式2計數(shù)計數(shù) MOVTL0,#9CH ;T0置初值置初值 MOVTH0,#9CHSETBEA SETBTR1 ;啟動;啟動T1HERE: AJMPHEREEND 程序說明:由于程序說明:由于T1的中斷服務(wù)子程序只有兩條指令,不超過的中斷服務(wù)子程序只有兩條指令,不超過8個字節(jié),所以進入個字節(jié),所以進入T1中斷服務(wù)程序入口后,沒有選擇再跳轉(zhuǎn)。中斷服務(wù)程序入口后,沒有選擇再跳轉(zhuǎn)。546.4.3

48、方式方式3的應(yīng)用的應(yīng)用方式方式3下的下的T0和和T1大不相同大不相同。T0工作在方式工作在方式3,TL0和和TH0被分成兩個獨立的被分成兩個獨立的8位定時器位定時器/計數(shù)器。其中,計數(shù)器。其中,TL0可可作為作為8位的定時器位的定時器/計數(shù)器,而計數(shù)器,而TH0只能作為只能作為8位的定時器。位的定時器。此時此時T1只能工作在方式只能工作在方式0、1或或2。一般情況下,當一般情況下,當T1用作用作串行口波特率發(fā)生器串行口波特率發(fā)生器時,時,T0才才設(shè)置為設(shè)置為方式方式3。此時,常把定時器。此時,常把定時器T1設(shè)置為設(shè)置為方式方式2,用作,用作波特率發(fā)生器。波特率發(fā)生器。55【例例6-66-6】假

49、設(shè)某假設(shè)某AT89S51AT89S51單片機應(yīng)用系統(tǒng)的兩個外部中單片機應(yīng)用系統(tǒng)的兩個外部中斷源已被占用,設(shè)置斷源已被占用,設(shè)置T1T1工作在方式工作在方式2 2,用作波特率發(fā)生器,用作波特率發(fā)生器?,F(xiàn)現(xiàn)要求增加一個要求增加一個外部中斷源外部中斷源,并,并控制控制P1.0P1.0引腳輸出一個引腳輸出一個5kHz5kHz(周期為(周期為200200 s s)的)的方波方波。設(shè)時鐘為。設(shè)時鐘為12MHz12MHz?;舅枷耄夯舅枷耄涸O(shè)置設(shè)置TL0TL0工作在方式工作在方式3 3計數(shù)模式,計數(shù)模式,TL0TL0的初值的初值設(shè)為設(shè)為0FFH0FFH,當,當檢測到檢測到T0T0腳信號出現(xiàn)腳信號出現(xiàn)負跳變

50、負跳變時,時,TL0TL0溢出,溢出,同時向同時向CPUCPU申請中斷,這里申請中斷,這里T0T0腳作為一個負跳沿觸發(fā)的外腳作為一個負跳沿觸發(fā)的外部中斷請求輸入端部中斷請求輸入端。在中斷處理子程序中,啟動。在中斷處理子程序中,啟動TH0TH0,TH0TH0事先被設(shè)置為事先被設(shè)置為方式方式3 3的的100100 s s定時定時,從而,從而控制控制P1.0P1.0輸出周期輸出周期為為200200 s s的方波信號的方波信號,如,如圖圖6-156-15所示。所示。5657圖圖6-15 6-15 定時器定時器P1.0P1.0輸出的方波信號輸出的方波信號(1 1)初值)初值X X計算計算TL0TL0的的

51、初值初值設(shè)為設(shè)為0FFH0FFH。5kHz5kHz方波方波的的周期為周期為200200 s s,因此,因此TH0TH0的定時時間為的定時時間為100100 s s。 初值初值X X計算:計算:(2(28 8 X X) ) 1 1 10106 6 = = 1 1 10104 4 X X = = 2 28 8 100100 = = 156156 = = 9CH9CH(2 2)程序設(shè)計)程序設(shè)計 ORGORG0000H0000H LJMP LJMPMAINMAIN ORG ORG 000BH000BH ;TL0TL0中斷入口,中斷入口,TL0TL0使用使用T0T0的中斷的中斷 LJMP TL0INT

52、 LJMP TL0INT;跳向;跳向TL0TL0中斷服務(wù)程序,中斷服務(wù)程序,TL0TL0占用占用T0T0中斷中斷58ORG 001BH;TH0中斷入口,中斷入口,T1為方式為方式3時,時,TH0;使用了使用了T1的中斷的中斷LJMP TH0INT ;跳向;跳向TH0中斷服務(wù)程序中斷服務(wù)程序ORG 0100H;主程序入口;主程序入口MAIN: MOVTMOD,#27H ;T0方式方式3,T1方式方式2定時作串定時作串;行口波特率發(fā)生器;行口波特率發(fā)生器 MOVTL0,#0FFH ;置;置TL0初值初值 MOVTH0,#9CH;置;置TH0初值初值 MOVTL1,#datal ;TL1裝入串口波特

53、率常數(shù)裝入串口波特率常數(shù)MOV TH1,#datah;TH1裝入串口波特率常數(shù)裝入串口波特率常數(shù) MOV TCON,#15H;允許;允許T0中斷中斷 59MOVIE,#9FH;設(shè)置中斷允許,總中斷允許,;設(shè)置中斷允許,總中斷允許,;TH0、TL0中斷允許中斷允許HERE: AJMP HERE;循環(huán)等待;循環(huán)等待TL0INT: MOV TL0,#0FFH;TL0中斷服務(wù)處理子程序,中斷服務(wù)處理子程序,TL0;重新裝入初值;重新裝入初值 SETB TR1;開始啟動;開始啟動TH0定時定時 RETITH0INT:MOV TH0,#9CH;TH0中斷服務(wù)程序,中斷服務(wù)程序,TH0重新重新;裝入初值;裝

54、入初值 CPLP1.0;P1.0位取反輸出位取反輸出 RETI 606.4.4 門控制位門控制位GATEx的應(yīng)用的應(yīng)用測量脈沖寬度測量脈沖寬度介紹門控制位介紹門控制位GATE的具體應(yīng)用,測量的具體應(yīng)用,測量 (P3.3)引)引腳上正脈沖的寬度。腳上正脈沖的寬度?!纠?-7】 門控位門控位GATE1可使可使T1的啟動計數(shù)受的啟動計數(shù)受 的的控制,當控制,當GATE1 = 1,TR1=1時,時,只有只有 INT1*引腳輸入高引腳輸入高電平時電平時,T1才被允許計數(shù)才被允許計數(shù)??蓽y量??蓽y量 引腳引腳 (P3.3)上)上正脈沖的寬度。其方法如正脈沖的寬度。其方法如圖圖6-16所示所示。61INT

55、1INT1INT1圖圖6-16 利用利用GATE位測量正脈沖的寬度位測量正脈沖的寬度參考程序:參考程序: ORG0000HRESET: AJMP MAIN ;復(fù)位入口轉(zhuǎn)主程序;復(fù)位入口轉(zhuǎn)主程序 ORG 0100H;主程序入口;主程序入口MAIN: MOV SP,#60H MOVTMOD,#90H;向;向TMOD寫控制字,寫控制字,T1為方為方;式;式1定時,定時,GATE1 = 1 MOV TL1,#00H MOV TH1,#00HLOOP0: JB P3.3,LOOP0 ;等待;等待 低低 SETB TR1;如;如 為低,啟動為低,啟動T162INT1INT1LOOP1:JNB P3.3,LOOP1;等待;等待 升高升高LOOP2:JB P3.3,LOOP2 ; 為高,為高, 此時計數(shù)器計數(shù),此時計數(shù)器計數(shù), ;等待;等待 降低降低 CLR TR1 ;停止;停止T1計數(shù)計數(shù) MOV A,TL1 ;T1計數(shù)值送計數(shù)值送A ;將;將T1計數(shù)值送顯示器計數(shù)值送顯示器 END執(zhí)行以上程序,使執(zhí)行以上程序,使 引腳上出現(xiàn)的引腳上出現(xiàn)的正脈沖寬度正脈沖寬度以以機機器周期數(shù)器周期數(shù)的形式顯示在顯示器上。的形式顯示在顯示器上。63將A中的T1計數(shù)值送到顯示器顯示INT1INT1INT1INT16.4.5 實時時鐘的設(shè)計實時時鐘的設(shè)計介紹使用定時器介紹使用定時器/計

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論