第六章單片微機的定時器計數(shù)器原理及應(yīng)用_第1頁
第六章單片微機的定時器計數(shù)器原理及應(yīng)用_第2頁
第六章單片微機的定時器計數(shù)器原理及應(yīng)用_第3頁
第六章單片微機的定時器計數(shù)器原理及應(yīng)用_第4頁
第六章單片微機的定時器計數(shù)器原理及應(yīng)用_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第六章第六章 單片微機的定時器單片微機的定時器/計數(shù)器計數(shù)器原理及應(yīng)用原理及應(yīng)用6.1 概述概述6.2 定時器定時器/計數(shù)器計數(shù)器T0、T16.3 定時器定時器/計數(shù)器計數(shù)器T26.4 監(jiān)視定時器(看門狗)監(jiān)視定時器(看門狗)T36.5 定時器定時器/計數(shù)器的應(yīng)用編程計數(shù)器的應(yīng)用編程第六章第六章 單片微機的定時器單片微機的定時器/ /計數(shù)器計數(shù)器 原理及應(yīng)用原理及應(yīng)用定時或計數(shù)方法:定時或計數(shù)方法:1硬件法:硬件法:定時功能完全由硬件電路完成,不占用定時功能完全由硬件電路完成,不占用CPUCPU時間時間;不夠靈活、方便;不夠靈活、方便;2軟件法:軟件法:編循環(huán)程序,時間精確;占用編循環(huán)程序,時

2、間精確;占用CPUCPU;3可編程定時器計數(shù)器:可編程定時器計數(shù)器:通過軟件編程來實現(xiàn)定通過軟件編程來實現(xiàn)定時時間的改變,通過中斷或查詢方法來完成定時功時時間的改變,通過中斷或查詢方法來完成定時功能或計數(shù)功能能或計數(shù)功能6-1 概述概述定時器資源:定時器資源:80C51:T0和和T1;80C52:T0、T1、T280C552(Philips): T0、T1、T2、 T3(看門狗)(看門狗)定時器計數(shù)器的定時器計數(shù)器的核心核心:加加1 1計數(shù)器計數(shù)器其基本功能是計數(shù)加其基本功能是計數(shù)加1 1。 計數(shù)計數(shù) T0、T1 (或(或T2)引腳,)引腳,10計數(shù)增計數(shù)增l 定時定時 對單片機內(nèi)部的對單片機

3、內(nèi)部的機器周期計數(shù)機器周期計數(shù) 計數(shù)值計數(shù)值N N乘以機器周期乘以機器周期T T就是定時時間就是定時時間t t 。 波特率發(fā)生器波特率發(fā)生器 串行接口的波特率發(fā)生器串行接口的波特率發(fā)生器功能:功能:6.2 6.2 定時器計數(shù)器定時器計數(shù)器T0T0、T1T1圖圖61 定時器定時器/計數(shù)器計數(shù)器T0、T1的內(nèi)部結(jié)構(gòu)框圖的內(nèi)部結(jié)構(gòu)框圖 T0、T1 的方式寄存器的方式寄存器TMOD6.2.1 與定時器計數(shù)器與定時器計數(shù)器T0、T1有關(guān)的特殊功能有關(guān)的特殊功能寄存器寄存器-TMOD、TCON、TH、TL、IE、IPD7 D6 D5 D4 D3 D2 D1 D0GATE C/TM1M0GATE C/TM1

4、M0T1T0M1、M0:工作方式選擇位。工作方式選擇位。M1 M0工作方式工作方式 計數(shù)器配置計數(shù)器配置 0 0方式方式0 13位計數(shù)器位計數(shù)器 0 1方式方式1 16位計數(shù)器位計數(shù)器 1 0方式方式2 自動重裝載的自動重裝載的8位計數(shù)器位計數(shù)器 1 1方式方式3 T0分為兩個分為兩個8位計數(shù)器,位計數(shù)器,T1停止計數(shù)停止計數(shù) GATE1時,由外部中斷引腳時,由外部中斷引腳INT0、INT1和和TR0、TR1共同來啟動定時器。當共同來啟動定時器。當INT0引腳為高電平時,引腳為高電平時,TR0置位啟動置位啟動定時器定時器T0;當引腳;當引腳INT1為高電平時,為高電平時,TR1置位,啟動定時器

5、置位,啟動定時器T1。 GATE0時,僅由時,僅由TR0和和TR1置位來啟動定時器置位來啟動定時器T0和和T1。 C/T0時時,選擇定時功能選擇定時功能. 計數(shù)輸入信號是內(nèi)部時鐘脈沖計數(shù)輸入信號是內(nèi)部時鐘脈沖,1/12 fosc C/T1時時,選擇計數(shù)功能選擇計數(shù)功能. 通過引腳通過引腳T0和和T1對外部信號進行計數(shù)對外部信號進行計數(shù), 在每個機器周期的在每個機器周期的S5P2期間,期間,CPU采樣引腳的輸入電平。若前一機器周期采樣采樣引腳的輸入電平。若前一機器周期采樣值為值為1,下一機器周期采樣值為,下一機器周期采樣值為0,則計數(shù)器增,則計數(shù)器增1 GATE門控位門控位CT:功能選擇位功能選

6、擇位 定時器計數(shù)器定時器計數(shù)器T0、T1 的控制寄存器的控制寄存器TCON 位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H位名稱位名稱TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0功能功能 T1T1 中斷中斷標志標志啟動啟動T1T0T0中斷中斷標志標志啟動啟動T0中斷中斷標志標志觸發(fā)觸發(fā)方式方式中斷中斷標志標志 觸發(fā)觸發(fā)方式方式1 1)啟動控制位)啟動控制位TR0TR0、TR1TR1: =0=0,停止定時器工作;,停止定時器工作; =1=1,啟動定時器工作,啟動定時器工作2 2)溢出

7、中斷標志位)溢出中斷標志位TF0TF0、TF1TF1:定時器溢出使定時器溢出使TFxTFx=1=1,引起中斷請求,引起中斷請求,CPUCPU響應(yīng)響應(yīng)TxTx中中斷后,系統(tǒng)自動將斷后,系統(tǒng)自動將TFxTFx清清0 0。也可用軟件檢測也可用軟件檢測TFxTFx,這時必須軟件清,這時必須軟件清0 0。 T0、T1 的數(shù)據(jù)寄存器的數(shù)據(jù)寄存器TH1、TL1,TH0、TL0 定時器定時器/計數(shù)器中斷計數(shù)器中斷 中斷允許寄存器中斷允許寄存器IE 中斷矢量中斷矢量 定時器定時器T0T0:000BH000BH定時器定時器T1T1:001BH001BH 中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IPEX0EX0ET0ET0

8、EX1EX1ET1ET1ESESEAEAPX0PX0PT0PT0PX1PX1PT1PT1PSPS- 復(fù)位后,這復(fù)位后,這4 4個寄存器全部清零。個寄存器全部清零。T0:有有4種種工作方式可選(方式工作方式可選(方式0,1,2,3)T1:有有3種種工作方式可選(方式工作方式可選(方式0,1,2) 方式方式0-130-13位定時器位定時器/ /計數(shù)器計數(shù)器( (M10、M00) ) 最大計數(shù)值最大計數(shù)值213 = 8192,當當fosc=12MHZ時時,Tmax=8192S6.2.2 6.2.2 定時器計數(shù)器定時器計數(shù)器T0T0、T1 T1 的工作方式的工作方式B=TRx(GATE+INTx) 注

9、意:注意:TFxTFx置位后,若中斷允許,則置位后,若中斷允許,則CPUCPU進入中斷服務(wù)程序進入中斷服務(wù)程序, ,后由硬件自動清后由硬件自動清0 0。 若中斷禁止,可由程序查詢并由軟件清若中斷禁止,可由程序查詢并由軟件清0 0。 方式方式1-16位定時器位定時器/計數(shù)器計數(shù)器(M10、M01)最大計數(shù)值最大計數(shù)值216 = 65536,當當fosc=12MHZ時,時,Tmax=65536S 計數(shù)時,計數(shù)時,TLxTLx溢出后向溢出后向THxTHx進位,進位,THxTHx溢出后將溢出后將TFxTFx置位,如置位,如果中斷允許,果中斷允許,CPUCPU響應(yīng)中斷并轉(zhuǎn)入中斷服務(wù)程序,由內(nèi)部硬件響應(yīng)中

10、斷并轉(zhuǎn)入中斷服務(wù)程序,由內(nèi)部硬件清清TFxTFx。TFxTFx也可以由程序查詢和清零。也可以由程序查詢和清零。 方式方式2- 8位定時器位定時器/計數(shù)器自動重裝載計數(shù)器自動重裝載(M11、M00)優(yōu)點優(yōu)點:定時初值可自動恢復(fù):定時初值可自動恢復(fù),TH,TH中存放初值中存放初值; ;缺點缺點:計數(shù)范圍小,:計數(shù)范圍小,最大計數(shù)值為最大計數(shù)值為2 28 8= 256= 256適用范圍適用范圍:需要重復(fù)定時,而定時范圍不大的應(yīng)用場合,比需要重復(fù)定時,而定時范圍不大的應(yīng)用場合,比如:作為串行口如:作為串行口波特率發(fā)生器波特率發(fā)生器使用使用 方式方式3-僅僅T0有此方式,有此方式,T1無方式無方式3中斷

11、矢量中斷矢量000BH中斷矢量中斷矢量001BHT0T0分成分成2 2個個8 8位定時器:位定時器:TL0TL0定時定時/ /計數(shù)器和計數(shù)器和TH0TH0定時器;定時器;TL0TL0占用占用T0T0控制位:控制位:C/TC/T,TF0,TR0TF0,TR0,GATEGATE;TH0TH0占用占用T1T1控制位控制位:TR1TR1、TF1TF1;只能對片內(nèi)機器周期脈沖計數(shù);只能對片內(nèi)機器周期脈沖計數(shù)定時器定時器/ /計數(shù)器計數(shù)器T0T0方式方式3 3時,時,T1T1的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖 T1 T1由于其由于其TF1TF1、TR1TR1被被T0T0的的TH0TH0占用,計數(shù)器溢出時,只能將輸占

12、用,計數(shù)器溢出時,只能將輸出信號送至串行口,即出信號送至串行口,即用作串行口波特率發(fā)生器用作串行口波特率發(fā)生器 定時器初值的計算定時器初值的計算6.5 6.5 定時器定時器/ /計數(shù)器的應(yīng)用編程計數(shù)器的應(yīng)用編程 機器周期時間機器周期時間定時時間定時時間初值初值LOSCLCftT2122oscf12L與工作方式有與工作方式有關(guān),關(guān),13、16、8fosc=12MHZ時時,1機周機周=1 S;fosc=6MHZ 時時, 1機周機周=2 S6.5.1 6.5.1 定時器的應(yīng)用定時器的應(yīng)用 定時器計數(shù)器運行前,在數(shù)據(jù)寄存器中預(yù)先置入的定時器計數(shù)器運行前,在數(shù)據(jù)寄存器中預(yù)先置入的常數(shù),稱為定時常數(shù)或計數(shù)

13、常數(shù)常數(shù),稱為定時常數(shù)或計數(shù)常數(shù)T TC C。 定時時間定時時間=脈沖數(shù)脈沖數(shù)脈沖周期(機器周期)脈沖周期(機器周期)定時時間定時時間t=(2L-初值初值TC) 解:解:工作方式工作方式0 0: 2 21313500500 S/2S/2 S=8192-250=7942S=8192-250=7942 =1F06H =1F06H =1111100000110B =1111100000110B TL0= TL0=0011000110B=06HB=06H TH0= TH0=1111100011111000B=F8HB=F8H【例例】 已知晶振已知晶振6MHz6MHz,要求定時,要求定時0.5ms0.5

14、ms,試分別求,試分別求出出T0T0工作于方式工作于方式0 0、方式、方式1 1、方式、方式2 2時的定時初值。時的定時初值。 工作方式工作方式1 1: T0T0初值初值 =2=21616-500-500 s s/2/2 s s=65536250=65286=FF06H=65536250=65286=FF06H TH0=FFH TH0=FFH;TL0=06HTL0=06H 工作方式工作方式2 2: T0T0初值初值 =2=28 8-500-500 s s/2/2 s s=256-250=6=256-250=6 TH0=06H TH0=06H;TL0=06HTL0=06H。解:分析解:分析 采用

15、方式采用方式0定時時間定時時間 t1ms=1000S定時常數(shù):定時常數(shù):TC=213-1000/2=8192-500=7692 = 11110000 01100B用定時器用定時器T0:TMOD=00H,TH0=F0H,TL0=0CH【例例】 要求在要求在 P10引腳上輸出周期為引腳上輸出周期為2 ms的方波的方波fosc=6MHz中斷方式:中斷方式: ORG 0000HAJMP MAINORG 000BH;T0中斷矢量中斷矢量AJMP INQPORG 0030HMAIN:MOV TMOD,00H ;設(shè)設(shè)T0為定時器方式為定時器方式0 0 MOV TH0,0F0H ;寫定時常數(shù);寫定時常數(shù)( (

16、定時定時1ms)1ms) MOV TL0,0CH SETB TR0 ;啟動;啟動 T0 SETB ET0 ;允許;允許T0中斷中斷 SETB EA ;開放;開放CPU中斷中斷 AJMP $ ;定時中斷等待;定時中斷等待ORG 0100 H ;T0中斷服務(wù)程序中斷服務(wù)程序 INQP:MOV TH0,0F0H ;重寫定時常數(shù);重寫定時常數(shù) MOV TL0,0CHCPL P1.0 ;P10變反輸出變反輸出 RETI 查詢方式查詢方式ORG 0000HAJMP STORG 0030HST: MOV SP,#60HMOV TMOD,#00H;方式;方式0L1:MOV TH0,#0F0H;初值;初值MOV

17、 TL0,#0CHCPL P1.0SETB TR0L2:JBC TF0,L1SJMP L2END采用方式采用方式1 1定時時間定時時間 t1ms=1000S定時常數(shù):定時常數(shù):TC=216-1000/2=65536-500=65036 = 11111110 00001011B=FE0CH用定時器用定時器T1:TMOD=10H,TH0=FEH,TL0=0CH編程與前相同編程與前相同【例例】欲用欲用80C51產(chǎn)生兩個方波,一個方波周期為產(chǎn)生兩個方波,一個方波周期為200s,另一,另一個方波周期為個方波周期為400s,該,該80C51同時使用串行口,用定時器同時使用串行口,用定時器/計計數(shù)器作為波特

18、率發(fā)生器數(shù)器作為波特率發(fā)生器,波特率為波特率為2400, fOCS9.216 MHz 。計算:計算:TL0初值:初值:HBftTOSCCL3101100112179876256121021691010025612266180.TH0初值:初值:HTCH6641021210216910200256660.TH1、TL1初值為:初值為:分析:分析:這時這時T0采用方式采用方式3工作,其中,工作,其中,TL0產(chǎn)生產(chǎn)生100s定時,由定時,由 P1.0輸出方波輸出方波1TH0產(chǎn)生產(chǎn)生200s定時,由定時,由Pl.1輸出方波輸出方波2 ;T1設(shè)置為方式設(shè)置為方式2,作波特率發(fā)生器用。,作波特率發(fā)生器用。

19、F6H編程:編程:ORG 0000H AJMP MAINORG 000BH ;TL0的中斷入口的中斷入口AJMP ITL0ORG 00lBH;TH0的中斷入口的中斷入口AJMP ITH0ORG 0100H MAIN: MOV SP, 60H ;設(shè)棧指針;設(shè)棧指針MOV TMOD, 23H ;設(shè);設(shè)T0為方式為方式3,TI為為2 MOV TL0,0B3H ;設(shè);設(shè)TL0初值初值(100s定時定時) MOV TH0,66H ;設(shè);設(shè)TH0初值初值(200s定時定時) MOV TL1,0F6H ;設(shè);設(shè)TL1初值初值(波特率為波特率為2400) MOV TH1, 0F6H ;設(shè);設(shè) TH1初值初值

20、SETB TR0 ;啟動;啟動 TL0 SETB TR1 ;啟動;啟動TH0 SETB ET0 ;允許;允許TL0中斷中斷 SETB ET1 ;允許;允許TH0中斷中斷 SETB EA ;CPU中斷開放中斷開放 AJMP ORG 0200HITL0:MOV TL0, 0B3H ;重裝定時常數(shù);重裝定時常數(shù) CPL P10 ;輸出方波;輸出方波1(200s) RETIITH0:MOV TH0,66H ;重裝定時常數(shù);重裝定時常數(shù)CPL P11 ;輸出方波;輸出方波2(400s) RETI【例例】假如一個用戶系統(tǒng)已使用了兩個外部中斷源,假如一個用戶系統(tǒng)已使用了兩個外部中斷源,即即INT0和和INT

21、1,用戶系統(tǒng)要求從,用戶系統(tǒng)要求從P1.0引腳上引腳上輸出輸出一個一個5kHz的方波的方波,并要求采用定時器,并要求采用定時器/計數(shù)器作為串行口計數(shù)器作為串行口的的波特率發(fā)生器波特率發(fā)生器,另外還需要再增加一個,另外還需要再增加一個外部中斷源外部中斷源。6.5.2 6.5.2 計數(shù)器的應(yīng)用計數(shù)器的應(yīng)用分析分析:除兩個外中斷除兩個外中斷(INT0、INT1)外,還需要)外,還需要兩個定時器兩個定時器(5KHZ和波特率發(fā)生器)和和波特率發(fā)生器)和一個計數(shù)器一個計數(shù)器(擴展外中斷)(擴展外中斷)把把T0設(shè)置為方式設(shè)置為方式3: TL0設(shè)置為計數(shù)器,設(shè)置為計數(shù)器, TH0只能做只能做8位定時器位定時器

22、(產(chǎn)生(產(chǎn)生5KHz方波),方波),T1就作為波特率發(fā)生器,設(shè)為方式就作為波特率發(fā)生器,設(shè)為方式2。頻率頻率5kHz即周期為即周期為200s,則定時時間,則定時時間100s,若采用,若采用12MHz的晶體振蕩器,則機器周期為的晶體振蕩器,則機器周期為1s。 計算時間常數(shù):計算時間常數(shù):TC28100/1156編程:編程:ORG 0000HSJMP MAINORG 000BHAJMP TL0INT;TL0中斷入口中斷入口 ORG 001BHAJMP TH0INT;TH0中斷入口中斷入口ORG 0030H MAIN: MOV TMOD,#27H ;T0為方式為方式3,TL0為計數(shù)方式為計數(shù)方式,

23、TH0為為 ;定時定時;T1作波特率發(fā)生器,方式作波特率發(fā)生器,方式2MOV TH0,#156 ;TH0定時常數(shù)定時常數(shù)MOV TL0, #0FFH ;TL0計數(shù)常數(shù)計數(shù)常數(shù)MOV TL1,#BAUD ;BAUD根據(jù)波特率算出根據(jù)波特率算出MOV TH1,#BAUDMOV TCON,#55H ;TR0和和TR1為為1,啟動啟動TL0和和TH0MOV IE,#8AH SJMP$ORG 0100HTL0INT:MOV TL0,#0FFH;重置計數(shù)長度;重置計數(shù)長度(中斷處理中斷處理)RETITH0INT:MOV TH0,#156;重置定時常數(shù);重置定時常數(shù)CPLP1.0;P1.0引腳輸出方波引腳輸

24、出方波RETI TF1 TF1 TR1 TR1 TF0 TF0 TR0 TR0 IE1 IT1 IE0 IT0IE1 IT1 IE0 IT0GATE C/T M1 M0 GATE C/T M1 M0 GATE C/T M1 M0GATE C/T M1 M06.5.3 6.5.3 門控位門控位GATEGATE的應(yīng)用的應(yīng)用 門控位門控位GATE可用作對可用作對INTx引腳上的高電平持引腳上的高電平持續(xù)時間進行計量。續(xù)時間進行計量。當當GATE位設(shè)為位設(shè)為“1”,并設(shè)定時,并設(shè)定時器器/計數(shù)器啟動位計數(shù)器啟動位TRx為為“1”,這時定時器,這時定時器/計數(shù)器計數(shù)器定時完全取決于定時完全取決于INTx

25、引腳,僅當引腳,僅當INTx引腳電平為引腳電平為“1”時,定時器才工作,換另一角度看,定時器實時,定時器才工作,換另一角度看,定時器實際記錄的時間就是相應(yīng)際記錄的時間就是相應(yīng)INTx引腳上高電平的持續(xù)引腳上高電平的持續(xù)時間。時間。通過反相器,通過反相器,則可測得相應(yīng)則可測得相應(yīng)INTxINTx引腳上低電引腳上低電平的持續(xù)時間。平的持續(xù)時間。二個時間的和即為二個時間的和即為INTxINTx引腳上輸入引腳上輸入波形的周期,其倒數(shù)即為波形的周期,其倒數(shù)即為INTxINTx引腳上輸入波形的頻引腳上輸入波形的頻率。還可算出占空比等參數(shù)。率。還可算出占空比等參數(shù)。6.5.3 6.5.3 門控位門控位GAT

26、EGATE的應(yīng)用的應(yīng)用 【例例】利用定時器計數(shù)器測定圖示波形的一個周期長度。利用定時器計數(shù)器測定圖示波形的一個周期長度。 INT1(P3.3)TR1 置置1T1開始計時開始計時TR1清零清零分析:分析:若若GATE=1,則則T1為定時器時,當為定時器時,當TR1=1且且INT1為高為高電平時,才啟動定時器。電平時,才啟動定時器。查詢法查詢法: ORG 0000HSTART:MOV TMOD,#90HMOV TL1,#00H;置為最大定時值;置為最大定時值MOV TH1,#00HLP1:JBP3.3,LP1;P3.3為高電平,等待為高電平,等待 SETB TR1;當;當P3.3為低時為低時,置置

27、TR1為為1LP2: JNBP3.3,LP2;當;當P3.3為低電平時,再等待為低電平時,再等待LP3:JBP3.3,LP3CLRTR1MOV 30H,TL0MOV 31H,TH0SJMP $當當fosc12MHz時,最大被測脈寬為時,最大被測脈寬為65536s。此編程實際只測量了高電平的寬度,此編程實際只測量了高電平的寬度,若被測波形除了接至若被測波形除了接至P3.3,另外同時通,另外同時通過一個反相器接至過一個反相器接至P3.2 (INT0) ,則通,則通過編程同時可以測得波形的高電平寬過編程同時可以測得波形的高電平寬度和低電平寬度。度和低電平寬度。中斷法:中斷法:【分析】設(shè)設(shè)6MHz晶振

28、晶振,T0為方式為方式1,定時溢出時間為,定時溢出時間為 100 ms 計數(shù)初值為計數(shù)初值為 FFFEH:(:(TH1)FFH,(,(TL1)FEH。 編程編程: ORG0000HSJMP MAINORG 000BH ;定時器;定時器T0中斷入口中斷入口 AJMP TIME0 ORG 00IBH ;定時器;定時器 T1中斷入口中斷入口 AJMP TIME1 ORG 0030HMAIN:MOV R0,0;清除;清除T0定時中斷次數(shù)計數(shù)器定時中斷次數(shù)計數(shù)器MOV TMOD,59H;T0為定時器為定時器,方式方式1, GATE1 ;T1為計數(shù)器、方式為計數(shù)器、方式1 MOV TH0,3CH ;T0定

29、時器初值定時器初值 MOV TL0,0B0H MOV TH1,0FFH ;T1計數(shù)器初值計數(shù)器初值 MOV TL1,0FEH SETB TR0;啟動;啟動T0定時器定時器 SETB TR1;啟動;啟動T1計數(shù)器計數(shù)器 MOV IP,08H ;T1中斷優(yōu)先級高于中斷優(yōu)先級高于T0SETB ET1 ;允許;允許T1中斷中斷 SETB ET0;允許;允許T0中斷中斷 SETB EA ;CPU開中斷開中斷SETB 20H ;設(shè);設(shè)20H為為T1計數(shù)中斷標志計數(shù)中斷標志LOOP:SETB F0;設(shè);設(shè)F0為為T0定時中斷標志定時中斷標志 JB F0,$;T0定時未溢出,等待定時未溢出,等待 JB 20H

30、,LOOP ;判;判T1若未溢出則循環(huán)若未溢出則循環(huán)SJMP $ ORG 0100HTIME0:MOV TL0,0B0H;重置;重置T0定時器初值定時器初值MOV TH0, 3CH INCR0;T0定時溢出計數(shù)器加定時溢出計數(shù)器加 1 CPL F0;T0定時中斷標志變反定時中斷標志變反RETIORG 0200HTIME1:CLR F0;清除;清除T0定時中斷標志定時中斷標志 CLR 20H;清除;清除T1計數(shù)中斷標志計數(shù)中斷標志 CLR ET0 ;禁止;禁止T0、T1 中斷中斷 CLR ET1CLR EA ;關(guān)中斷;關(guān)中斷 RETI 80C51可以隨時讀寫計數(shù)寄存器可以隨時讀寫計數(shù)寄存器TLx

31、和和THx (x為為0或或1) ,用于實時顯示計數(shù)值等。用于實時顯示計數(shù)值等。辦法是:辦法是:先讀先讀THx,后讀后讀TLx,再重讀再重讀THx,若兩次讀得的若兩次讀得的THx值是一樣的,則可以確定讀入的數(shù)據(jù)值是一樣的,則可以確定讀入的數(shù)據(jù)是正確的;是正確的;若兩次讀得的若兩次讀得的THx值不一致,則必須重讀。值不一致,則必須重讀。 6.5.4 6.5.4 運行中讀定時器運行中讀定時器/ /計數(shù)器計數(shù)器例例. 飛讀飛讀RDTIME:MOVA,TH0;讀;讀TH0 MOVR0,TL0;讀;讀TL0并存入并存入R0 CJNE A,TH0,RDTIME;與上次讀入的與上次讀入的TH0比較,若不等,重

32、讀比較,若不等,重讀 MOVR1,A;存;存TH0在在R1中中 RETEND【 6- 7 】 80C51 單片機的定時器計數(shù)器單片機的定時器計數(shù)器 T0 以以定時方法在定時方法在 P3.1 引腳上輸出周期為引腳上輸出周期為 400 s ,占空,占空比為比為 9: 1的矩形脈沖,以定時工作方式的矩形脈沖,以定時工作方式 2 編程實現(xiàn)編程實現(xiàn)。并對源程序加以注釋。并對源程序加以注釋。 fosc=6 M H z ?!敬鸫稹烤匦蚊}沖高電平時間為矩形脈沖高電平時間為 3 6 0 s ,低電平,低電平時間為時間為 40 s 。機器周期為。機器周期為 2 s 。計算:計算: 360s 定時定時, TC =2

33、8-360 s/2 s=256-180=76 TC=4CH 40s 定時,定時, TC =28-40 s/2 s=256-20=236 TC=ECH 采用查詢法編程:采用查詢法編程: ORG 0000H AJMP MAIN ORG 0030H MAIN : MOV TMOD , #02H ;定時器;定時器 T0 以方式以方式 2 定時定時 MOV TH0 , #0ECH ;定時;定時 40 s MOV TL0 , #0ECH CLR P3.1 ; P3.1 初始值初始值 SETB TR0 ;開啟定時器;開啟定時器 T0 LOOP : CLR P3.1 JBC TF0 ,REP ;查詢;查詢 4

34、0s 定時到,則轉(zhuǎn)定時到,則轉(zhuǎn) AJMP LOOP REP : SETB P3.1; P3 .1 輸出高電平輸出高電平 360 s MOV R7 , #09H ;定時;定時 40 s X 9=360 s LOOPl : JBC TF0 ,REPI ;查詢高電平;查詢高電平 360s 定時到,則轉(zhuǎn)定時到,則轉(zhuǎn) AJMP LOOPl REPI : DJNZ R7 ,LOOPl AJMP LOOP ; 360 s 到,則轉(zhuǎn)回輸出周期波形到,則轉(zhuǎn)回輸出周期波形 END【 6-12 6-12 】 采用中斷方法設(shè)計采用中斷方法設(shè)計 8OC51 8OC51 單片機的秒、單片機的秒、分脈沖發(fā)生器。要求采用定時

35、器計數(shù)器分脈沖發(fā)生器。要求采用定時器計數(shù)器T1T1的方的方式式 1 1編程,實現(xiàn)編程,實現(xiàn) P1.0 P1.0 每秒鐘產(chǎn)生一個機器周期每秒鐘產(chǎn)生一個機器周期的正脈沖的正脈沖,P1.1 ,P1.1 每分鐘產(chǎn)生一個機器周期的正脈每分鐘產(chǎn)生一個機器周期的正脈沖。并對源程序加以注釋。晶振頻率為沖。并對源程序加以注釋。晶振頻率為12MHz 12MHz 。【答答】機器周期為機器周期為1s1s,定時器采用方式,定時器采用方式 1 1 時,最時,最長定時時間僅為長定時時間僅為65ms 65ms 。需要采用定時。需要采用定時溢出次數(shù)溢出次數(shù) = = 所需定時。所需定時。 如定時設(shè)為如定時設(shè)為10ms10ms,則

36、定時溢出中斷,則定時溢出中斷100100次時,為次時,為定時定時1S 1S 。計算:計算: TC=2TC=21616-10000/1-10000/1 TC=55536=D8F0H TC=55536=D8F0H程序如下:程序如下: ORG 0000H AJMP MAIN ORG 001BH AJMP INTER ORG 0030HMAIN : MOV TMOD , #1 0H ;T1 為定時器方式為定時器方式 1 MOV THI , #0D8H ; 1 0 ms 定時初始值定時初始值 MOV TLI , #0F0H MOV R7 , #60 ;定時;定時 1 分計數(shù)器分計數(shù)器 MOV R0 ,

37、#1 00 ;定時;定時 1 S 計數(shù)器計數(shù)器 SETB TRI ;開啟定時器;開啟定時器 T1 SETB ETI ;開定時器;開定時器 T1 中斷中斷 SETB EA ;開中斷;開中斷 CLR P1.0 ;初始值;初始值 CLR P1.1 AJMP $ ;定時中斷等待;定時中斷等待10ms中斷服務(wù)程序中斷服務(wù)程序 INTER : MOV THI , #0D8H MOV TLI , #0F0H ;重置;重置 10ms 定時常數(shù)定時常數(shù) DJNZ R0, REP CPL P1 . 0 ; 1 s 定時到,定時到, P1.0 取反輸出取反輸出 MOV R0 ,#1 00 CLR P1.0 DJNZ

38、 R7 ,REP ;若;若 R7 不為不為 0 ,則中斷返回,則中斷返回 CPL P1.1 ; 1 分定時到,則分定時到,則 P1.1 取反輸出取反輸出 MOV R7 , #60 ; CLR P1.0 REP : RETI END 實驗三實驗三 外中斷外中斷P1.0P1.7接接8個發(fā)光二極管,管腳個發(fā)光二極管,管腳INT0、INT1接兩個按鍵,分別定義為接兩個按鍵,分別定義為“L”和和“R”。要求:上電全滅,按要求:上電全滅,按 “L”(或或R)鍵,最右(左)鍵,最右(左)側(cè)燈亮,側(cè)燈亮,每按一次每按一次“L” ”(或或R)鍵,則亮的燈向左(右)鍵,則亮的燈向左(右)移一位,移一位,當移到最左

39、(右)端時,燈全滅當移到最左(右)端時,燈全滅vORG 0000HvSJMP MAINvORG 0003HvSJMP INTLvORG 0013HvSJMP INTRvORG 1000H vMAIN: SETB EX0v SETB EX1v SETB IT0v SETB IT1v SETB EAv MOV A,#0FFHv MOV P1,Av MOV R1,#0FEHv MOV R0,#7FHv MOV R3,#9v MOV R4,#9vHEAR:SJMP HEARINTL:MOV A,R1INTL:MOV A,R1 MOV P1,A MOV P1,A RL A RL A MOV R1,A M

40、OV R1,A DJNZ R3,LL DJNZ R3,LL MOV A,#0FFH MOV A,#0FFH MOV P1,A MOV P1,A MOV R1,#0FEH MOV R1,#0FEH MOV R3,#9 MOV R3,#9 LL: RETI LL: RETI INTR:MOV A,R0INTR:MOV A,R0 MOV P1,A MOV P1,A RR A RR A MOV R0,A MOV R0,A DJNZ R4,LL DJNZ R4,LL MOV A,#0FFH MOV A,#0FFH MOV P1,A MOV P1,A MOV R0,#7FH MOV R0,#7FH MOV R4,#9 MOV R4,#9 LL: RETI LL: RETI END END 使用使用 MCS-51 內(nèi)部定時內(nèi)部定時/計數(shù)器,定時一秒鐘,計數(shù)器,定時一秒鐘,CPU 運用定運用定時中斷方式,實

溫馨提示

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

評論

0/150

提交評論