第6章(第5版)李朝青-單片機(jī)原理及接口技術(shù)(第5版)課件_第1頁
第6章(第5版)李朝青-單片機(jī)原理及接口技術(shù)(第5版)課件_第2頁
第6章(第5版)李朝青-單片機(jī)原理及接口技術(shù)(第5版)課件_第3頁
第6章(第5版)李朝青-單片機(jī)原理及接口技術(shù)(第5版)課件_第4頁
第6章(第5版)李朝青-單片機(jī)原理及接口技術(shù)(第5版)課件_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機(jī)原理及接口技術(shù)8/31/2024§6.1定時器概述§6.2定時器的控制§6.3定時器的四種模式及應(yīng)用§6.4思考題與習(xí)題第六章定時器及應(yīng)用8/31/2024§6.1定時器概述89C51/S51/S51單片機(jī)片內(nèi)有兩個16位定時器/計數(shù)器,即定時器0(T0)和定時器1(T1)。它們都有定時和事件計數(shù)的功能,可用于定時控制、延時、對外部事件計數(shù)和檢測等場合。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024§6.1.1

什么是計數(shù)和定時

1、計數(shù)工作方式所謂計數(shù)是指對外部事件進(jìn)行計數(shù)。外部事件的發(fā)生以輸入脈沖表示,因此計數(shù)功能的實質(zhì)就是對外來脈沖進(jìn)行計數(shù)。51單片機(jī)有T0(P3.4)和T1(P3.5)兩個信號引腳,分別是這兩個計數(shù)器的計數(shù)輸入端。外部輸入的脈沖在負(fù)跳變時有效,進(jìn)行計數(shù)器加1(加法計數(shù))。

單片機(jī)原理及接口技術(shù)8/31/20248/31/20242.定時定時是通過計數(shù)器的計數(shù)來實現(xiàn)的,不過此時的計數(shù)脈沖來自單片機(jī)的內(nèi)部,即每個機(jī)器周期產(chǎn)生一個計數(shù)脈沖,也就是每個機(jī)器周期計數(shù)器加1。由于一個機(jī)器周期等于12個振蕩脈沖周期,因此計數(shù)頻率為振蕩頻率的1/12。如果單片機(jī)采用12MHz晶體,則計數(shù)頻率為1MHz,即每微秒計數(shù)器加1。這樣不但可以根據(jù)計數(shù)值計算出定時時間,也可以反過來按定時時間的要求計算出計數(shù)器的預(yù)置值。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024§6.1.2定時器/計數(shù)器的組成定時器T0和T1的結(jié)構(gòu)以及與CPU的關(guān)系如圖6-2所示。。有兩個16位的定時器/計數(shù)器,即定時器0(T0)和定時器1(T1)。都是16位加1計數(shù)器。T0由兩個8位特殊功能寄存器TH0和TL0構(gòu)成;T1由TH1和TL1構(gòu)成。

單片機(jī)原理及接口技術(shù)8/31/20248/31/20248/31/2024設(shè)置為定時工作方式時,定時器計數(shù)89C51/S51/S51片內(nèi)振蕩器輸出的經(jīng)12分頻后的脈沖,即每個機(jī)器周期使定時器(T0或T1)的數(shù)值加1直至計滿溢出。當(dāng)89C51/S51/S51采用12MHz晶振時,一個機(jī)器周期為1μs,計數(shù)頻率為1MHz。8/31/2024設(shè)置為計數(shù)工作方式時,通過引腳T0(P3.4)和T1(P3.5)對外部脈沖信號計數(shù)。當(dāng)輸入脈沖信號產(chǎn)生由1至0的下降沿時,定時器的值加1。在每個機(jī)器周期的S5P2期間采樣T0和T1引腳的輸入電平,若前一個機(jī)器周期采樣值為1,下一個機(jī)器周期采樣值為0,則計數(shù)器加1。此后的機(jī)器周期S3P1期間,新的數(shù)值裝入計數(shù)器。所以,檢測一個1至0的跳變需要兩個機(jī)器周期,故最高計數(shù)頻率為振蕩頻率的1/24。雖然對輸入信號的占空比無特殊要求,但為了確保某個電平在變化之前至少被采樣一次,要求電平保持時間至少是一個完整的機(jī)器周期。對輸入脈沖信號的基本要求如圖6-3所示,Tcy為機(jī)器周期。圖6-38/31/2024不管是定時還是計數(shù)工作方式,定時器T0或T1在對內(nèi)部時鐘或?qū)ν獠渴录嫈?shù)時,不占用CPU時間,除非定時器/計數(shù)器溢出,才可能中斷CPU的當(dāng)前操作。由此可見,定時器是單片機(jī)中效率高而且工作靈活的部件。除了可以選擇定時或計數(shù)工作方式外,每個定時器/計數(shù)器還有4種工作模式,也就是每個定時器可構(gòu)成4種電路結(jié)構(gòu)模式。其中,模式0~2對T0和T1都是一樣的,模式3對兩者是不同的。8/31/2024§6.2定時器的控制

§6.2.1工作模式寄存器TMOD§6.2.2控制器寄存器TCON

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024§6.2.1工作模式寄存器TMODTMOD用于控制T0和T1的工作模式。TMOD不能位尋址,只能用字節(jié)設(shè)置定時器的工作模式,低半字節(jié)設(shè)置T0,高半字節(jié)設(shè)置T1。89C51/S51系統(tǒng)復(fù)位時,TMOD的所有位被清0。TMOD各位的定義格式如圖6-4所示。TMOD各位定義及具體的意義歸納如圖6-4所示。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024圖6-4工作模式寄存器TMOD的位定義定時器T1定時器T0TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0

單片機(jī)原理及接口技術(shù)8/31/2024GATEC/TM1M08/31/2024①

M1和M0—操作模式控制位。兩位可形成四種編碼,對應(yīng)于四種模式。表6-1M1,M0控制的四種工作模式

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024②C/T—計數(shù)器/定時器方式選擇位。

C/T=0,設(shè)置為定時方式。定時器計數(shù)89C51/S51片內(nèi)脈沖,即對機(jī)器周期計數(shù)。

C/T=1,設(shè)置為計數(shù)方式。計數(shù)器的輸入來自引腳T0(P3.4)或T1(P3.5)端的外部脈沖。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024

③GATE—門控位。

GATE=0,只要用軟件使TR0(或TR1)置1就可以啟動定時器,而不管INT0(或INT1)的電平是高還是低。

GATE=1,只有INT0(或INT1)引腳為高電平且由軟件使TR0(或TR1)置1時,才能啟動定時器工作。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024圖6-5TMOD各位定義及具體的意義8/31/2024

單片機(jī)原理及接口技術(shù)8/31/2024§6.2.2控制器寄存器TCONTCON除可字節(jié)尋址外,各位還可位尋址。89C51/S51系統(tǒng)復(fù)位時,TCON的所有位被清0。

TCON各位的定義格式如圖6-6所示。TCON各位定義及具體的意義歸納如圖6-7所示。8/31/2024TF1TR1TF0TR0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H圖6-6控制寄存器TCON的位定義

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024①TF1(TCON.7)—T1溢出標(biāo)志位。當(dāng)T1溢出時,由硬件自動使中斷觸發(fā)器TF1置1,并向CPU申請中斷。當(dāng)CPU響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,TF1被硬件自動清0。TF1也可以用軟件清0。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024②TF0(TCON.5)—T0溢出標(biāo)志位。其功能和操作情況同TF1。

當(dāng)T0溢出時,由硬件自動使中斷觸發(fā)器TF0置1,并向CPU申請中斷。當(dāng)CPU響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,TF1被硬件自動清0。TF1也可以用軟件清0。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024③TR1(TCON.6)—T1運行控制位??赏ㄟ^軟件置1(TR1=1)或清0(TR1=0)來啟動或關(guān)閉T1工作。

在程序中用指令“SETBTR1”使TR1位置1,定時器T1便開始計數(shù)。用“CLRTR1”使TR1清0,定時器停止工作。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024④TR0(TCON.4)—T0運行控制位。其功能和操作情況同TR1??赏ㄟ^軟件置1(TR0=1)或清0(TR0=0)來啟動或關(guān)閉T0。

在程序中用指令“SETBTR0”使TR0位置1,定時器T0便開始計數(shù)。用“CLRTR0”使TR0清0,定時器停止工作。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024⑤IE1,IT1,IE0,IT0(TCON.3~TCON.0)——外部中斷INT1,INT0請求及請求方式控制位。前一章已經(jīng)講過。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024圖6-7TCON各位定義及具體的意義8/31/2024

單片機(jī)原理及接口技術(shù)8/31/2024§6.3定時器的四種模式及應(yīng)用

89C51/S51單片機(jī)的定時器/計數(shù)器T0和T1可由軟件對特殊功能寄存器TMOD中控制位C/T進(jìn)行設(shè)置,以選擇定時功能或計數(shù)功能。對M1和M0位的設(shè)置對應(yīng)于4種工作模式,即模式0、模式1、模式2和模式3。在模式0、模式1和模式2時,T0與T1的工作模式相同;在模式3時,兩個定時器的工作模式不同。模式0為TL0(5位)、TH0(8位)方式,模式1為TL1(8位)、TH1(8位)方式,其余完全相同。通常模式0很少用,常以模式1替代,本章不再介紹模式0。8/31/2024§6.3.1模式1及其應(yīng)用一、模式1的邏輯電路結(jié)構(gòu):

T0在模式1的邏輯電路結(jié)構(gòu)如圖6-8所示。(T1相同)二、模式1工作特點三、模式1的應(yīng)用舉例

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024圖6-8T0(或T1)模式1結(jié)構(gòu)——16位計數(shù)器

8/31/2024二、模式1工作特點該模式對應(yīng)的是一個16位的定時器/計數(shù)器。用于定時工作方式時,定時時間為:

t=(216-T0初值)×振蕩周期×12用于計數(shù)工作方式時,計數(shù)長度為:

(216-T0初值)(個外部脈沖)TH0TL08位8位

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024三、模式1的應(yīng)用舉例例6-1:用定時器T1產(chǎn)生一個50Hz的方波,由P1.1輸出。分別使用程序查詢方式和中斷方式,fosc=12MHz。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024解:1)確定定時器T1初值∵方波周期T=1/50=0.02s=20ms

∴用T1定時10ms,時間到P1.1引腳電平取反?!啵═H1)=ECH,(TL1)=78H20ms10ms10ms

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024解:2)確定工作模式寄存器TMOD的值

∵定時器T1工作于模式1的定時器工作方式,

∴高四位:GATE=0,C/T=0,M1M0=01,低四位:取0。

∴(TMOD)=00010000B=10H3)程序查詢方式編程

MOV TMOD,#10H ;T1模式1,定時

SETB TR1 ;啟動T1LOOP:MOV TH1,#0D8H ;裝入T1計數(shù)初值

MOV TL1,#0F0H JNB TF1,$ ;T1沒有溢出等待

CLR TF1 ;產(chǎn)生溢出,清標(biāo)志位

CPL P1.1 ;P1.1取反輸出

SJMP LOOP ;循環(huán)

單片機(jī)原理及接口技術(shù)8/31/20248/31/20244)中斷方式編程

ORG0000H;主程序

RESET:AJMPMAIN;跳過中斷服務(wù)程序區(qū)

ORG001BHAJMPIT1PORG0030HMAIN:MOVSP,#60H;重置堆棧指針

MOVTMOD,#10H;設(shè)置T1為模式1MOVTH1,#0D8H;送初值

MOVTL1,#0F0HSETBET1;T1中斷允許

SETBEA;CPU開中斷

SETBTR1;啟動定時

HERE:SJMPHERE;等待中斷,虛擬主程序

ORG0120H;中斷服務(wù)程序

IT1P:MOVTH1,#0D8H;重新裝如初值

MOVTL1,#0F0HCPLP1.1;P1.1取反

RETI

單片機(jī)原理及接口技術(shù)8/31/2024《模式1的應(yīng)用舉例完》8/31/2024§6.3.2模式2及其應(yīng)用一、模式2的邏輯電路結(jié)構(gòu)二、模式2工作特點三、模式2的應(yīng)用舉例

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024一、模式2的邏輯電路結(jié)構(gòu)T0在模式2的邏輯電路結(jié)構(gòu)如圖6-9所示。(T1相同)TL0計數(shù)溢出時,不僅使溢出中斷標(biāo)志位TF0置1,而且還自動把TH0中的內(nèi)容重新裝載到TL0中。TL0用作8位計數(shù)器,TH0用以保存初值。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024圖6-9T0(或T1)模式2結(jié)構(gòu)——8位計數(shù)器8/31/2024二、模式2工作特點該模式把TL0(TL1)配置成一個可以自動重裝載的8位定時器/計數(shù)器。在程序初始化時,TL0和TH0由軟件賦予相同的初值。用于定時工作方式時,定時時間為:

t=(28-TL0初值)×振蕩周期×12用于計數(shù)工作方式時,計數(shù)長度為:

(28-TL0初值)

(個外部脈沖)該模式可省去軟件中重裝常數(shù)的語句,并可產(chǎn)生相當(dāng)精確的定時時間,適合于作串行口波特率發(fā)生器。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024三、模式2的應(yīng)用舉例例6-2:當(dāng)P3.4引腳(定時器T0的外部計數(shù)輸入端)上的電平發(fā)生負(fù)跳變時,從P1.0輸出一個500μs的同步脈沖。用查詢方式編程實現(xiàn)該功能,fosc=6MHz。

單片機(jī)原理及接口技術(shù)8/31/2024解:題目要實現(xiàn)的功能如圖所示。(1)確定TMOD值門控位GATE=0,高四位取0,選T0為模式2(M1M0=10),

首先為計數(shù)器工作方式(C/T=1):(TMOD)=00000110B=06H

當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時,T0計數(shù)器加1,溢出標(biāo)志TF0置1;

然后改變T0為500μs定時工作方式(C/T=0):(TMOD)=02H

當(dāng)上面TF0=1時使P1.0輸出由1變?yōu)?。開始T0定時,到500μs產(chǎn)生溢出,使P1.0輸出恢復(fù)高電平,T0又恢復(fù)外部事件計數(shù)方式。定時器T1定時器T0GATEC/TM1M0GATEM1C/TM0TMOD(89H)D7D6D5D4D3D2D1D08/31/2024(2)計算T0初值

T0工作在外部事件計數(shù)方式:題目要求T0引腳出現(xiàn)一次外部事件時,引起T0中斷。所以:設(shè)計計數(shù)器初值為FFH,當(dāng)計數(shù)器再加1就溢出了。

即:T0初值+1=28

T0初值

=28

-1=11111111B=0FFH

即:(TH0)=(TL0)=0FFHT0工作在定時工作方式:因為晶振頻率為6MHz,定時500μs。

所以:(28-T0初值)×2μs=500μs

得出:T0初值=6=06H,即:(TH0)=(TL0)=06H

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024(3)程序清單:ORG 0000H LJMP START

ORG 0080H START: MOV TMOD,#06H ;設(shè)置T0為模式2,外部計數(shù)方式

MOV TL0,#0FFH;T0計數(shù)器初值

MOV TH0,#0FFH

SETB TR0;啟動T0計數(shù)

LOOP1: JBC TF0,PTFO1;查詢T0溢出標(biāo)志,TF0=1時轉(zhuǎn),且清TF0=0 SJMP LOOP1 ;等待T0溢出

PTFO1:CLRTR0;停止計數(shù)

MOVTMOD,#02H;設(shè)置T0為模式2,定時方式

MOVTL0,#06H;送初值,定時500μs

MOVTH0,#06H CLRP1.0;P1.0清0

SETBTR0;啟動定時500μs LOOP2: JBCTF0,PTFO2;查詢T0溢出標(biāo)志,TF0=1時轉(zhuǎn)并清TF0=0

SJMPLOOP2;等待T0溢出中斷(定時時間到)

PTFO2: SETBP1.0;P1.0置1

CLRTR0;停止定時

SJMPSTART;轉(zhuǎn)向開始,重新等待T0引腳的脈沖

單片機(jī)原理及接口技術(shù)8/31/2024《例6-8完》8/31/2024例6-3:利用定時器T1的模式2對外部信號計數(shù)。要求每計滿100次,將P1.0端取反。解:(1)選擇模式外部信號由T1(P3.5)引腳輸入,每發(fā)生一次負(fù)跳變計數(shù)器加1,每輸入100個脈沖,計數(shù)器發(fā)生溢出中斷,中斷服務(wù)程序?qū)1.0取反一次。

T1計數(shù)工作方式模式2的模式字為(TMOD)=60H。

T0不用時,TMOD的低4位可任取,但不能進(jìn)入模式3,一般取0。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024(2)計算T1的計數(shù)初值

X=28

-100=156=9CH

因此:TL1的初值為9CH,重裝初值寄存器TH1=9CH。(3)程序清單

ORG0000H LJMPMAIN

ORG001BH;中斷服務(wù)程序入口

LJMPIT1P ORG0030HMAIN:MOVSP,#60H;重置堆棧指針

MOVTMOD,#60H;設(shè)置T1為模式2,外部計數(shù)方式

MOVTL1,#9CH;T1計數(shù)器初值

MOVTH1,#9CH MOVIE,#88H;定時器開中斷

SETBTR1;啟動T1計數(shù)

HERE:SJMPHERE;等待中斷

ORG0100H;中斷服務(wù)程序入口

IT1P:CPLP1.0RETI

單片機(jī)原理及接口技術(shù)8/31/2024《模式2的應(yīng)用舉例完》8/31/2024§6.3.3模式3及其應(yīng)用一、模式3的邏輯電路結(jié)構(gòu)工作模式3對T0和T1大不相同。1、T0模式3的邏輯電路結(jié)構(gòu)2、T0模式3下T1的邏輯電路結(jié)構(gòu)二、模式3的應(yīng)用舉例

單片機(jī)原理及接口技術(shù)8/31/20248/31/20241、T0模式3的邏輯電路結(jié)構(gòu)T0模式3的邏輯電路結(jié)構(gòu)如圖6-11所示。T0設(shè)置為模式3,TL0和TH0被分成兩個相互獨立的8位計數(shù)器。TL0:用原T0的各控制位、引腳和中斷源,即C/T,GATE,TR0,TF0,T0(P3.4)引腳,INT0(P3.2)引腳。

TL0可工作在定時器方式和計數(shù)器方式。其功能和操作與模式0、模式1相同(只是8位)。TH0:只可用作簡單的內(nèi)部定時功能。

TH0占用了定時器T1的控制位TR1和T1的中斷標(biāo)志TF1,其啟動和關(guān)閉僅受TR1的控制。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024圖6-11T0模式3結(jié)構(gòu),分成兩個8位計數(shù)器8/31/20242、T0模式3下T1的邏輯電路結(jié)構(gòu)定時器T1無工作模式3狀態(tài)。在T0用作模式3時,T1仍可設(shè)置為模式0~2。T0模式3下T1的邏輯電路結(jié)構(gòu)如圖6-12

所示。由于TR1和TF1被定時器T0占用,計數(shù)器開關(guān)K已被接通,此時,僅用T1控制位,C/T切換其定時或計數(shù)器工作方式就可使T1運行。當(dāng)計數(shù)器溢出時,只能將輸出送入串行口或用于不需要中斷的場合。一般作波特率發(fā)生器

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024圖6-12T0模式3時T1的結(jié)構(gòu)8/31/2024二、模式3的應(yīng)用舉例例6-4:設(shè)某用戶系統(tǒng)已使用了兩個外部中斷源,并置定時器T1工作在模式2,作串行口波特率發(fā)生器用?,F(xiàn)要求再增加一個外部中斷源,并由P1.0引腳輸出一個5kHz的方波。Fosc=12MHz.解:(1)工作模式

可設(shè)置T0工作在模式3計數(shù)器方式,把T0的引腳作附加的外部中斷輸入端,TL0的計數(shù)初值為FFH,當(dāng)檢測到T0引腳電平出現(xiàn)由1至0的負(fù)跳變時,TL0產(chǎn)生溢出,申請中斷。

T0模式3下,TL0作計數(shù)用,而TH0用作8位的定時器,定時控制P1.0引腳輸出5kHz的方波信號。

單片機(jī)原理及接口技術(shù)8/31/2024(2)計算初值TL0的計數(shù)初值為FFH。TH0的計數(shù)初值X為:P1.0方波周期T=1/(5kHz)=0.2ms=200μs

用TH0作定時100μs時,X=256-100×12/12=1568/31/2024(3)程序清單

MOVTMOD,#27H;T0為模式3,計數(shù)方式,

T1為模式2,定時方式

MOVTL0,#0FFH;TL0計數(shù)初值

MOVTH0,#156;TH0計數(shù)初值

MOVTL1,#data;data是根據(jù)波特率,要求設(shè)置的常數(shù)(初值)

MOVTH1,#dataMOVTCON,#55H;外中斷0,外中斷1邊沿觸發(fā),啟動T0,T1MOVIE,#9FH;開放全部中斷TL0溢出中斷服務(wù)程序(由000BH轉(zhuǎn)來)TL0INT:MOVTL0,#0FFH;TL0重賦初值 (中斷處理)

RETITH0溢出中斷服務(wù)程序(由001BH轉(zhuǎn)來)TH0INT:MOVTH0,#156;TH0重賦初值

CPLP1.0;P1.0取反輸出

RETI串行口及外部中斷0,外部中斷1的服務(wù)程序略

單片機(jī)原理及接口技術(shù)8/31/2024《模式3的應(yīng)用舉例完》8/31/2024§6.3.4綜合應(yīng)用舉例例6-5:設(shè)時鐘頻率為6MHz。編寫利用T0產(chǎn)生1s定時的程序,在P1.7端口輸出周期為2秒的方波。解:(1)定時器T0工作模式的確定∵模式0最長可定時16.384ms;模式1最長可定時131.072ms;

模式2最長可定時512μs;∴定時1s,可選用模式1,每隔100ms中斷一次,中斷10次從而達(dá)到1s的定時。(2)求計數(shù)器初值X∵(216-X)×12/(6×106)=100×10-3s∴X=15536=3CB0H

因此:(TL0)=0B0H(TH0)=3CH(3)實現(xiàn)方法:對于中斷10次計數(shù),可使T0工作在計數(shù)方式,也可用循環(huán)程序的方法實現(xiàn)。本例采用循環(huán)程序法。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024(4)源程序清單

ORG 0000H AJMP MAIN ;

上電,轉(zhuǎn)向主程序

ORG 000BH ;T0的中斷服務(wù)程序入口地址

AJMPSERVE;轉(zhuǎn)向中斷服務(wù)程序

ORG 0030H ;主程序MAIN: MOV SP,#60H;設(shè)堆棧指針

MOV B,#0AH;設(shè)循環(huán)次數(shù)

MOV TMOD,#01H;設(shè)置T0工作于模式1

MOV TL0,#0B0H;裝計數(shù)值低8位

MOV TH0,#3CH;裝計數(shù)值高8位

SETB TR0 ;啟動定時

SETB ET0 ;T0開中斷

SETB EA ;CPU開中斷

SJMP $ ;等待中斷

ORG 0100HSERVE: MOVTL0,#0B0H;重新賦初值

MOVTH0,#3CH DJNZB,LOOP;B-1不為0,繼續(xù)定時

CPLP1.7;對P1.7取反

MOV B,#0AH;設(shè)循環(huán)次數(shù)LOOP: RETI;中斷返回

END

單片機(jī)原理及接口技術(shù)8/31/2024《例6-11完》8/31/2024【例6-6】應(yīng)用門控位GATE測照相機(jī)快門打開時間。解:此題實際上就是要求測出INT0引腳上出現(xiàn)的正脈沖寬度。T0應(yīng)工作在定時方式。TMOD的門控位GATE為1且運行控制位TR0(或TR1)為1時,定時器/計數(shù)器的啟動和關(guān)閉受外部中斷引腳信號INT0(INT1)控制。為此在初始化程序中使T0工作于模式1,置GATE=1,TR1=1;一旦INT0(P32)引腳出現(xiàn)高電平,T1開始對機(jī)器周期Tm計數(shù),直到INT0出現(xiàn)低電平,T0停止計數(shù);然后讀出T0的計數(shù)值乘以Tm。測試過程如圖6-13所示。8/31/2024程序如下:BEGIN:MOV TMOD,#09H;T0為定時器模式1,GATE置1 MOV TL0,#00H MOV TH0,#00HWAIT1:JB P3.2,WAIT1 ;等待INT0變低

SETB TR0 ;為啟動T0作好準(zhǔn)備WAIT2:JNB P3.2,WAIT2 ;等待正脈沖到,并開始計數(shù)WAIT3:JB P3.2,WAIT3 ;等待INT0變低

CLR TR0 ;停止T0計數(shù)

MOV R0,#70H MOV @R0,TL0 ;存放TL0的計數(shù)值

INC R0 MOV @R0,TH0 ;存放TH0的計數(shù)值

SJMP $8/31/2024例6-7:設(shè)計實時時鐘程序。時鐘就是以秒、分、時為單位進(jìn)行計時。用定時器與中斷的聯(lián)合應(yīng)用。解:(1)實現(xiàn)時鐘計時的基本方法

①計算計數(shù)初值。

時鐘計時的最小單位是秒,可把定時器的定時時間定為100ms,計數(shù)溢出10次即得到1秒;10次計數(shù)可用軟件方法實現(xiàn)。

假定使用定時器T0,以工作模式1進(jìn)行100ms的定時。如fosc=6MHz,則計數(shù)初值X為:∴X=15536=3CB0H因此:(TL0)=0B0H(TH0)=3CH②采用定時方式進(jìn)行溢出次數(shù)的累計,計滿10次即得到秒計時。

設(shè)置軟件計數(shù)器初值為10,每100ms定時時間到溢出中斷,使軟件計數(shù)器減1,直到減到0,則1s到。

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024③從秒到分和從分到時的計時是通過累計和數(shù)值比較實現(xiàn)的。

設(shè)置幾個累加單元分別進(jìn)行對1s,1min,1h進(jìn)行計數(shù)。滿1s,秒位累加;滿60s,分位累加;滿60min,時位累加;滿24h全部累加單元清0

單片機(jī)原理及接口技術(shù)8/31/2024(2)程序流程及程序清單

①主程序流程如圖所示。設(shè)T1為模式1設(shè)中斷次數(shù)清計時單元開中斷啟動T1調(diào)用顯示子程序圖6-13時鐘主程序流程8/31/2024保護(hù)現(xiàn)場賦計數(shù)初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢復(fù)現(xiàn)場返回入口aaNNNNYYYY圖6-14中斷服務(wù)程序流程圖②中斷服務(wù)流程如圖6-14所示。8/31/2024③源程序如下:

ORG0000HAJMPMAIN;上電,轉(zhuǎn)向主程序

ORG001BH;T1的中斷服務(wù)程序入口地址

AJMPSERVE;轉(zhuǎn)向中斷服務(wù)程序

ORG2000H;主程序MAIN:MOVSP,#60H;設(shè)堆棧指針

MOVTMOD,#10H;設(shè)置T1工作于模式1

MOV20H,#0AH;設(shè)循環(huán)次數(shù)

CLRAMOV30H,A;時單元清0

MOV31H,A;分單元清0

MOV32H,A;秒單元清0

SETBET1;T1開中斷

SETBEA;CPU開中斷

MOVTL1,#0B0H;裝計數(shù)值低8位

MOVTH1,#3CH;裝計數(shù)值高8位

SETBTR1;啟動定時

SJMP$;等待中斷(可反復(fù)調(diào)用顯示子程序)

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024中斷服務(wù)程序:

SERVE:PUSHPSW;保護(hù)現(xiàn)場

PUSHACC

MOVTL1,#0B0H;重新賦初值

MOVTH1,#3CHDJNZ20H,RETUNT;1s未到,返回

MOV20H,#0AH;重置中斷次數(shù)

MOVA,#01HADDA,32H;“秒位”加1DAA;轉(zhuǎn)換為BCD碼

MOV32H,ACJNEA,#60H,RETUNT;未滿60s,返回

MOV32H,#00H;計滿60s,“秒位”清0MOVA,#01HADDA,31H;“分位”加1DAA;轉(zhuǎn)換為BCD碼

MOV31H,ACJNEA,#60H,RETUNT;未滿60min,返回

MOV31H,#00H;計滿60min,“分位”清0

單片機(jī)原理及接口技術(shù)8/31/20248/31/2024

MOVA,#01HADDA,30H;“時位”加1DAA;轉(zhuǎn)換為BCD碼

MOV30H

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論