版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
單片機第七章1第1頁,課件共40頁,創(chuàng)作于2023年2月定時/計數(shù)器的應用1.計數(shù)功能:生產(chǎn)線上產(chǎn)品計數(shù)。每個產(chǎn)品通過得到一個脈沖信號,計數(shù)器記錄脈沖個數(shù),當計數(shù)值與設定值相等,啟動包裝機器。檢測轉(zhuǎn)速。電機轉(zhuǎn)動一圈發(fā)出一個脈沖,計數(shù)器記錄一秒時間內(nèi)脈沖個數(shù),顯示轉(zhuǎn)速。2.定時功能:用于實時控制,定時采樣、定時啟動等。當前時間與設定時間值相等,執(zhí)行規(guī)定操作。2第2頁,課件共40頁,創(chuàng)作于2023年2月定時/計數(shù)的方法
實現(xiàn)定時功能,比較方便的辦法是利用單片機內(nèi)部的定時/計數(shù)器。也可以采用下面三種方法:軟件定時:軟件定時不占用硬件資源,但占用了CPU時間,降低了CPU的利用率。時基電路定時:例如采用555電路,外接必要的元器件(電阻和電容),即可構(gòu)成硬件定時電路。但在硬件連接好以后,定時值與定時范圍不能由軟件進行控制和修改,即不可編程??删幊绦酒〞r:這種定時芯片的定時值及定時范圍很容易用軟件來確定和修改,此種芯片定時功能強,使用靈活。在單片機的定時/計數(shù)器不夠用時,可以考慮進行擴展。3第3頁,課件共40頁,創(chuàng)作于2023年2月7.1定時/計數(shù)器的結(jié)構(gòu)和工作原理
一、定時/計數(shù)器的結(jié)構(gòu)定時/計數(shù)器的實質(zhì)是加1計數(shù)器(16位),由高8位和低8位兩個寄存器組成。TMOD是定時/計數(shù)器的工作方式寄存器,確定工作方式和功能;TCON是控制寄存器,控制T0、T1的啟動和停止及設置溢出標志。
4第4頁,課件共40頁,創(chuàng)作于2023年2月單片機工作的時間概念振蕩周期:也稱時鐘周期,是指為單片機提供時鐘脈沖信號的振蕩源的周期。機器周期:一個機器周期包含6個狀態(tài)周期S1~S6,也就是12個時鐘周期。在一個機器周期內(nèi),CPU可以完成一個獨立的操作。定時概念定時源、初始值、計數(shù)方向。容量、溢出。5第5頁,課件共40頁,創(chuàng)作于2023年2月二、定時/計數(shù)器的工作原理
加1計數(shù)器輸入的計數(shù)脈沖有兩個來源,一個是由系統(tǒng)的時鐘振蕩器輸出脈沖經(jīng)12分頻后送來;一個是T0或T1引腳輸入的外部脈沖源。每來一個脈沖計數(shù)器加1,當加到計數(shù)器為全1時,再輸入一個脈沖就使計數(shù)器回零,且計數(shù)器的溢出使TCON中TF0或TF1置1,向CPU發(fā)出中斷請求。如果定時/計數(shù)器工作于定時模式,則表示設定時間到;如果工作于計數(shù)模式,則表示計數(shù)值已滿??梢姡梢绯鰰r計數(shù)器的值減去計數(shù)初值才是加1計數(shù)器的計數(shù)值。
6第6頁,課件共40頁,創(chuàng)作于2023年2月設置為定時器模式時,加1計數(shù)器是對內(nèi)部機器周期計數(shù)(1個機器周期等于12個振蕩周期,即計數(shù)頻率為晶振頻率的1/12)。計數(shù)值N乘以機器周期T就是定時時間t
,t=N×T。設置為計數(shù)器模式時,外部脈沖由T0或T1引腳輸入到計數(shù)器。在每個機器周期的S5P2期間采樣T0、T1引腳電平。當某周期采樣到高電平輸入,而下一周期又采樣到低電平時,則計數(shù)器加1,更新的計數(shù)值在下一個機器周期的S3P1期間裝入計數(shù)器。由于檢測一個從1到0的下降沿需要2個機器周期,因此要求被采樣的電平至少要維持一個機器周期。當晶振頻率為12MHz時,最高計數(shù)頻率不超過1/2MHz,即計數(shù)脈沖的周期要大于2s。
7第7頁,課件共40頁,創(chuàng)作于2023年2月
7.2定時/計數(shù)器的控制
80C51單片機定時/計數(shù)器的工作由兩個特殊功能寄存器控制。TMOD用于設置其工作方式;TCON用于控制其啟動和中斷申請。一、工作方式寄存器TMOD
工作方式寄存器TMOD用于設置定時/計數(shù)器的工作方式,低四位用于T0,高四位用于T1。每位意義…8第8頁,課件共40頁,創(chuàng)作于2023年2月GATE:門控位。GATE=0時,用軟件啟動定時/計數(shù)器工作(使TCON中的TR0或TR1為1);GATA=1時,由軟件和硬件聯(lián)合啟動定時/計數(shù)器工作(外部中斷引腳為高電平)??蓳?jù)此測量脈寬。
:定時/計數(shù)模式選擇位。為0時選擇定時模式;為1時選擇計數(shù)模式。M1M0:工作方式設置位。定時/計數(shù)器有四種工作方式。9第9頁,課件共40頁,創(chuàng)作于2023年2月T1停止,也可工作,具體見后…10第10頁,課件共40頁,創(chuàng)作于2023年2月
二、控制寄存器TCONTCON的低4位用于控制外部中斷。TCON的高4位用于控制定時/計數(shù)器的啟動和中斷申請。TF1(TCON.7):T1溢出中斷請求標志位。T1計數(shù)溢出時由硬件自動置TF1為1。CPU響應中斷后TF1由硬件自動清0。T1工作時,CPU可隨時查詢TF1的狀態(tài)。TF1也可以用軟件置1或清0,同硬件置1或清0的效果一樣。TR1(TCON.6):T1運行控制位。TR1置1時,T1開始工作;TR1置0時,T1停止工作。還需考慮GATE的功能。TF0(TCON.5):T0溢出中斷請求標志位,其功能與TF1類同。TR0(TCON.4):T0運行控制位,其功能與TR1類同。11第11頁,課件共40頁,創(chuàng)作于2023年2月三、計數(shù)寄存器TH、TL定時/計數(shù)器的寄存器,高字節(jié)TH,低字節(jié)TL。計數(shù)的初始值保存其中。12第12頁,課件共40頁,創(chuàng)作于2023年2月
7.3定時/計數(shù)器的工作方式
一、方式0(已不使用)
方式0為13位計數(shù),由TL0的低5位(高3位未用)和TH0的8位組成。TL0的低5位溢出時向TH0進位,TH0溢出時,置位TCON中的TF0標志,向CPU發(fā)出中斷請求。13第13頁,課件共40頁,創(chuàng)作于2023年2月
二、方式1(常用)
方式1的計數(shù)位數(shù)是16位,由TL0作為低8位、TH0作為高8位,組成了16位加1計數(shù)器。計數(shù)個數(shù)與計數(shù)初值的關系為:
定時器的初值還可以采用計數(shù)個數(shù)直接取補法獲得。如:MOVTH0,#high(﹣5000)
TH0=(﹣5000)>>8;14第14頁,課件共40頁,創(chuàng)作于2023年2月
三、方式2方式2為自動重裝初值的8位計數(shù)方式。
工作方式2特別適合精確的時間控制,信號發(fā)生器;串口通信。計數(shù)個數(shù)與計數(shù)初值的關系為:
15第15頁,課件共40頁,創(chuàng)作于2023年2月
四、方式3(T0對T1有影響)方式3只適用于定時/計數(shù)器T0,T1處于方式3時相當于TR1=0,停止計數(shù);但仍可選其它方式工作/串口。T0在方式3時分為兩個獨立的8位計數(shù)器TL0和TH0,TL0正常工作,TH0只能定時,借用TR1和TF1。16第16頁,課件共40頁,創(chuàng)作于2023年2月五、80C52具有定時器/計數(shù)器T2T2的控制寄存器為T2CON和T2MOD17第17頁,課件共40頁,創(chuàng)作于2023年2月
7.4定時/計數(shù)器用于外部中斷擴展
利用計數(shù)器方式,計數(shù)初值設定為滿程,將待擴展的外部中斷源接到外部計數(shù)引腳。當該引腳輸入一個下降沿信號時,計數(shù)器便加1,并產(chǎn)生溢出中斷。外部信號加1計數(shù)->溢出->中斷18第18頁,課件共40頁,創(chuàng)作于2023年2月
例,利用T0擴展一個外部中斷源。設置T0為方式2工作,TH0、TL0的初值均為0FFH,允許中斷。其初始化程序如下:
TMOD=0x06;00000110置T0為計數(shù)器方式2 TL0=0x0FF;計數(shù)初值為滿程
TH0=0x0FF TR0=1;啟動T0工作 ET0=1;允許T0中斷 EA=1;CPU開中斷19第19頁,課件共40頁,創(chuàng)作于2023年2月7.5定時/計數(shù)器應用初始化程序需完成如下準備:1確定T0和T1的工作方式,對TMOD賦值。2計算初值,并將其寫入TH0、TL0或TH1、TL1。X=2n-N=2n-t/T=2n-t×f3使TR0或TR1置位,啟動定時/計數(shù)器定時或計數(shù)。中斷方式時,則對IE賦值,開放中斷。注意:T0和T1對號入座。20第20頁,課件共40頁,創(chuàng)作于2023年2月應用結(jié)合I/O口產(chǎn)生脈沖波形;測量外接信號的頻率和(正)脈寬;延時;串行通信等。21第21頁,課件共40頁,創(chuàng)作于2023年2月單片機定時/計數(shù)器的應用實例22第22頁,課件共40頁,創(chuàng)作于2023年2月基礎知識初始化步驟:1確定T0和T1的工作方式,對TMOD賦值。2計算初值,并寫入TH0、TL0或TH1、TL1。X=2n-N=2n-t/T=2n-t×f簡便方法:取補數(shù):MOVTH0,#high(﹣5000)
TH0=(﹣5000)>>8;3使TR0或TR1置位,啟動定時/計數(shù)器工作。中斷方式時,需對IE賦值,開放中斷。并有中斷服務程序。23第23頁,課件共40頁,創(chuàng)作于2023年2月應用舉例結(jié)合I/O口產(chǎn)生方波,結(jié)合D/A產(chǎn)生任意脈沖波形;測量外接信號的頻率和正脈寬;延時;串行通信等。一.產(chǎn)生方波,可采用中斷和查詢方式(清除TF)。重點選擇定時方式1和2(包括軟件擴展)。提示:忽略方式0的例子。24第24頁,課件共40頁,創(chuàng)作于2023年2月產(chǎn)生方波信號實例例,從P1.0管腳上輸出脈沖波形,高電平持續(xù)時間為5ms,低電平持續(xù)時間為12ms(設單片機的時鐘晶體為12MHz)。
算法:循環(huán)結(jié)構(gòu),先定時5ms,P1.0腳輸出高電平;5ms定時到后,從P1.0腳上輸出低電平,再定時12ms,12ms定時到后,又回到5ms的定時循環(huán)工作。查詢方式必須清除標志。初值:N5=5000/1=5000,N12=12000/1=12000。25第25頁,課件共40頁,創(chuàng)作于2023年2月查詢源程序ORG0000HCALLT0init;調(diào)用T0初始化子函數(shù)LOOP:SETBP1.0;輸出高電平MOVTH0,#high(-5000);T0送定時5ms初值MOVTL0,#low(-5000)JNBTF0,$;等5ms的定時到
CLRTF0 ;時間到清TF0標志位
CLRP1.0;將P1.0置為低電平
MOVTH0,#high(-12000);送定時12ms初值
MOVTL0,#low(-12000)JNBTF0,$;等待12ms的定時到
CLRTF0 ;時間到清TF0標志位AJMPLOOPT0init:MOVTMOD,#01H;T0方式1定時SETBTR0 ;啟動T0工作RETEND
開始送高電平,定時5ms時間到清標志送低電平,定時12msYN時間到清標志YN定時初始化26第26頁,課件共40頁,創(chuàng)作于2023年2月C51查詢源程序#include<at89x52.h>voidT0init(void){P1_0=1;TMOD=0x01;//T0方式1定時
TH0=0xec;//給定時器T0送5ms初值
TL0=0x78;TR0=1;//啟動T0工作}
voidmain(void){T0init();//調(diào)用T0初始化子函數(shù)while(1){while(TF0==0);//等5ms的定時到
TF0=0;
P1_0=0;TR0=0;
TH0=0xd1;TL0=0x20;TR0=1;while(TF0==0);//等12ms的定時到
TF0=0;P1_0=1;TR0=0;
TH0=0xec;TL0=0x78;TR0=1;}}27第27頁,課件共40頁,創(chuàng)作于2023年2月中斷源程序ORG0000HAJMPMAINORG001BHAJMPT1PRGMAIN:MOVR0,#1;R0=0定時5msR0=1定時12msT1init:SETBP1.0;P1.0位置高MOVTMOD,#10H;T1方式1定時MOVTH1,#0ECH;給定時器T1送5ms初值MOVTL1,#78HSETBET1;允許T1中斷
SETBEA;開中斷SETBTR1;啟動T1工作SJMP$;等待中斷T1PRG:CJNER0,#0,LP1SETBP1.0;R=0將P1.0置高MOVTH1,#0ECH;T1送定時5ms初值MOVTL1,#78HMOVR0,#1;下一次中斷定時12msAJMPLP2LP1:CLRP1.0;R=1將P1.0置為低電平MOVTH1,#0D1H ;T1送定時12ms初值MOVTL1,#20HMOVR0,#0;下一次中斷定時5msLP2:RETIEND修改定時值中斷開始返回主開始5ms定時保存定時值等待送高電平,定時5msNY送高電平,定時5ms28第28頁,課件共40頁,創(chuàng)作于2023年2月C51中斷源程序#include<at89x52.h>biti=0;//位變量i=0定時5msi=1定時12msvoidmain(void){TMOD=0x10;//T1方式1定時
TH1=0xec;//給定時器T1送5ms初值
TL1=0x78;P1_0=1;ET1=1;//允許T1中斷
EA=1;//開中斷
TR1=1;//啟動T1工作while(1);//等待定時中斷}voidT1PRG(void)interrupt3{i=~i;//位變量取反if(i){P1_0=0;//產(chǎn)生12ms低電平TH1=0xd1;//i=1送定時12ms的初值
TL1=0x20;}else{P1_0=1;//產(chǎn)生5ms高電平TH1=0xec;//i=0送定時5ms的初值
TL1=0x78;}}29第29頁,課件共40頁,創(chuàng)作于2023年2月二.測量頻率(速率)例,外部信號接到T1(P3.5)管腳,測量其速率,結(jié)果保存在30H和31H單元(低高字節(jié))。已知:單片機系統(tǒng)時鐘為6MHz,被測信號速率在500-65536/分鐘范圍內(nèi)。分析:T0用于定時,產(chǎn)生120ms,測量T1的計數(shù)結(jié)果,擴大500倍得到每分鐘的轉(zhuǎn)速。循環(huán)結(jié)構(gòu)。初值:N120=120ms/2us=60000(教材P166的-6000錯誤)30第30頁,課件共40頁,創(chuàng)作于2023年2月源程序ORG0000HMOVTMOD,#51H;T0模式1定時,T1模式1計數(shù)start:MOVTL0,#low(-60000);送定時120ms的初值MOVTH0,#high(-60000)MOVTH1,#0;T1的計數(shù)器清0MOVTL1,#0SETBTR0 ;啟動T0定時
SETBTR1 ;啟動T1計數(shù)JNBTF0,$ ;等待T0120ms的定時到CLRTF0;清除TF0標志位CLRTR0;停止T0定時CLRTR1;停止T1計數(shù)
MOV30H,TL1;將低8位放入30H中MOV31H,TH1;將高8位放入31H中AJMPstartEND開始設置定時和計數(shù)方式時間到清標志,停止計數(shù)YNT1計數(shù)清0T0定時120ms啟動定時,計數(shù)保存計數(shù)結(jié)果31第31頁,課件共40頁,創(chuàng)作于2023年2月C51源程序#include<at89x52.h>voidinit(void){TMOD=0x51;//T0方式1定時,T1模式1計數(shù)TL0=-60000;TH0=(-60000)>>8;TL1=0;TH1=0;TR0=1;TR1=1;}
voidmain(void){unsignedcharx,y;init();//調(diào)用初始化子函數(shù)while(1){while(TF0==0);//等待T0120ms的定時到
TF0=0;//清除TF0標志位TR0=0;//停止T0定時TR1=0;//停止T1計數(shù)
x=TH1;//將高8位放入x中y=TL1;//將低8位放入y中TL0=-60000;TH0=(-60000)>>8;TL1=0;//T1的計數(shù)器清0TH1=0;TR0=1;//啟動T0工作
TR1=1;//啟動T1工作
}}32第32頁,課件共40頁,創(chuàng)作于2023年2月三.測量正脈沖寬度例,脈沖信號接在單片機的INT0(P3.2)引腳,測其正脈沖寬度,結(jié)果以機器周期數(shù)的形式存放在單片機RAM中的30H(低8位)和31H(高8位)兩個單元中。單片機系統(tǒng)時鐘為12MHz。分析:被測信號作為T0的門控信號,T0設置為定時器,初值為0。在INT0為低時取結(jié)果并準備下次測量。取數(shù)準備計數(shù)取數(shù)準備33第33頁,課件共40頁,創(chuàng)作于2023年2月源程序ORG0000HMOVTMOD,#09h;T0方式1定時GATE=1MOVTH0,#0;給定時器T0送初值MOVTL0,#0JBP3.2,$;將檢測到的第一個高電平放棄Loop:SETBTR0 ;啟動T0工作JNBP3.2,$;等待下一個高電平來
JBP3.2,$;等待高電平結(jié)束
CLRTR0;停止T0計數(shù)
MOV30H,TL0;將計數(shù)值的低8位放入30H中MOV31H,TH0;計數(shù)值的高8位放入31H中MOVTH0,#0;給定時器T0送初值MOVTL0,#0AJMPLOOPEND開始設置門控定時方式定時清0等待低電平定時清0啟動定時保存定時結(jié)果等待高,低電平停止定時34第34頁,課件共40頁,創(chuàng)作于2023年2月C51源程序#include<at89x52.h>voidmain(void){TMOD=0x09;//T0模式1內(nèi)部時鐘GATE=1TH0=0; //給定時器T0送初值TL0=0;while(P3_2==1);//將檢測到的第一個高電平放棄while(1){TR0=1; //啟動T0工作
while(P3_2==0);//等待下一個高電平來
while(P3_2==1);//等待高電平結(jié)束
TR0=0;//高電平結(jié)束,立即停止T0計數(shù)
y=TL0;//將計數(shù)值的低8位放入y中x=TH0;//將計數(shù)值的高8位放入x中TH0=0;//給定時器T0送初值TL0=0;}}35第35頁,課件共40頁,創(chuàng)作于2023年2月四.長時間精確定時方法例,在P3.1管腳輸出100ms周期的脈沖信號。單片機系統(tǒng)時鐘為12MHz。分析:選擇方式2,機器周期為1us,一個定時器的最長定時時間為256us??捎糜布〞r250us結(jié)合軟件計數(shù)200次的方法擴展設定時間為50ms。36第36頁,課件共40頁,創(chuàng)作于2023年2月源程序ORG0000HMOVTMOD,#02h;T0方式2定時MOVTH0,#-250;給定時器T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關于大學寒假實習報告匯編10篇
- 關于感恩父母演講稿范文合集五篇
- 去年的樹讀后感心得體會
- 總經(jīng)理述職報告8篇
- 除夕話題作文15篇
- 單位老員工辭職報告(合集7篇)
- 大學生認識實習報告匯編6篇
- 社保離職證明(集錦15篇)
- 學生作業(yè)檢查記錄表
- 銷售業(yè)務合作協(xié)議書
- JGT292-2010 潔凈工作臺標準
- 圣誕節(jié)元旦搞笑小品就劇本:浪子回家
- 鞋類產(chǎn)品線上銷售平臺的運營與推廣
- 2023年海南省天一大聯(lián)考高一化學第一學期期末達標測試試題含解析
- 銀行工會個人總結(jié)報告
- 審計學原理-審計基礎與案例智慧樹知到課后章節(jié)答案2023年下哈爾濱商業(yè)大學
- 醫(yī)院PACS系統(tǒng)解決方案
- 甘肅省平?jīng)鍪嗅轻紖^(qū)2024屆九年級英語第一學期期末統(tǒng)考模擬試題含解析
- 測繪法規(guī)與工程管理(第2版)完整全套教學課件
- 留言板實驗報告
- DB51-T 3103-2023 四川省天然林修復類型劃分與評價
評論
0/150
提交評論