版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
會計(jì)學(xué)1AVR單片機(jī)定時(shí)計(jì)數(shù)器的結(jié)構(gòu)與應(yīng)用探素第8章定時(shí)/計(jì)數(shù)器實(shí)例解析本章重點(diǎn):1.了解AVR定時(shí)/計(jì)數(shù)器的特點(diǎn)2.學(xué)會對定時(shí)/計(jì)數(shù)器的相關(guān)寄存器進(jìn)行配置3.掌握AVR定時(shí)/計(jì)數(shù)器的工作模式本章難點(diǎn):掌握定時(shí)/計(jì)數(shù)器的PWM模式,T/C1的輸入捕捉功能第1頁/共55頁定時(shí)計(jì)數(shù)器的應(yīng)用
定時(shí)計(jì)數(shù)器(Timer/Counter)常用于計(jì)數(shù)、延時(shí)、測量周期、頻率、脈寬、波特率發(fā)生器、生成占空比可調(diào)的PWM波等。
回顧:51單片機(jī)定時(shí)器/計(jì)數(shù)器的功能?第2頁/共55頁使用定時(shí)計(jì)數(shù)器時(shí),必須注意以下的基本要素素:1.定時(shí)計(jì)數(shù)器的長度。定時(shí)計(jì)數(shù)器的長度是指計(jì)數(shù)單元的位長度,一般為8位(255)或16位(65535)。2.脈沖信號源。脈沖信號源是指輸入到定時(shí)計(jì)數(shù)器的計(jì)數(shù)脈沖信號。通常用于定時(shí)計(jì)數(shù)器計(jì)數(shù)的脈沖信號可以由外部輸入引腳提供(計(jì)數(shù)方式),也可以由單片機(jī)內(nèi)部提供(定時(shí)方式)。
第3頁/共55頁
ATmega16一共配置了2個(gè)8位和1個(gè)16位,共3個(gè)定時(shí)計(jì)數(shù)器,它們是8位的定時(shí)計(jì)數(shù)器T/C0、T/C2和16位的定時(shí)計(jì)數(shù)器T/C1。第4頁/共55頁跟定時(shí)器相關(guān)的引腳:1.計(jì)數(shù)脈沖輸入端T0,T12.比較匹配信號輸出端
OC0,OC1B,OC1A,OC23,捕捉信號輸入端ICP1第5頁/共55頁主要工作模式(以T0為例)1.普通模式時(shí)鐘源來自芯片內(nèi)部:定時(shí)方式。當(dāng)計(jì)數(shù)器從設(shè)定的初值開始計(jì)到255,產(chǎn)生計(jì)數(shù)溢出中斷(TOV0=1),不能自動重裝。時(shí)鐘源來自外部引腳T0(PB0):計(jì)數(shù)方式,當(dāng)計(jì)數(shù)器從設(shè)定的初值開始計(jì)到255,產(chǎn)生計(jì)數(shù)溢出中斷(TOV0=1)。第6頁/共55頁2.CTC模式(自動重載)當(dāng)計(jì)數(shù)器TCNT0的數(shù)值累加到等于OCR0中的數(shù)值時(shí)(匹配),OC0引腳置位或復(fù)位或取反,并產(chǎn)生比較匹配中斷(OCF0=1)該模式常用于得到波形輸出(比如方波)T/C0的主要工作模式第7頁/共55頁3.快速PWM模式當(dāng)計(jì)數(shù)器TCNT0的數(shù)值累加到等于OCR0中的數(shù)值時(shí),OC0引腳置位(或復(fù)位),計(jì)數(shù)到255時(shí),OC0復(fù)位(或置位),并產(chǎn)生比較溢出中斷(TOV0=1)。該模式常用于產(chǎn)生高頻的PWM波形,通過0CR0的值來控制占空比。T/C0的主要工作模式第8頁/共55頁4.相位修正PWM模式(雙向計(jì)數(shù)器)當(dāng)計(jì)數(shù)器升序計(jì)數(shù)時(shí),若與OCR0匹配,OC0引腳置1;而在計(jì)數(shù)器降序計(jì)數(shù)時(shí),若與OCR0匹配,OC0引腳清0。或者正好相反。T/C0的主要工作模式第9頁/共55頁4.相位修正PWM模式(雙向計(jì)數(shù)器)當(dāng)定時(shí)計(jì)數(shù)器計(jì)數(shù)到0x00時(shí),計(jì)數(shù)溢出標(biāo)志TOV0置位,即TOV0=1,此時(shí)可申請溢出中斷。該模式常用于產(chǎn)生高精度相位修正PWM波形,通過0CR0的值來控制占空比。T/C0的主要工作模式第10頁/共55頁兩個(gè)8位的定時(shí)計(jì)數(shù)器:T/C0、T/C2主要特點(diǎn)是:1.單通道計(jì)數(shù)器。2.比較匹配時(shí)清零計(jì)數(shù)器(自動重裝特性,AutoReload)。3.可產(chǎn)生無輸出抖動(glitch-free)的,相位可調(diào)的脈寬調(diào)制(PWM)信號輸出。4.頻率發(fā)生器。5.外部事件計(jì)數(shù)器(T/C2無)。6.帶10位的時(shí)鐘預(yù)分頻器。7.溢出和比較匹配中斷源(TOV0、OCF0和TOV2、OCF2)。允許使用外部引腳的32kHz手表晶振作為獨(dú)立的計(jì)數(shù)時(shí)鐘源(僅T/C2)想一想:AVR單片機(jī)與51單片機(jī)定時(shí)器有何異同?擴(kuò)充了哪些功能?第11頁/共55頁1.T/C0的組成結(jié)構(gòu)第12頁/共55頁T/C0相關(guān)寄存器1.T/C0的控制寄存器TCCR0(ControlRegister)2.計(jì)數(shù)寄存器TCNT0(Counter)3.輸出比較寄存器OCR0(OutputCompareRegister)4.中斷標(biāo)志寄存器TIFR(Interruptflagregister)5.定時(shí)器中斷屏蔽寄存器TIMSK(Timerinterruptmaskregister)
第13頁/共55頁T/C0控制寄存器(ControlRegister)
——TCCR0位2~0:T/C0的時(shí)鐘選擇位,用于定義T/C0的時(shí)鐘源(CLOCKSELECT)。FOC0WGM01COM01COM00WGM00CS02CS01CS00CS02CS01CS00T/C0時(shí)鐘選擇000無時(shí)鐘源,T/C0停止001clkI/O(不經(jīng)過分頻器)010clkI/O/8(來自分頻器)011clkI/O/64(來自分頻器)100clkI/O/256(來自分頻器)101clkI/O/1024(來自分頻器)110外部T0引腳,下降沿驅(qū)動(用于計(jì)數(shù))111外部T0引腳,上升沿驅(qū)動(用于計(jì)數(shù))第14頁/共55頁位3,6——WGM00,WGM01計(jì)數(shù)器計(jì)數(shù)模式,用于控制T/C0的計(jì)數(shù)和工作方式。FOC0WGM01COM01COM00WGM00CS02CS01CS00模式WGM01WGM00T/C0工作模式計(jì)數(shù)上限值OCR0更新TOV0置位000一般模式0xFF立即0xFF101PWM,相位可調(diào)0xFF0xFF0x00210CTC模式OCR0立即0xFF311快速PWM0xFF0xFF0xFFT/C0控制寄存器(ControlRegister)
——TCCR0第15頁/共55頁位5,4——COM01,COM00比較匹配輸出模式,決定T/C0比較匹配發(fā)生時(shí),輸出引腳OC0(PB3)的行為方式。這是I/O的第二功能,相應(yīng)的方向控制位要置“1”,以便將其配置為輸出。FOC0WGM01COM01COM00WGM00CS02CS01CS00COM01COM00T/C0比較輸出模式(CTC模式)00PB3為通用I/O引腳01比較匹配發(fā)生時(shí)OC0取反10比較匹配發(fā)生時(shí)清零OC011比較匹配發(fā)生時(shí)置位OC0T/C0控制寄存器(ControlRegister)
——TCCR0第16頁/共55頁位7——FOC0強(qiáng)制輸出比較,該位只在WGM位被置為CTC模式下有效,對其寫1后,波形發(fā)生器立即進(jìn)行比較操作。FOC0WGM01COM01COM00WGM00CS02CS01CS00T/C0控制寄存器(ControlRegister)
——TCCR0第17頁/共55頁T/C0計(jì)數(shù)寄存器(Counter)
——TCNT076543210
LSB
MSB
只要有效脈沖輸入,TCNT0就會在寫入值(初值)的基礎(chǔ)上開始計(jì)數(shù)。一旦TCNT達(dá)到0xFF,下一個(gè)計(jì)數(shù)脈沖到來時(shí)便回到0x00,并繼續(xù)向上開始計(jì)數(shù)。在TCNT0回“0”的同時(shí),溢出標(biāo)志TOV0置“1”。TOV0標(biāo)志置“1”可以用于申請中斷,也可以作為計(jì)數(shù)器的第“9”位使用。第18頁/共55頁T/C0中斷屏蔽寄存器——TIMSK(Timerinterruptmaskregister)
位0——TOIE0(Timeroverflowinterruptenable)T/C0溢出中斷允許標(biāo)志。當(dāng)TOIE0設(shè)為1,且SREG中的I位被設(shè)為1,將使能T/C0溢出中斷OCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1OCIE0TOIE0位1——OCIE0(OutputCompareInterruptEnable)T/C0輸出比較匹配中斷允許標(biāo)志。當(dāng)OCIE0設(shè)為1,且SREG中的I位被設(shè)為1,將使能T/C0輸出比較匹配。第19頁/共55頁T/C0中斷標(biāo)志寄存器(Timerinterruptflagregister)—TIFR位0——TOV0(Overflow)T/C0溢出中斷標(biāo)志。當(dāng)T/C0產(chǎn)生溢出時(shí),該位自動置1,向CPU提出溢出中斷請求,該中斷得以處理后,該位硬件自動清0,用戶也可對其寫1清0OCF2TOV2ICF1OCF1AOCF1BTOV1OCF0TOV0位1——OCF0T/C0輸出比較匹配中斷標(biāo)志。當(dāng)T/C0比較匹配成功,OCF0置1,向CPU提出比較匹配中斷請求,該中斷得以處理后,該位硬件自動清0,用戶也可對其寫1清0第20頁/共55頁實(shí)例解析1—T/C0計(jì)數(shù)實(shí)驗(yàn)
使用T/C0進(jìn)行計(jì)數(shù),T0(PB0)為外部計(jì)數(shù)輸入端,每計(jì)一次,PA口所接的八個(gè)LED燈狀態(tài)改變一次。
設(shè)計(jì)思路:設(shè)置TCNT1的初值為0XFF,當(dāng)有外部計(jì)數(shù)信號輸入時(shí),計(jì)數(shù)值加1,產(chǎn)生溢出中斷,進(jìn)入T/C0溢出中斷函數(shù),在溢出中斷函數(shù)中,使PA口取反,LED燈狀態(tài)改變一次。
注意:在T/C0溢出中斷函數(shù)中,一定要重裝初值。第21頁/共55頁實(shí)例解析1—T/C0計(jì)數(shù)實(shí)驗(yàn)#include<iom16v.h>/********端口初始化函數(shù)********/voidport_init(){PORTA=0xFF;
DDRA=0xFF;//PA口配置為
,PA口初始值為“”
DDRB&=(0<<PB0);
PORTB|=(1<<PB0); //PB0配置為
,PB0
上拉電阻}/********定時(shí)器0初始化函數(shù)********/voidtimer0_init(){SREG=0x80;//使能全局中斷
TIMSK|=(1<<TOIE0);//使能T0溢出中斷
TCCR0|=;//T/C0工作于普通模式,上升沿觸發(fā)TCNT0=
; }第22頁/共55頁/********定時(shí)器0中斷服務(wù)函數(shù)********/#pragmainterrupt_handlertimer0_ovf:10voidtimer0_ovf(void){
TCNT0=;PORTA^=(1<<PA0)|(1<<PA1)|(1<<PA2)|(1<<PA3)|(1<<PA4)|(1<<PA5)|(1<<PA6)|(1<<PA7);//PA輸出取反,發(fā)光二極管D00~D07實(shí)現(xiàn)亮滅變化}/********以下是主函數(shù)********/voidmain(){port_init();timer0_init();while(1); //等待}第23頁/共55頁實(shí)例解析2—T/C0定時(shí)實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C0進(jìn)行1S的定時(shí),每到1S,PA口外接的LED燈狀態(tài)改變一次。設(shè)計(jì)思路:T/C0作為定時(shí)器,每到25ms中斷一次,當(dāng)中斷次數(shù)到達(dá)40次時(shí),控制PA口LED燈取反。本設(shè)計(jì)采用8MHZ時(shí)鐘,1024分頻,所以計(jì)數(shù)脈沖頻率是8MHZ/1024=7812.5HZ,定時(shí)時(shí)間T=25ms
定時(shí)器初值=2n-(時(shí)鐘頻率/1024)*T
這里可算出定時(shí)器初值=28-(8000000/1024)*0.025=61第24頁/共55頁#include<iom16v.h>charCounter=0;//1S計(jì)數(shù)變量清零/********端口初始化********/voidport_init(){PORTA=0xFF;//PA口配置為輸出
DDRA=0xFF;//PA口初始值為"1"}/********定時(shí)器0初始化********/voidtimer0_init()//因?yàn)槎〞r(shí)時(shí)間太短,看不到燈的變化{SREG=0x80;//使能全局中斷
TIMSK|=(1<<TOIE0);//使能T0溢出中斷
TCCR0|=;
//T0工作于普通模式,1024分頻
TCNT0=;}第25頁/共55頁/********主函數(shù)********/voidmain(){port_init();timer0_init();while(1);}/********定時(shí)器0中斷服務(wù)函數(shù)********/#pragmainterrupt_handlertimer0_ovf:10voidtimer0_ovf(void){TCNT0=61;//重裝計(jì)數(shù)初值Counter++
if(
)//定時(shí)中斷溢出40次為1S { PORTA=~PORTA; Counter=0;//1S計(jì)時(shí)變量清零
}}第26頁/共55頁實(shí)例解析3—T/C0的CTC模式實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C0進(jìn)行比較匹配時(shí)清零模式(CTC),在單片機(jī)的比較匹配輸出口PB3(OC0)上輸出一個(gè)頻率為20HZ占空比為50%的方波脈沖。同時(shí)控制PD7口的蜂鳴器每隔1S鳴叫1次。第27頁/共55頁設(shè)計(jì)思路:要求輸出一個(gè)20HZ占空比為50%的方波,可讓OC0每隔0.025s取反一次,當(dāng)前晶振為8MHZ,1024分頻后計(jì)數(shù)脈沖為7812.5HZ,即計(jì)數(shù)時(shí)鐘為0.128ms,當(dāng)計(jì)數(shù)195次,滿足T=0.025s??稍O(shè)OCR0=195,當(dāng)比較匹配后,0C0取反一次,此時(shí)OC0可輸出20HZ占空比為50%的方波。每比較匹配一次,計(jì)數(shù)變量Counter加1,當(dāng)Counter為40時(shí),定時(shí)1s到,PD7取反,蜂鳴器每隔1S鳴叫1次。實(shí)例解析3—T/C0的CTC模式實(shí)驗(yàn)第28頁/共55頁實(shí)例解析3—T/C0的CTC模式實(shí)驗(yàn)#include<iom16v.h>charCounter=0;//計(jì)數(shù)變量清零/********端口初始化********/voidport_init(){DDRB|=(1<<PB3); //PB3(OC0)配置為輸出(為1時(shí)用或符號|)
PORTB&=(0<<PB3); //PB3輸出0(為0時(shí)與符號&)DDRD|=(1<<PD7); //PD7配置為輸出(為1時(shí)用或符號|)
PORTD&=(0<<PD7); //PD7輸出0(為0時(shí)與符號&)}/********定時(shí)器0初始化********/voidtimer0_init(){SREG=0x80; //使能全局中斷
TIMSK=(1<<OCIE0); //T/C0比較匹配中斷允許
TCCR0=(1<<COM00)|(0<<COM01)|(0<<WGM00)|(1<<WGM01)|(1<<CS02)|(0<<CS01)|(1<<CS00);//T/C0工作于CTC模式,1024分頻,比較匹配時(shí),觸發(fā)OC0取反
TCNT0=0;//定時(shí)初值設(shè)置,
OCR0=195;//比較匹配寄存器初值}第29頁/共55頁/********主函數(shù)********/voidmain(){port_init();timer0_init();while(1);}/********定時(shí)器0比較匹配中斷服務(wù)函數(shù)********/#pragmainterrupt_handlertimer0_COMP:20voidtimer0_COMP(void){TCNT0=0;//定時(shí)初值設(shè)置,
OCR0=195;//比較匹配寄存器初值
if(++Counter>=40)//定時(shí)時(shí)間到1S嗎?定時(shí)中斷溢出40次為1S { PORTD^=(1<<PD7);//驅(qū)動蜂鳴器發(fā)聲
Counter=0;//1S計(jì)時(shí)變量清零
}}
引入仿真第30頁/共55頁實(shí)例解析4—T/C0快速PWM實(shí)驗(yàn)實(shí)現(xiàn)功能:利用PWM模式實(shí)現(xiàn)LED燈的漸明漸暗。具體方法是在PB3(0C0)上外接一只LED燈,開機(jī)后LED燈最亮,然后逐漸變暗,再逐漸變亮。
第31頁/共55頁實(shí)例解析4—T/C0快速PWM實(shí)驗(yàn)利用T/C0的快速PWM模式,具體思路是:T/C0在計(jì)數(shù)過程中,內(nèi)部硬件電路會將計(jì)數(shù)值TCNT0與比較寄存器0CR0中的值進(jìn)行比較,當(dāng)兩個(gè)值匹配相等時(shí),會使得OC0引腳置0(或置1),當(dāng)計(jì)數(shù)值達(dá)到255時(shí),OC0引腳置1(或置0),這樣通過改變OCR0的值,便可以在OC0上輸出不同占空比的PWM波,從而使LED顯示出漸明漸暗的效果第32頁/共55頁實(shí)例解析4—T/C0快速PWM實(shí)驗(yàn)#include<iom16v.h> #defineucharunsignedchar #defineuintunsignedintunsignedintcount;/*********以下是延時(shí)函數(shù)*********/voidDelay_ms(uintxms){ inti,j; for(i=0;i<xms;i++) {for(j=0;j<1140;j++);}}第33頁/共55頁/********以下是端口初始化函數(shù)********/voidport_init(){DDRB|=(1<<PB3); //PB3配置為輸出(為1時(shí)用或符號|)
PORTB&=(0<<PB3); //PB3輸出0(為0時(shí)與符號&)}/********定時(shí)器0初始化********/voidtimer0_init(){ TCCR0=(1<<WGM01)|(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS00)|(0<<CS01))|(0<<CS02);//T/C0工作于快速PWM模式,不分頻
//比較匹配時(shí),OC0置位,記數(shù)到0XFF時(shí),清零OC0 OCR0=0; //比較匹配寄存器初值,
SREG=0x80;//使能全局中斷}第34頁/共55頁/*********以下是主函數(shù)*********/voidmain(void){ port_init(); timer0_init(); while(1) {for(count=0;count<256;count++)//OCR=0時(shí),LED最亮,然后逐漸變暗
{ OCR0=count;//比較匹配寄存器賦值
Delay_ms(20);//延時(shí)一段時(shí)間,以觀察效果
} Delay_ms(3000);//LED最暗時(shí),延時(shí)一段時(shí)間
for(count=255;count>0;count--)//OCR=255時(shí),LED最暗,然后逐漸變亮
{ OCR0=count; Delay_ms(20); } Delay_ms(3000);//LED最亮?xí)r,延時(shí)一段時(shí)間
} }引入仿真第35頁/共55頁作業(yè):設(shè)計(jì)一個(gè)125KHZ方波發(fā)生器。第36頁/共55頁16位定時(shí)/計(jì)數(shù)器T/C1
如同8位的定時(shí)/計(jì)數(shù)器,ATmega16的16位定時(shí)/計(jì)數(shù)器T/C1用戶也是可以控制的:TCCR1A——T/C1控制寄存器A(ControlRegister)TCCR1B——T/C1控制寄存器BTCNT1——T/C1計(jì)數(shù)寄存器(16位)OCR1A——T/C1輸出比較寄存器A
(OutputCompareRegister)OCR1B——T/C1輸出比較寄存器B(16位)ICR1——T/C1輸入捕獲寄存器Inputcaptureregister
(16位)第37頁/共55頁T/C1的特點(diǎn)真正的16位設(shè)計(jì),允許16位的PWM2個(gè)獨(dú)立的輸出比較匹配單元(OC1A,OC1B)雙緩沖輸出比較寄存器(OCR1A,OCR1B)一個(gè)輸入捕捉單元(ICP1)輸入捕捉噪聲抑制(對輸入信號進(jìn)行濾波)比較匹配時(shí)清零計(jì)數(shù)器(CTC模式)可產(chǎn)生無輸出抖動的,相位可調(diào)的PWM信號輸出周期可調(diào)的PWM波形輸出(計(jì)數(shù)上限可設(shè))頻率發(fā)生器外部事件計(jì)數(shù)器(T1)帶10位的時(shí)鐘預(yù)分頻器4個(gè)獨(dú)立的中斷源(TOV1,OCF1A,OCF1B,ICF1)第38頁/共55頁跟定時(shí)器相關(guān)的引腳:1.計(jì)數(shù)脈沖輸入端T0,T12.比較匹配信號輸出端
OC0,OC1B,OC1A,OC23,捕捉信號輸入端ICP1第39頁/共55頁T/C1的功能16位計(jì)數(shù)器,讀操作:先讀低,后讀高;寫操作:先寫高,后寫低。更加完善的PWM功能(1)產(chǎn)生頻率可調(diào),相位可調(diào),頻率相位均可調(diào)的PWM波(2)可同時(shí)產(chǎn)生2路,相同頻率、不同占空比的PWM波(3)具有輸入捕捉功能。第40頁/共55頁T/C1控制寄存器A——TCCR1A76543210
COM1B1
COM1B0
FOC1A
FOC1B
WGM11
WGM10
COM1A1
COM1A0
位7~6:T/C1比較匹配A輸出模式。這兩位決定了T/C1比較匹配發(fā)生時(shí)輸出引腳OC1A的輸出行為。位5~4:T/C1比較匹配B輸出模式。這兩位決定了T/C1比較匹配發(fā)生時(shí)輸出引腳OC1B的輸出行為。位3:強(qiáng)制輸出比較A。位2:強(qiáng)制輸出比較B。位1~0:波形發(fā)生模式。該兩位與WGM13、WGM12(位于TCCR1B)相組合,用于控制T/C1的計(jì)數(shù)和工作方式。第41頁/共55頁模式WGM13WGM12WGM11WGM10T/C1工作模式計(jì)數(shù)上限值OCR1A/OCR1B更新TOV1置位00000一般模式0xFFFF立即0xFFFF100018位PWM,相位可調(diào)0x00FFTOP0x0000200109位PWM,相位可調(diào)0x01FFTOP0x00003001110位PWM,相位可調(diào)0x03FFTOP0x000040100CTCOCR1A立即0xFFFF501018位快速PWM0x00FFTOPTOP601109位快速PWM0x01FFTOPTOP7011110位快速PWM0x03FFTOPTOP81000PWM,相位、頻率可調(diào)ICR10x00000x000091001PWM,相位、頻率可調(diào)OCR1A0x00000x0000101010PWM,相位可調(diào)ICR1TOP0x0000111011PWM,相位可調(diào)OCR1ATOP0x0000121100CTCICR1立即0xFFFF131101保留——————141110快速PWMICR1TOPTOP151111快速PWMOCR1ATOPTOPT/C1控制寄存器B——TCCR1B76543210
——
WGM13
WGM12
CS12
CS11
CS10
ICNC1
ICES1
位7:輸入捕獲噪聲抑制。當(dāng)該位置“1”時(shí),捕獲信號要進(jìn)行連續(xù)4次的采樣,只有4次采樣值都有效時(shí),輸入捕獲標(biāo)志才置位。位6:輸入捕獲觸發(fā)方式選擇。當(dāng)該位置“0”時(shí),捕獲信號下降沿有效;當(dāng)該位置“1”時(shí),捕獲信號上升沿有效。位4~3:波形發(fā)生模式。該兩位與WGM11、WGM10(位于TCCR1A)相組合,用于控制T/C1的計(jì)數(shù)和工作方式。位2~0:T/C1時(shí)鐘源選擇。CS12CS11CS10T/C1時(shí)鐘選擇000無時(shí)鐘源,T/C1停止001clkI/O(不經(jīng)過分頻器)010clkI/O/8(來自分頻器)011clkI/O/64(來自分頻器)100clkI/O/256(來自分頻器)101clkI/O/1024(來自分頻器)110外部T1引腳,下降沿驅(qū)動111外部T1引腳,上升沿驅(qū)動位5:保留。第42頁/共55頁T/C1計(jì)數(shù)寄存器——TCNT1H和TCNT1L15141312111098
MSB
LSB
76543210TCNT1H和TCNT1L組成T/C1的16位計(jì)數(shù)寄存器TCNT1,它是向上計(jì)數(shù)的計(jì)數(shù)器(加法計(jì)數(shù)器)或上/下計(jì)數(shù)的計(jì)數(shù)器(在PWM模式下)。若T/C1被置初值,則T/C1將在預(yù)置初值的基礎(chǔ)上計(jì)數(shù)。第43頁/共55頁T/C1輸出比較寄存器A——OCR1AH和OCR1AL15141312111098
MSB
LSB
76543210T/C1輸出比較寄存器B——OCR1BH和OCR1BLOCR1AH和OCR1AL(OCR1BH和OCR1BL)組成16位輸出比較寄存器OCR1A(OCR1B)。該寄存器中的16位數(shù)據(jù)用于同TCNT1寄存器中的計(jì)數(shù)值進(jìn)行連續(xù)的匹配比較。一旦TCNT1的計(jì)數(shù)值與OCR1A(OCR1B)的數(shù)據(jù)匹配相等,則比較匹配發(fā)生。用軟件的寫操作將TCNT1與OCR1A、OCR1B設(shè)置為相等,不會引發(fā)比較匹配。比較匹配發(fā)生后,將置位相應(yīng)的中斷請求標(biāo)志OCF1A和OCF1B。第44頁/共55頁T/C1輸入捕獲寄存器——ICR1H和ICR1L15141312111098
MSB
LSB
76543210ICR1H和ICR1L組成16位的輸入捕獲寄存器ICR1。按照ICES1的設(shè)定,外部輸入捕獲引腳ICP發(fā)生上跳變或下跳變時(shí),計(jì)數(shù)器TCNT1中的值寫入寄存器ICR1中,同時(shí)輸入捕獲中斷標(biāo)志ICF1將置“1”。第45頁/共55頁實(shí)例解析7—T/C1定時(shí)實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C1的定時(shí)模式對LED燈進(jìn)行亮滅控制,即控制PA口的LED燈亮0.1S,滅0.9S設(shè)計(jì)思路:定時(shí)時(shí)間為0.1S,計(jì)數(shù)初值的計(jì)算方法定時(shí)器初值=216-(8M/64)*0.1=53036=0XCF2CTCNT1H=0XCFTCNT1L=0X2C第46頁/共55頁#include<iom16.h>#defineucharunsignedchar /********以下是端口初始化函數(shù)********/voidport_init(){DDRA=0xFF; //PA設(shè)置為輸出口
PORTA=0xFF; //PA輸出高電平}/********定時(shí)器1初始化********/voidtimer1_init(){TCNT1H=0xCF;//計(jì)數(shù)器置初值
TCNT1L=0x2C;TCCR1A|=0x00; //普通端口模式
TCCR1B|=(1<<CS11)|(1<<CS10); //64分頻
TIMSK&=(0<<TOIE1); //禁止T1溢出中斷,本例采用查詢方式,不采用中斷方式}第47頁/共55頁/********以下是主函數(shù)********/voidmain(void){ucharcount,T1_OVR; port_init(); timer1_init(); while(1) { T1_OVR=TIFR&0x04; //讀取T/C1溢出標(biāo)志位
if(T1_OVR!=0x04){T1_OVR=TIFR&0x04;} //如果T/C1溢出標(biāo)志不為1,說明沒有溢出,則繼續(xù)讀取
else //否則說明有溢出
{ TIFR=0x04; //寫1清除標(biāo)志位第48頁/共55頁
TCNT1H=0xCF; //置計(jì)數(shù)初值
TCNT1L=0x2C; count++; //計(jì)數(shù)變量加1 if(count==9)PORTA=0X00; //控制PA口LED燈點(diǎn)亮0.1s if(count>=10){count=0;PORTA=0XFF;} //控制PA口LED燈熄滅0.9s }} } 第49頁/共55頁實(shí)例解析8—T/C1輸入捕捉實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C1的輸入捕捉功能檢測按鍵的按下,并判斷兩次按下的時(shí)間間隔,如果時(shí)間間隔超過3S,則PA口LED燈狀態(tài)反轉(zhuǎn),否則,如果沒有按鍵,則蜂鳴器每8.39S響一聲,表示T/C1計(jì)數(shù)溢出。設(shè)計(jì)思路:T/C1設(shè)置為普通模式,定時(shí)器啟動后開始計(jì)數(shù),TCNT1從0開始計(jì)到溢出,如果沒有捕捉輸入,每隔8.39S蜂鳴器響一聲(晶振為8MHZ,1024分頻,則計(jì)數(shù)周期為0.128ms)。
若有捕捉輸入時(shí),即ICP1(PD6)有輸入捕捉出發(fā)信號產(chǎn)生,則計(jì)數(shù)器TCNT1清0,當(dāng)再次有捕捉輸入時(shí),若捕捉時(shí)間間隔為3S,則計(jì)數(shù)的個(gè)數(shù)為(8MHZ/1024)*3
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:教育元宇宙的應(yīng)用倫理研究
- 2025年嚴(yán)于修身學(xué)習(xí)心得體會(5篇)
- 疫情防護(hù)2025年度企業(yè)員工培訓(xùn)與心理咨詢合同3篇
- 二零二五年度城市綠化養(yǎng)護(hù)勞務(wù)分包合同書4篇
- 二零二五年度城市住宅出售協(xié)議書(含裝修及家具配置)4篇
- 二零二五年鍋爐維修工程承包與環(huán)保驗(yàn)收協(xié)議3篇
- 2024手繪藝術(shù)作品拍賣合同協(xié)議3篇
- 安徽省二零二五年度住房租賃市場租賃糾紛處理合同
- 2025年護(hù)林員勞動合同書(含森林資源保護(hù)培訓(xùn))3篇
- 2025版土地經(jīng)營權(quán)租賃與農(nóng)業(yè)產(chǎn)業(yè)扶貧合同3篇
- 消防產(chǎn)品目錄(2025年修訂本)
- 地方性分異規(guī)律下的植被演替課件高三地理二輪專題復(fù)習(xí)
- 光伏項(xiàng)目風(fēng)險(xiǎn)控制與安全方案
- 9.2提高防護(hù)能力教學(xué)設(shè)計(jì) 2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
- 催收培訓(xùn)制度
- ISO 22003-1:2022《食品安全-第 1 部分:食品安全管理體系 審核與認(rèn)證機(jī)構(gòu)要求》中文版(機(jī)翻)
- 2024年廣東省高考地理真題(解析版)
- 2024高考物理廣東卷押題模擬含解析
- 人教版五年級上冊數(shù)學(xué)簡便計(jì)算大全600題及答案
- GB/T 15945-1995電能質(zhì)量電力系統(tǒng)頻率允許偏差
- GB 32311-2015水電解制氫系統(tǒng)能效限定值及能效等級
評論
0/150
提交評論