




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
會計學1單片機原理及應用C語言第6章MCS-51單片機定時器/計數器目錄6.1MCS-51定時器/計數器的結構及原理6.2定時器T0、T16.3定時器T26.4定時器應用舉例第1頁/共101頁
本章主要討論MCS-51單片機定時器/計數器的邏輯結構和工作原理。內容主要有MCS-51單片機定時器T0、T1、T2的邏輯結構,工作方式的選擇和應用。本章為單片機的主要內容,也是第七章串行口的學習的基礎。第6章MCS-51單片機的定時器/計數器第2頁/共101頁6.1MCS-51單片機定時器/計數器的結構及原理主要內容6.1.1MCS-51單片機定時器的結構6.1.2MCS-51單片機定時器的工作原理6.1.3定時器/計數器的控制寄存器第3頁/共101頁6.1.1MCS-51單片機定時器的結構
MCS-51單片機定時器/計數器邏輯結構圖:CPU中斷溢出溢出溢出定時器0定時器1定時器2TMODT2CONT2MODTCONTH0TL0TH1TL1TH2TL2RCAP2LRCAP2H模式模式T2(P1.0)T1(P3.5)T2EX(P1.1)T0(P3.4)模式控制控制控制中斷重裝捕獲第4頁/共101頁6.1.1MCS-51單片機定時器的結構
MCS-51主要由如下構成:三個16位的可編程定時器/計數器:定時器/計數器0、1和2。每個定時器有兩部分構成:THx和TLx特殊功能寄存器T2MOD和T2CON,主要對T2進行控制。特殊功能寄存器TMOD和TCON,主要對T0和T1進行控制。第5頁/共101頁6.1.1MCS-51單片機定時器的結構
引腳P3.5、P3.4、P1.0,輸入計數脈沖。定時器T0、T1和T2是3個中斷源,可以向CPU發出中斷請求。定時器/計數器T2增加了兩個8位的寄存器:RCAP2H和RCAP2L。特殊功能寄存器之間通過內部總線和控制邏輯電路連接起來。
第6頁/共101頁6.1.2MCS-51單片機定時器的工作原理
定時器/計數器T0、T1、T2的內部結構簡圖如下圖所示。C/T=0中斷請求振蕩器TLx(8位)THx(8位)Tx12分頻TFxC/T=1控制TRx第7頁/共101頁6.1.2MCS-51單片機定時器/計數器的工作原理
從上圖可以看出:定時器的實質是一個加1計數器。
C/T=0,為定時器方式。 計數信號由片內振蕩電路提供,振蕩脈沖12分頻送給計數器,每個機器周期計數器值增1。例如:如果晶振頻率為12MHz,則最高計數頻率為0.5MHz第8頁/共101頁6.1.2MCS-51單片機定時器/計數器的工作原理
C/T=1,為計數方式。 計數信號由Tx引腳(P3.4、P3.5和P1.0)輸入,每輸入一有效信號,相應的計數器中的內容進行加1。控制信號TRx=1時,定時器啟動。當定時器由全1加到全0時計滿溢出,從0開始繼續計數,TFx=1,向CPU申請中斷。第9頁/共101頁6.1.3定時器/計數器的方式和控制寄存器1、T0、T1工作模式寄存器TMOD功能:確定定時器的工作模式。其格式如圖6-3所示:TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0圖6-3定時器方式寄存器TMOD
GATE——外部門控制位。
GATE=1,使用外部控制門。TRx=1, P3.2(P3.3)=1時,啟動定時器。第10頁/共101頁6.1.3定時器/計數器的方式和控制寄存器 GATE=0,不使用外部門控制計數器C/T——定時或計數方式選擇位
。
C/T=0時,為定時器
C/T=1時,為計數器
采樣過程:CPU在每機器周期S5P2期間,輸入信號進行采樣。若前一機器周期采樣值為1,下一機器周期采樣值為0,則計數器增1,隨后的機器周期S3P1期間,新的計數值裝入計數器。第11頁/共101頁6.1.3定時器/計數器的方式和控制寄存器
M1、M0——工作模式選擇位。如下表所示:表6-1定時器/計數器的工作模式M1M0工作模式功能00模式013位定時器/計數器01模式116位定時器/計數器10模式28位自動重置定時器/計數器11模式3定時器0:TL0為8位定時器/計數器,TH0為8位定時器。定時器1:無此方式第12頁/共101頁6.1.3定時器/計數器的方式和控制寄存器 2、T0、T1的控制寄存器TCONTCON(88H)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0圖6-4定時器的控制寄存器TF1、TF0:T1、T0的溢出標志位計數溢出,TFx=1。
中斷方式:自動清零;
查詢方式:軟件清零。第13頁/共101頁6.1.3定時器/計數器的方式和控制寄存器TR1、TR0:T1、T0啟停控制位。置1,啟動定時器;清0,關閉定時器。IE1、IE0:外部中斷1、0請求標志位IT1、IT0:外部中斷1、0觸發方式選擇位注意:GATE=1,TRx與P3.2(P3.3)的配合。第14頁/共101頁6.2定時器T0、T1的工作模式及應用主要內容6.2.1模式0的邏輯結構及應用6.2.2模式1的邏輯結構及應用6.2.3模式2的邏輯結構及應用6.2.4模式3的邏輯結構及應用第15頁/共101頁6.2.1模式0的邏輯結構及應用M1M0=00,選擇模式0。邏輯結構如圖6-5所示。(以T0為例)
T0的結構:13位定時器/計數器。 由TH0的8位、TL0的低5位構成(高3位未用)
工作過程:TL0溢出后向TH0進位,TH0溢出后將TF0置位,并向CPU申請中斷。定時時間=(213-定時初值)×機器周期最大定時時間:213×機器周期第16頁/共101頁6.2.1模式0的邏輯結構及應用C/T=1,計數方式。計數脈沖由P3.4引腳輸入。C/T=0時,定時方式。 圖6-5模式0的邏輯結構圖第17頁/共101頁6.2.2模式1的邏輯結構及應用
M1M0=01時,選擇模式1。邏輯結構如下頁圖所示。
T0的結構:16位定時器/計數器。
TL0:存放計數初值的低8位。
TH0存放計數初值的高8位;定時時間=(216-定時初值)×機器周期 最大定時時間:216×機器周期第18頁/共101頁6.2.2模式1的邏輯結構及應用
工作過程:當TL0計滿時,向TH0進1;當TH0計滿時,溢出使TF0=1,向CPU申請中斷。
MCS-51單片機之所以設置幾乎完全一樣的方式0和方式1,是出于與MCS-48單片機兼容的。第19頁/共101頁6.2.3模式2的邏輯結構及應用M1M0=10時,選擇模式2。邏輯結構如圖6-7所示。
T0的結構:
TL0:8位的定時器/計數器;
TH0:8位預置寄存器,用于保存初值。
工作過程:當TL0計滿溢出時,TF0置1,向CPU發出中斷請求;同時引起重裝操作(TH0的計數初值送到TL0),進行新一輪計數。 第20頁/共101頁6.2.3模式2的邏輯結構及應用
圖6-7模式2的邏輯結構圖振蕩器12分頻T0(P3.4)TR0TF0中斷GATE+&C/T=0C/T=1TL0(8位)TH0(8位)P3.2第21頁/共101頁6.2.3模式2的邏輯結構及應用
定時時間=(28-初值)×機器周期
最大定時時間=28×機器周期優點:模式2能夠進行自動重裝載。模式0和1計數溢出后,計數器為全0。循環定時或計數時,需要重新設置初值。說明:在模式2能夠滿足計數或定時要求時,盡可能使用模式2。第22頁/共101頁6.2.4模式3的邏輯結構及應用1、T0模式3的結構特點
M1M0=11,選擇模式3。邏輯結構如圖 6-8和6-9所示:結構:TL0、TH0分為兩個獨立的8位計數器
TL0:8位定時器/計數器 使用T0所有的資源和控制位
TH0:8位定時器 使用T1所有的資源(中斷向量、中斷控制ET1、PT1)和控制位 (TR1、TF1)第23頁/共101頁6.2.4模式3的邏輯結構及應用圖6-8模式3下T0的邏輯結構圖第24頁/共101頁6.2.4模式3的邏輯結構及應用2、T0模式3時T1的工作模式
T1可以模式0~模式2工作。
T1的結構如圖6-9所示由于TF1及中斷矢量被TH0占用,所以T1僅用作波特率發生器或其它不用中斷的地方。
T1作波特率發生器,其計數溢出直接送至串行口。設置好工作方式,串行口波特率發生器開始自動運行。
TMOD中T1的M1M0=11,T1停止工作。第25頁/共101頁6.2.4模式3的邏輯結構及應用圖6-9模式3下,T1的邏輯結構圖第26頁/共101頁思考:T0工作在模式3,T1怎么進行方式設置?串行口重新裝入C/T=1C/T=0T1(P3.5)振蕩器12分頻TL1(8位)TH1(8位)第27頁/共101頁6.2.4模式3的邏輯結構及應用1、定時器/計數器工作模式的選擇方法(1)首先計算計數值N(2)確定工作模式 原則是盡可能地選擇模式2若N≤256選擇模式2,否則選擇模式1(3)如果需要增加一個定時器/計數器 選擇模式3。第28頁/共101頁6.2.4模式3的邏輯結構及應用2、定時器/計數器初值X的計算方法因為 X+N=28或216 所以 X=28或216-N(1)對定時器設定時時間為t N=t/機器周期所以 X=28或216-t/機器周期(2)對計數器
X=28或216-N第29頁/共101頁6.2.4模式3的邏輯結構及應用例6-1
設單片機的振蕩頻率為12MHz,用定時器/計數器0的模式1編程,在P1.0引腳產生一個周期為1000μs的方波,定時器T0采用中斷的處理方式。定時器的分析過程。工作方式選擇需要產生周期信號時,選擇定時方式。定時時間到了對輸出端進行周期性的輸出即可。
工作模式選擇
根據定時時間長短選擇工作模式。
首選模式2,可以省略重裝初值操作。第30頁/共101頁6.2.4模式3的邏輯結構及應用
定時時間計算:周期為1000μs的方波要求定時器的定時時間為500μs,每次溢出時,將P1.0引腳的輸出取反,就可以在P1.0上產生所需要的方波。定時初值計算:振蕩頻率為12MHz,則機器周期為1μs。設定時初值為X,(65536-X)×1μs=500μs
X=65036=0FE0CH定時器的初值為:TH0=0FEH,TL0=0CH
第31頁/共101頁6.2.4模式3的邏輯結構及應用C語言程序:#include<reg52.h> //包含特殊功能寄存器庫sbit P1_0=P1^0; //進行位定義voidmain() {TMOD=0x01; //T0做定時器,模式1 TL0=0x0c; TH0=0xfe; //設置定時器的初值
ET0=1; //允許T0中斷
EA=1; //允許CPU中斷
TR0=1; //啟動定時器
while(1); //等待中斷} 第32頁/共101頁6.2.4模式3的邏輯結構及應用voidtime0_int(void)interrupt1{ //中斷服務程序
TL0=0x0c; TH0=0xfe; //定時器重賦初值
P1_0=~P1_0; //P1.0取反,輸出方波}
匯編語言程序:
ORG 0000H SJMP MAIN ORG 000BH LJMP TIME0第33頁/共101頁6.2.4模式3的邏輯結構及應用MAIN: MOV TMOD,#01H ;T0定時,模式1 MOV TL0,#0CH ;置定時初值
MOV TH0,#0FEH SETB ET0 ;定時器T0開中斷
SETB EA ;CPU開中斷
SETB TR0 ;啟動定時器T0 SJMP $ ;等待定時器溢出TIME0: ;中斷服務程序
MOV TL0,#0CH MOV TH0,#0FEH ;重裝定時初值
CPL P1.0 ;P1.0取反
RETI ;中斷返回
END第34頁/共101頁6.2.4模式3的邏輯結構及應用
例6-2
設單片機的振蕩頻率為12MHz,用定時器/計數器0編程實現從P1.0輸出周期為500μs的方波。分析:方法同例6-1
定時時間:
方波周期為500μs,定時250μs。
模式選擇:定時器0可以選擇模式0、1和2。模式2最大的定時時間為256μs,滿足250μs的定時要求,選擇模式2。第35頁/共101頁6.2.4模式3的邏輯結構及應用(1)初值計算
(256-X)×1μs=250μs X=6; 則TH0=TL0=6(2)程序:采用中斷處理方式的程序:
C語言程序:#include <reg52.h>//包含特殊功能寄存器庫
sbit P1_0=P1^0;
第36頁/共101頁6.2.4模式3的邏輯結構及應用void main(){ TMOD=0x02; //選擇工作模式
TL0=0x06; TH0=0x06; //為定時器賦初值
ET0=1; //允許定時0中斷
EA=1; TR0=1; //啟動定時器0 while(1); //等待中斷} voidtime0_int(void)interrupt1 { P1_0=~P1_0;} 第37頁/共101頁6.2.4模式3的邏輯結構及應用匯編語言程序:
ORG 0000H LJMP MAIN ORG 000BH ;中斷處理程序 CPL P1.0 RETI
ORG 0030H ;主程序
MAIN: MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H
SETB ET0 ;允許定時器0中斷
SETB EA ;允許CPU中斷 SETB TR0 ;啟動定時器0 SJMP $ ;等待中斷
END
第38頁/共101頁6.2.4模式3的邏輯結構及應用采用查詢方式處理的程序:
C語言程序:#include<reg52.h> sbit P1_0=P1^0;voidmain(){ TMOD=0x02; TL0=0x06; TH0=0x06;TR0=1;
while(1) { while(!TF0); //查詢計數溢出 TF0=0; P1_0=~P1_0; }}第39頁/共101頁6.2.4模式3的邏輯結構及應用
匯編語言程序:MAIN: MOV TMOD,#02H ;主程序
MOV TL0,#06H MOV TH0,#06H SETB TR0LOOP: JNB TF0,$ ;查詢計數溢出
CLR TF0 CPL P1.0
SJMP LOOP END
第40頁/共101頁6.3定時器/計數器T2主要內容6.3.1定時器T2的特殊寄存器6.3.2定時器T2的工作方式及結構第41頁/共101頁6.3.1定時器/計數器T2的特殊寄存器 89C52中的T2是一個16位的、具有自動重裝載和捕獲能力的定時器/計數器。
T2的結構:除TL2、TH2和控制寄存器T2CON及T2MOD之外,還增加了捕獲寄存器RCAP2L(低字節)和RCAP2H(高字節)。
T2的計數脈沖源有兩個:一個是內部機器周期,另一個是由T2(P1.0)端輸入的外部計數脈沖。
第42頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器 T2有4種工作方式∶自動重裝、捕獲和波特率發生器、可編程時鐘輸出。
增加了兩個引腳:
T2(P1.0),T2EX(P1.1)。1、定時器/計數器2的控制寄存器T2CON
可位尋址和字節尋址。 功能:選擇T2的工作方式和工作模式。允許位尋址和字節尋址。其格式如下:
第43頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器 TF2
:定時器/計數器2的溢出中斷標志位
T2溢出時置位,申請中斷。軟件清零。 波特率發生器方式下,RCLK=1或TCLK=1時,定時器溢出不對TF2進行置位。
EXF2(T2CON.6):定時器/計數器2外部觸發標志位T2CON(C8H)D7D6D5D4D3D2D1D0TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL2圖6-10定時器T2的控制寄存器
第44頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器EXEN2=1,且T2EX引腳上有負跳變將觸發捕獲或重裝操作,EXF2=1,向CPU發出中斷請求。軟件復位。RCLK:串行口接收時鐘允許標志位RCLK=1時,T2溢出信號分頻后做串行口工作在模式1和3的接收波特率。RCLK=0時,T1溢出信號分頻信后做串行口接收波特率。第45頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器TCLK:串行口發送時鐘允許標志位TCLK=1時,T2溢出信號分頻后做串行口工做在模式1和3的發送波特率。TCLK=0時,T1溢出信號分頻后做串行口的發送波特率。第46頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器EXEN2(T2CON.3
):定時器/計數器2外部允許標志位EXEN2=1,定時器/計數器2沒有工作在波特率發生器方式,如T2EX(P1.1)引腳上產生負跳變時,將激活“捕獲”或“重裝”操作。
EXEN2=0,T2EX引腳上的電平變化對定時器/計數器2不起作用。第47頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器TR2
:定時器/計數器2啟動控制位TR2=1,啟動定時器/計數器2。TR2=0,停止定時器/計數器2。C/T2:T2的定時器或計數器方式選擇位。C/T2=1,T2為計數器。
對T2(P1.0)引腳輸入脈沖進行計數(下降沿觸發);當T2(P1.0)產生負跳變時,計數器增1。
第48頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器C/T2=0,T2做定時器。每個機器周期T2加1。CP/RL2
:捕獲和重裝載方式選擇控制位捕獲方式:
CP/RL2=1,EXEN2=1,T2EX(P1.1)引腳負跳變將觸發捕獲操作。
重裝載方式:CP/RL2=0,EXEN2=1,T2EX引腳有負跳變或T2計滿溢出時,觸發自動重裝操作。
第49頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器
RCLK=1或TCLK=1時,定時器/計數器2做波特率發生器。CP/RL2標志位不起作用,當T2溢出時強制自動裝載。2、數據寄存器TH2、TL28位的數據寄存器,組成16位定時器/計數器。字節尋址,地址分別為CDH和CCH。復位后,TH2=00H,TL2=00H。3、捕獲寄存器RCAP2H和RCAP2L第50頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器RCAP2H:高8位捕獲寄存器,字節地址為CBH。RCAP2L:低8位捕獲寄存器,字節地址為CAH。捕獲方式,保存當前捕獲的計數值。重裝方式,保存重裝初值。復位后均為00H。第51頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器功能:對定時器的加1減1計數方式進行設置。選擇是否工作在可編程時鐘輸出方式。復位后為××××××00B。T2MOD(C9H)D7D6D5D4D3D2D1D0—
—
—
—
—
—
T2OEDCEN
圖6-11定時器T2的模式控制寄存器4、定時器/計數器2的模式控制寄存器T2MOD第52頁/共101頁6.3.1定時器/計數器T2的特殊功能寄存器T2MOD中標志—:保留位,未定義,為未來功能擴展用。T2OE:定時器/計數器2輸出啟動位。T2OE=1,工作在可編程時鐘輸出方式。輸出方波信號至T2(P1.0)引腳。 DCEN:定時器/計數器2向上/向下計數控制位。當DCEN=l,T2自動向下(遞減)計數當DCEN=0,T2自動向上(遞增)計數
第53頁/共101頁6.3.2定時器/計數器T2的工作方式
定時器/計數器2是一個16位的加1計數器,具有四種工作方式。如表6-2所示:
方式選擇寄存器:T2CON和T2MOD。注意:無論T2做定時器還是計數器,都具有捕獲和自動重裝的功能。 第54頁/共101頁6.3.2定時器/計數器T2的工作方式
表6-2定時器/計數器2的工作方式RCLK+TCLKCP/RL2TR2T2OE工作方式001016位自動重裝方式0110捕獲方式1×10波特率發生器方式0×11時鐘輸出方式××0×關閉T2第55頁/共101頁6.3.2定時器/計數器T2的工作方式一、16位自動重裝方式CP/RL2=0,DCEN=0時,選擇自動重裝方式。結構如下圖所示:T2計滿溢出時,TF2置1,申請中斷。打開重裝載三態緩沖器,將RCAP2H和RCAP2L的內容自動裝載到TH2和TL2中。EXEN2=1且T2EX(P1.1)端的信號有負跳變時,EXF2置1,申請中斷。引起重裝載操作。第56頁/共101頁6.3.2定時器/計數器T2的工作方式RCAPLRCAPHTF2TL2TH2EXF2EXEN2T2(P1.0)T2EX(P1.1)溢出T2中斷請求TR2振蕩器÷12C/T2=0C/T2=1++第57頁/共101頁6.3.2定時器/計數器T2的工作方式CP/RL2=0,DCEN=1時,定時器/計數器2既可以增量(加1)和減量(減1)計數。T2EX電平控制計數方向:
當T2EX(P1.1)引腳輸入為高電平1時,T2執行增量(加1)計數。
增量計數過程:計滿溢出時,一方面置位TF2,向主機請求中斷處理;另一方面將存放在寄存器RCAP2L和RCAP2H中的16位計數初值自動重裝TL2和TH2中,進行新一輪加1計數。第58頁/共101頁6.3.2定時器/計數器T2的工作方式
第59頁/共101頁6.3.2定時器/計數器T2的工作方式T2EX(P1.1)引腳為低電平0時,定時器/計數器2執行減量(減1)計數。減量計數過程:是用FFH分別初始化(預置)TL2和TH2,用0FFFFH減去計數次數所求得的下限初始化RCAP2L和RCAP2H。計數器不斷減1,直至計數器中的值等于寄存器RCAP2L和RCAP2H中預置的值時,計滿溢出。0FFH重裝TL2和TH2,進行新一輪的計數操作第60頁/共101頁6.3.2定時器/計數器T2的工作方式增量(加1)計數是以65536為模。對計數次數求補得到計數初值,此初值初始化TL2、TH2和RCAP2L、RCAP2H陷阱寄存器。在電平控制重裝方式下,無論減量增量計數,溢出時TF2置1,EXF2狀態翻轉,相當于17位計數器的最高位。第61頁/共101頁6.3.2定時器/計數器T2的工作方式二、捕獲方式當CP/RL2=l,選擇捕獲方式。存在以下兩種情況。T2結構如下圖所示,有兩種情況:EXEN=0
定時器2的計數溢出,置位TF2,申請中斷。
EXEN2=1
T2EX(P1.1)端的信號有負跳變時,觸發捕獲操作。將TH2和TL2的內容自動捕獲到寄存器RCAP2H和RCAP2L中同時EXF2置1,申請中斷。第62頁/共101頁6.3.2定時器/計數器T2的工作方式
圖6-14捕獲方式的邏輯結構圖第63頁/共101頁6.3.2定時器/計數器T2的工作方式三、波特率發生器方式
RCLK=1或TCLK=1時,選擇波特率發生器方式。結構如下圖所示,從圖可以看出:RCLK=1,T2為接收波特率發生器。TCLK=1,T2為發送波特率發生器。
C/T2=0,選用內部脈沖。
C/T2=1,選用外部脈沖。
T2(P1.0)輸入負跳變時,計數值增l。第64頁/共101頁6.3.2定時器/計數器T2的工作方式
第65頁/共101頁6.3.2定時器/計數器T2的工作方式計數溢出時,觸發自動裝載操作。RCAP2H和RCAP2L的內容自動裝載到TH2和TL2中。T2用做波特率發生器時,TH2的溢出不會將TF2置位,不產生中斷請求。T2EX還可以作為一個附加的外部中斷源。
T2用做波特率發生器時,若EXEN2=1,當T2EX有負跳變時,EXF2置1,由于不發生重裝載或捕獲操作,此時T2EX引腳可外接一中斷源。第66頁/共101頁6.3.2定時器/計數器T2的工作方式定時器/計數器T2作為波特率發生器使用時的編程方法如下:…RCAP2H=0x30; //設置波特率RCAP2L=0x38; TCLK=1; //選擇定時器2的溢出脈沖 作為波特率發生器
注意:在波特率發生器工作方式下,在T2計數過程中不能再讀/寫TH2和TL2的內容。第67頁/共101頁6.3.2定時器/計數器T2的工作方式四、可編程時鐘輸出方式
T2OE=1時,C/T2=0時,T2工作于時鐘輸出方式。結構如下圖所示:
工作過程:當T2計滿溢出時,T2(P1.0)引腳狀態翻轉,從而輸出頻率可調、精度很高的方波信號;同時使RCAP2H和RCAP2L寄存器內容裝入TH2和TL2寄存器中,重新計數。在時鐘輸出方式下,T2溢出時不置位TF2。第68頁/共101頁6.3.2定時器/計數器T2的工作方式當EXEN2=1,T2EX(P1.1)引腳有負跳變時,EXF2將置1。(同波特率發生器方式)從P1.0引腳輸出的時鐘信號頻率為:Fosc/(4×(65536-(RCAP2H,RCAP2L)))
第69頁/共101頁6.3.2定時器/計數器T2的工作方式
圖6-16T2時鐘輸出方式下的邏輯結構圖第70頁/共101頁6.4定時器應用舉例主要內容6.4.1定時器的初始化6.4.2定時器應用舉例第71頁/共101頁6.4.1定時器的初始化
在使用定時器/計數器前,應首先對其進行初始化編程。 一、定時器的初始化步驟1、選擇工作模式和工作方式。
設置TMOD、T2MOD。2、設置定時器的計數初值。
設置THx和TLx,RCAP2H和RCAP2L。3、中斷設置:設置IE。4、啟動定時器。
設置TCON或T2CON。可以使用位操作指令。例如:SETBTRx。第72頁/共101頁6.4.1定時器的初始化
二、定時器/計數器初值計算根據定時器/計數器的模式和方式,計算計數初值(注意T2)計數器的長度為n,則計數的最大值為2n
。
1、工作于定時方式計數脈沖由內部的時鐘提供,每個機器周期進行加1。設晶振頻率為fosc,則計數脈沖的頻率為fosc/12,計數脈沖周期T=1/(fosc/12)。第73頁/共101頁6.4.1定時器的初始化如果進行定時時間為t,計數初值為X,則:t=(2n
-X)×12/fosc2、工作于計數方式當工作在計數方式時,對外部脈沖計數。利用計數器計數結束產生溢出的特性,來計算初值X。則有:X=2n—計數次數第74頁/共101頁6.4.2定時器的應用舉例例6-3
利用定時器T1的模式2對外部信號進行計數,要求每計滿100次,將P1.0端取反。分析:T1工作在計數方式。脈沖數100。模式2,模式字TMOD=0110××××b。1、初值計數:在模式2下:X=
28-100=156D=9CH2、C語言程序:#include<reg52.h>sbitp1_0=p1^0; //進行位定義第75頁/共101頁6.4.2定時器的應用舉例 voidmain(){ TMOD=0x60; //T1工作在模式2,計數
TL1=0x9c; //裝入計數(重裝)初值
TH1=0x9c; ET1=1; //允許定時器1中斷
EA=1; //開中斷
TR1=1; //啟動定時器1 while(1);}第76頁/共101頁6.4.2定時器的應用舉例voidtime0_int(void)interrupt3 //中斷服務程序{ P1_0=~P1_0; //取反,產生方波} 3、匯編語言程序:MAIN: MOV TMOD,#60H ;T1工作在模式2,計數 MOV TL1,#9CH ;裝入計數初值 MOV TH1, #9CH ;裝入計數(重裝)初值第77頁/共101頁6.4.2定時器的應用舉例
MOV IE,#88H ;允許定時器中斷
SETB TR1 ;啟動定時器 HERE: SJMPHERE ;等待中斷 中斷服務程序: ORG 001BH ;中斷服務程序入口地址 CPL P1.0 ;對P1.0引腳信號取反RETI ;中斷返回第78頁/共101頁6.4.2定時器的應用舉例
例6-4
某一應用系統需要對INT0引腳的正脈沖測試其脈沖寬度。分析:可以設置定時器/計數器0為定時方式,工作在模式1,且置位GATE位為1,將外部需測試的脈沖從INT0引腳輸入,設機器周期為1μs。 第79頁/共101頁6.4.2定時器的應用舉例 C語言程序:計算脈寬和處理程序略。#include<reg52.h>sbitP3_2=P3^2;unsignedint_test(){ TMOD=0x09; TL0=0x00; TH0=0x00; while(P3_2); TR0=1; 第80頁/共101頁6.4.2定時器的應用舉例
while(!P3_2); while(P3_2); TR0=0; return(TH0*256+TL0);}
匯編語言程序:INT00: MOVTMOD,#09H MOV TL0,#00H ;設置計數初值
MOV TH0,#00HLOP1: JB P3.2,LOP1 ;等待P3.2變低電平第81頁/共101頁6.4.2定時器的應用舉例 SETB TR0 ;啟動T0計數LOP2: JNB P3.2,LOP2 ;等待P3.2變成高電平LOP3: JB P3.2,LOP3 ;等待P3.2變成低電平
CLR TR0 ;停止T0計數
MOV A,TL0 ;計數器TL0中的內容送A MOV B,TH0 ;計數器TH0中的內容送B
本題也可以使用定時器/計數器2工作在捕獲方式下進行脈寬測試。
注意:T2脈寬測試必須在定時器未溢出的情況下才有效。
第82頁/共101頁6.4.2定時器的應用舉例
例6-5
某應用系統要求通過P1.0和P1.1口分別輸出脈沖周期為200μs和400μs的方波,fosc=6MHz。
分析:需要兩個定時器。可以選擇使用定時器/計數器0,設置為定時模式,工作模式3,分成兩個8位的定時器。
1、計算定時初值。 t=(256-X)×12/fosc初值分別為0CEH和9CH。 第83頁/共101頁6.4.2定時器的應用舉例 2、C語言程序:#include<reg52.h>sbit P1_0=P1^0; //進行位定義sbit P1_1=P1^1; voidmain(){ TMOD=0x03; //設置T0定時,工作在模式3 TL0=0xce; //設置TL0計數初值,產生 200μs方波
TH0=0x9c; //設置TH0計數初值,產生 400μs方波
ET0=1; //設置定時器0中斷允許位
第84頁/共101頁6.4.2定時器的應用舉例 ET1=1; //設置定時器/計數 //器1中斷允許位
EA=1; //設置總中斷允許位
TR0=1; //啟動定時器T0 TR1=1; //啟動定時器T1 while(1); //等待溢出}voidtime0L_int(void)interrupt1{ //T0中斷服務程序
TL0=0xce; //定時器重賦初值
P1_0=~P1_0; //產生方波} 第85頁/共101頁6.4.2定時器的應用舉例voidtime0H_int(void)interrupt3 { //T1中斷服務程序
TH0=0x9c; //定時器重賦初值
P1_1=~P1_1; //產生方波
} 3、匯編語言程序:主程序:
ORG 0000H LJMP MAIN
第86頁/共101頁6.4.2定時器的應用舉例
ORG 000BH LJMP T0S ORG 001BH LJMP T1SMAIN:
MOV TMOD,#03H ;設置T0定時,模式3 MOV TL0,#0CEH ;設置TL0計數初值,產 生200μs方波
MOV TH0, #9CH ;設置TH0計數初值,產 生400μs方波第87頁/共101頁6.4.2定時器的應用舉例 SETB EA ;設置總中斷允許位 SETB ET0 ;允許定時器0中斷 SETB ET1 ;允許定時器1中斷 SETB TR0 ;啟動定時器T0 SETB TR1 ;啟動定時器T1T0中斷服務程序:T0S: MOV TL0,#0CEH;重新設置定時初值 CPL P1.0 ;P1.0口的輸出取反
RETI
第88頁/共101頁6.4.2定時器的應用舉例T1中斷服務程序:T1S: MOV TH0,#9CH ;重新設置定時初值
CPL P1.1 ;對P1.0口輸出信號取反
RETI ;中斷返回例6-6
利用定時器精確定時1s控制LED以秒為單位閃爍。已知fosc=12MHz。分析:定時器/計數器在定時方式下,各個模式最大定時時間分別為:第89頁/共101頁6.4.2定時器應用舉例
定時器0=(8192-0)×12/fosc=8.192ms
定時器1=(65536-0)×12/fosc=65.536ms
定時器2=(256-0)×12/fosc=0.256ms
選擇模式1。定時時間為10ms,當10ms的定時時間到,TF1=1,連續定時100次,調用亮燈函數;再連續定時100次,調用滅燈函數。循環工作,即達到1s閃爍1次的效果。1、初值計算:(256-X)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫療器械行業中的品牌建設與市場定位
- 醫療器械技術進步對商業發展的影響
- 醫療行業中的科技力量-探討移支動技術在健康教育中的應用
- 利用區塊鏈進行精確控制優化醫療資源供應鏈管理的路徑研究
- 2025年生產部工作年度總結模版
- 醫療健康產業中的大數據與人工智能
- 醫療大數據分析在疾病預防中的價值
- 企業食堂供貨合同范例
- 以環保為目標創新型醫院的設計與實施
- 供銷合同范例6
- 先天性高胰島素性低血糖血癥病因介紹
- Excel高效辦公應用與技巧知到智慧樹章節測試課后答案2024年秋四川職業技術學院
- 數字化賦能應用型高校實踐教學改革研究
- 《前列腺癌篩查及治療的臨床研究進展》
- 11.5 歌曲《賣報歌》課件(14張)
- 2024年新疆中考數學試卷(含答案解析)
- 員工突發疾病應急預案
- 7分析一個實際的環境問題課件科學五年級下冊教科版
- 小學英語語法專題訓練:名詞所有格(含答案)
- 2023年全國職業院校技能大賽-直播電商賽項規程
- DL∕T 5161.5-2018 電氣裝置安裝工程質量檢驗及評定規程 第5部分:電纜線路施工質量檢驗
評論
0/150
提交評論