AVR單片機(jī)定時(shí)計(jì)數(shù)器的結(jié)構(gòu)與應(yīng)用的課件_第1頁
AVR單片機(jī)定時(shí)計(jì)數(shù)器的結(jié)構(gòu)與應(yīng)用的課件_第2頁
AVR單片機(jī)定時(shí)計(jì)數(shù)器的結(jié)構(gòu)與應(yīng)用的課件_第3頁
AVR單片機(jī)定時(shí)計(jì)數(shù)器的結(jié)構(gòu)與應(yīng)用的課件_第4頁
AVR單片機(jī)定時(shí)計(jì)數(shù)器的結(jié)構(gòu)與應(yīng)用的課件_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 引入先回顧學(xué)習(xí)51單片機(jī)時(shí),定時(shí)器的中斷如何產(chǎn)生的? 第8章 定時(shí)/計(jì)數(shù)器實(shí)例解析本章重點(diǎn):1.了解AVR定時(shí)/計(jì)數(shù)器的特點(diǎn)2.學(xué)會(huì)對(duì)定時(shí)/計(jì)數(shù)器的相關(guān)寄存器進(jìn)行配置3. 掌握AVR定時(shí)/計(jì)數(shù)器的工作模式本章難點(diǎn):掌握定時(shí)/計(jì)數(shù)器的PWM模式,T/C1的輸入捕捉功能定時(shí)計(jì)數(shù)器的應(yīng)用 定時(shí)計(jì)數(shù)器(Timer/Counter)常用于計(jì)數(shù)、延時(shí)、測(cè)量周期、頻率、脈寬、波特率發(fā)生器、生成占空比可調(diào)的PWM波等。 回顧:51單片機(jī)定時(shí)器/計(jì)數(shù)器的功能?使用定時(shí)計(jì)數(shù)器時(shí),必須注意以下的基本要素素:1.定時(shí)計(jì)數(shù)器的長(zhǎng)度。 定時(shí)計(jì)數(shù)器的長(zhǎng)度是指計(jì)數(shù)單元的位長(zhǎng)度,一般為8位(255)或16位(65535)。2

2、.脈沖信號(hào)源。 脈沖信號(hào)源是指輸入到定時(shí)計(jì)數(shù)器的計(jì)數(shù)脈沖信號(hào)。通常用于定時(shí)計(jì)數(shù)器計(jì)數(shù)的脈沖信號(hào)可以由外部輸入引腳提供(計(jì)數(shù)方式),也可以由單片機(jī)內(nèi)部提供(定時(shí)方式)。 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。跟定時(shí)器相關(guān)的引腳:1.計(jì)數(shù)脈沖輸入端 T0 ,T12.比較匹配信號(hào)輸出端 OC0 , OC1B , OC1A , OC2 3,捕捉信號(hào)輸入端 ICP1主要工作模式(以T0為例)1.普通模式時(shí)鐘源來自芯片內(nèi)部:定時(shí)方式。當(dāng)計(jì)數(shù)器從設(shè)定的初值開始計(jì)到255,產(chǎn)生計(jì)數(shù)溢出中斷(TOV0=1),不能自

3、動(dòng)重裝。時(shí)鐘源來自外部引腳T0(PB0):計(jì)數(shù)方式,當(dāng)計(jì)數(shù)器從設(shè)定的初值開始計(jì)到255,產(chǎn)生計(jì)數(shù)溢出中斷(TOV0=1)。2.CTC模式(自動(dòng)重載)當(dāng)計(jì)數(shù)器TCNT0的數(shù)值累加到等于OCR0中的數(shù)值時(shí)(匹配),OC0引腳置位或復(fù)位或取反,并產(chǎn)生比較匹配中斷(OCF0=1)該模式常用于得到波形輸出(比如方波)T/C0的主要工作模式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的主要工作模式4.相位修正

4、PWM模式(雙向計(jì)數(shù)器)當(dāng)計(jì)數(shù)器升序計(jì)數(shù)時(shí),若與OCR0匹配,OC0引腳置1;而在計(jì)數(shù)器降序計(jì)數(shù)時(shí),若與OCR0匹配,OC0引腳清0。或者正好相反。T/C0的主要工作模式4.相位修正PWM模式(雙向計(jì)數(shù)器)當(dāng)定時(shí)計(jì)數(shù)器計(jì)數(shù)到0 x00時(shí),計(jì)數(shù)溢出標(biāo)志TOV0置位,即TOV0=1,此時(shí)可申請(qǐng)溢出中斷。該模式常用于產(chǎn)生高精度相位修正PWM波形,通過0CR0的值來控制占空比。T/C0的主要工作模式兩個(gè)8位的定時(shí)計(jì)數(shù)器:T/C0、T/C2主要特點(diǎn)是:1. 單通道計(jì)數(shù)器。2. 比較匹配時(shí)清零計(jì)數(shù)器(自動(dòng)重裝特性,Auto Reload)。3. 可產(chǎn)生無輸出抖動(dòng)(glitch-free)的,相位可調(diào)的脈寬

5、調(diào)制(PWM)信號(hào)輸出。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ò)充了哪些功能?1. T/C0的組成結(jié)構(gòu)T/C0相關(guān)寄存器1. T/C0的控制寄存器TCCR0(Control Register)2. 計(jì)數(shù)寄存器TCNT0(Counter)3. 輸出比較寄存器OCR0(Output Compare Register)4. 中斷標(biāo)志寄存器TIFR(Interrupt

6、flag register)5. 定時(shí)器中斷屏蔽寄存器TIMSK(Timer interrupt mask register) T/C0控制寄存器(Control Register) TCCR0位20:T/C0的時(shí)鐘選擇位,用于定義T/C0的時(shí)鐘源(CLOCK SELECT)。FOC0WGM01COM01COM00WGM00CS02CS01CS00CS02CS01CS00T/C0時(shí)鐘選擇000無時(shí)鐘源,T/C0停止001clkI/O(不經(jīng)過分頻器)010clkI/O/8(來自分頻器)011clkI/O/64(來自分頻器)100clkI/O/256(來自分頻器)101clkI/O/1024(來自

7、分頻器)110外部T0引腳,下降沿驅(qū)動(dòng)(用于計(jì)數(shù))111外部T0引腳,上升沿驅(qū)動(dòng)(用于計(jì)數(shù))位3,6WGM00,WGM01 計(jì)數(shù)器計(jì)數(shù)模式,用于控制T/C0的計(jì)數(shù)和工作方式。FOC0WGM01COM01COM00WGM00CS02CS01CS00模式WGM01WGM00T/C0工作模式計(jì)數(shù)上限值OCR0更新TOV0置位000一般模式0 xFF立即0 xFF101PWM,相位可調(diào)0 xFF0 xFF0 x00210CTC模式OCR0立即0 xFF311快速PWM0 xFF0 xFF0 xFFT/C0控制寄存器(Control Register) TCCR0位5,4COM01,COM00 比較匹配

8、輸出模式,決定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控制寄存器(Control Register) TCCR0位7FOC0 強(qiáng)制輸出比較,該位只在WGM位被置為CTC模式下有效,對(duì)其寫1后,波形發(fā)生器立即進(jìn)行比較操作。FOC0WGM01COM01COM00WGM0

9、0CS02CS01CS00T/C0控制寄存器(Control Register) TCCR0T/C0計(jì)數(shù)寄存器(Counter) TCNT076543210 LSB MSB 只要有效脈沖輸入,TCNT0就會(huì)在寫入值(初值)的基礎(chǔ)上開始計(jì)數(shù)。一旦TCNT達(dá)到0 xFF,下一個(gè)計(jì)數(shù)脈沖到來時(shí)便回到0 x00,并繼續(xù)向上開始計(jì)數(shù)。在TCNT0回“0”的同時(shí),溢出標(biāo)志TOV0置“1”。 TOV0標(biāo)志置“1”可以用于申請(qǐng)中斷,也可以作為計(jì)數(shù)器的第“9”位使用。T/C0中斷屏蔽寄存器 TIMSK(Timer interrupt mask register) 位0TOIE0(Timer overflow i

10、nterrupt enable) T/C0溢出中斷允許標(biāo)志。當(dāng)TOIE0 設(shè)為1,且SREG中的I位被設(shè)為1,將使能T/C0溢出中斷OCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1OCIE0TOIE0位1OCIE0 (Output Compare Interrupt Enable) T/C0 輸出比較匹配中斷允許標(biāo)志。當(dāng)OCIE0 設(shè)為1,且SREG中的I位被設(shè)為1,將使能T/C0輸出比較匹配。T/C0中斷標(biāo)志寄存器(Timer interrupt flag register)TIFR位0TOV0(Overflow) T/C0溢出中斷標(biāo)志。當(dāng)T/C0 產(chǎn)生溢出時(shí),該位自動(dòng)置1

11、,向CPU提出溢出中斷請(qǐng)求,該中斷得以處理后,該位硬件自動(dòng)清0,用戶也可對(duì)其寫1清0OCF2TOV2ICF1OCF1AOCF1BTOV1OCF0TOV0位1OCF0 T/C0 輸出比較匹配中斷標(biāo)志。當(dāng)T/C0比較匹配成功,OCF0置1,向CPU提出比較匹配中斷請(qǐng)求,該中斷得以處理后,該位硬件自動(dòng)清0,用戶也可對(duì)其寫1清0實(shí)例解析1T/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ù)信號(hào)輸入時(shí),計(jì)數(shù)值加1,產(chǎn)生溢出中斷,進(jìn)入T/C0溢出中斷函數(shù),在溢出中斷函數(shù)中,使PA口取

12、反,LED燈狀態(tài)改變一次。 注意:在T/C0溢出中斷函數(shù)中,一定要重裝初值。實(shí)例解析1T/C0計(jì)數(shù)實(shí)驗(yàn)#include /*端口初始化函數(shù)*/void port_init() PORTA=0 xFF; DDRA=0 xFF; / PA口配置為 ,PA口初始值為“ ” DDRB&=(0PB0); PORTB|=(1PB0); / PB0配置為 ,PB0 上拉電阻/*定時(shí)器0初始化函數(shù)*/void timer0_init() SREG = 0 x80; /使能全局中斷 TIMSK|=(1TOIE0); /使能T0溢出中斷 TCCR0|= ; /T/C0工作于普通模式,上升沿觸發(fā) TCNT0 = ;

13、 /*定時(shí)器0中斷服務(wù)函數(shù)*/#pragma interrupt_handler timer0_ovf:10void timer0_ovf(void) TCNT0 = ; PORTA=(1PA0)|(1PA1)|(1PA2)|(1PA3)|(1PA4)|(1PA5)|(1PA6)|(1PA7); /PA輸出取反,發(fā)光二極管D00D07實(shí)現(xiàn)亮滅變化/*以下是主函數(shù)*/void main() port_init(); timer0_init(); while(1);/等待實(shí)例解析2T/C0定時(shí)實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C0進(jìn)行1S的定時(shí),每到1S,PA口外接的LED燈狀態(tài)改變一次。設(shè)計(jì)思路:T/C0作

14、為定時(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#include char Counter = 0; / 1S計(jì)數(shù)變量清零/*端口初始化*/void port_init() PORTA=0 xFF; /PA口配置為輸出 DDRA=0 xFF; /PA口初始值為1/*定時(shí)器0初始化*/void timer0_init() /因?yàn)槎〞r(shí)

15、時(shí)間太短,看不到燈的變化 SREG = 0 x80; /使能全局中斷 TIMSK|=(1TOIE0); /使能T0溢出中斷 TCCR0|= ; /T0工作于普通模式,1024分頻 TCNT0 = ;/*主函數(shù)*/void main() port_init(); timer0_init(); while(1);/*定時(shí)器0中斷服務(wù)函數(shù)*/#pragma interrupt_handler timer0_ovf:10void timer0_ovf(void) TCNT0 =61; /重裝計(jì)數(shù)初值 Counter + if ( ) /定時(shí)中斷溢出40次為1SPORTA=PORTA;Counter =

16、 0; /1S計(jì)時(shí)變量清零 實(shí)例解析3T/C0的CTC模式實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C0進(jìn)行比較匹配時(shí)清零模式(CTC),在單片機(jī)的比較匹配輸出口PB3(OC0)上輸出一個(gè)頻率為20HZ占空比為50%的方波脈沖。同時(shí)控制PD7口的蜂鳴器每隔1S鳴叫1次。設(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。可設(shè)OCR0=195,當(dāng)比較匹配后,0C0取反一次,此時(shí)OC0可輸出20HZ占空比為50%的方波。每比較匹配一次,計(jì)數(shù)變量Counte

17、r加1,當(dāng)Counter為40時(shí),定時(shí)1s到,PD7取反,蜂鳴器每隔1S鳴叫1次。實(shí)例解析3T/C0的CTC模式實(shí)驗(yàn)實(shí)例解析3T/C0的CTC模式實(shí)驗(yàn)#include char Counter = 0; / 計(jì)數(shù)變量清零/*端口初始化*/void port_init() DDRB|=(1PB3); /PB3(OC0)配置為輸出(為1時(shí)用或符號(hào)|) PORTB&=(0PB3); /PB3輸出0(為0時(shí)與符號(hào)&) DDRD|=(1PD7); /PD7配置為輸出(為1時(shí)用或符號(hào)|) PORTD&=(0PD7); /PD7輸出0(為0時(shí)與符號(hào)&)/*定時(shí)器0初始化*/void timer0_init(

18、) SREG = 0 x80; /使能全局中斷 TIMSK= (1 OCIE0); /T/C0比較匹配中斷允許 TCCR0=(1COM00)|(0COM01)|(0WGM00)|(1WGM01)|(1CS02)|(0CS01)|(1= 40) /定時(shí)時(shí)間到1S嗎?定時(shí)中斷溢出40次為1SPORTD=(1PD7);/驅(qū)動(dòng)蜂鳴器發(fā)聲Counter = 0; /1S計(jì)時(shí)變量清零 引入仿真實(shí)例解析4T/C0快速PWM實(shí)驗(yàn)實(shí)現(xiàn)功能:利用PWM模式實(shí)現(xiàn)LED燈的漸明漸暗。具體方法是在PB3(0C0)上外接一只LED燈,開機(jī)后LED燈最亮,然后逐漸變暗,再逐漸變亮。 實(shí)例解析4T/C0快速PWM實(shí)驗(yàn)利用T/

19、C0的快速PWM模式,具體思路是:T/C0在計(jì)數(shù)過程中,內(nèi)部硬件電路會(huì)將計(jì)數(shù)值TCNT0與比較寄存器0CR0中的值進(jìn)行比較,當(dāng)兩個(gè)值匹配相等時(shí),會(huì)使得OC0引腳置0(或置1),當(dāng)計(jì)數(shù)值達(dá)到255時(shí),OC0引腳置1(或置0),這樣通過改變OCR0的值,便可以在OC0上輸出不同占空比的PWM波,從而使LED顯示出漸明漸暗的效果實(shí)例解析4T/C0快速PWM實(shí)驗(yàn)#include#define uchar unsigned char#define uint unsigned intunsigned int count;/*以下是延時(shí)函數(shù)*/void Delay_ms(uint xms) int i,j;

20、 for(i=0;ixms;i+) for(j=0;j1140;j+) ; /*以下是端口初始化函數(shù)*/void port_init() DDRB|=(1PB3); /PB3配置為輸出(為1時(shí)用或符號(hào)|) PORTB&=(0PB3); /PB3輸出0(為0時(shí)與符號(hào)&)/*定時(shí)器0初始化*/void timer0_init() TCCR0=(1WGM01)|(1WGM00)|(1COM01)|(1COM00)|(1CS00)|(0CS01) )|(0CS02); / T/C0工作于快速PWM模式,不分頻 /比較匹配時(shí),OC0置位,記數(shù)到0XFF時(shí),清零OC0 OCR0=0; /比較匹配寄存器初值

21、, SREG=0 x80; /使能全局中斷/*以下是主函數(shù)*/void main(void) port_init();timer0_init();while(1) for(count=0;count0;count-) /OCR=255時(shí),LED最暗,然后逐漸變亮OCR0= count; Delay_ms(20); Delay_ms(3000); /LED最亮?xí)r,延時(shí)一段時(shí)間引入仿真作業(yè):設(shè)計(jì)一個(gè)125KHZ方波發(fā)生器。16位定時(shí)/計(jì)數(shù)器T/C1 如同8位的定時(shí)/計(jì)數(shù)器,ATmega16的16位定時(shí)/計(jì)數(shù)器T/C1用戶也是可以控制的:TCCR1AT/C1控制寄存器A (Control Regis

22、ter)TCCR1BT/C1控制寄存器BTCNT1T/C1計(jì)數(shù)寄存器(16位)OCR1AT/C1輸出比較寄存器A (Output Compare Register)OCR1BT/C1輸出比較寄存器B(16位)ICR1T/C1輸入捕獲寄存器Input capture register (16位)T/C1的特點(diǎn)真正的16位設(shè)計(jì),允許16位的PWM2個(gè)獨(dú)立的輸出比較匹配單元(OC1A,OC1B)雙緩沖輸出比較寄存器(OCR1A, OCR1B)一個(gè)輸入捕捉單元(ICP1)輸入捕捉噪聲抑制(對(duì)輸入信號(hào)進(jìn)行濾波)比較匹配時(shí)清零計(jì)數(shù)器(CTC模式)可產(chǎn)生無輸出抖動(dòng)的,相位可調(diào)的PWM信號(hào)輸出周期可調(diào)的PWM

23、波形輸出(計(jì)數(shù)上限可設(shè))頻率發(fā)生器外部事件計(jì)數(shù)器(T1)帶10位的時(shí)鐘預(yù)分頻器4個(gè)獨(dú)立的中斷源(TOV1,OCF1A, OCF1B, ICF1)跟定時(shí)器相關(guān)的引腳:1.計(jì)數(shù)脈沖輸入端 T0 ,T12.比較匹配信號(hào)輸出端 OC0 , OC1B , OC1A , OC2 3,捕捉信號(hào)輸入端 ICP1T/C1的功能16位計(jì)數(shù)器,讀操作:先讀低,后讀高;寫操作:先寫高, 后寫低。更加完善的PWM功能(1)產(chǎn)生頻率可調(diào),相位可調(diào),頻率相位均可調(diào)的PWM波(2)可同時(shí)產(chǎn)生2路,相同頻率、不同占空比的PWM波(3)具有輸入捕捉功能。T/C1控制寄存器ATCCR1A76543210 COM1B1 COM1B0

24、 FOC1A FOC1B WGM11 WGM10 COM1A1 COM1A0 位76:T/C1比較匹配A輸出模式。這兩位決定了T/C1比較匹配發(fā)生時(shí)輸出引腳OC1A的輸出行為。位54:T/C1比較匹配B輸出模式。這兩位決定了T/C1比較匹配發(fā)生時(shí)輸出引腳OC1B的輸出行為。位3:強(qiáng)制輸出比較A。位2:強(qiáng)制輸出比較B。位10:波形發(fā)生模式。該兩位與WGM13、 WGM12(位于TCCR1B)相組合,用于控制T/C1的計(jì)數(shù)和工作方式。模式WGM13WGM12WGM11WGM10T/C1工作模式計(jì)數(shù)上限值OCR1A/OCR1B更新TOV1置位00000一般模式0 xFFFF立即0 xFFFF1000

25、18位PWM,相位可調(diào)0 x00FFTOP0 x0000200109位PWM,相位可調(diào)0 x01FFTOP0 x00003001110位PWM,相位可調(diào)0 x03FFTOP0 x000040100CTCOCR1A立即0 xFFFF501018位快速PWM0 x00FFTOPTOP601109位快速PWM0 x01FFTOPTOP7011110位快速PWM0 x03FFTOPTOP81000PWM,相位、頻率可調(diào)ICR10 x00000 x000091001PWM,相位、頻率可調(diào)OCR1A0 x00000 x0000101010PWM,相位可調(diào)ICR1TOP0 x0000111011PWM,相位

26、可調(diào)OCR1ATOP0 x0000121100CTCICR1立即0 xFFFF131101保留141110快速PWMICR1TOPTOP151111快速PWMOCR1ATOPTOPT/C1控制寄存器BTCCR1B76543210 WGM13 WGM12 CS12 CS11 CS10 ICNC1 ICES1 位7:輸入捕獲噪聲抑制。當(dāng)該位置“1”時(shí),捕獲信號(hào)要進(jìn)行連續(xù)4次的采樣,只有4次采樣值都有效時(shí),輸入捕獲標(biāo)志才置位。位6:輸入捕獲觸發(fā)方式選擇。當(dāng)該位置“0”時(shí),捕獲信號(hào)下降沿有效;當(dāng)該位置“1”時(shí),捕獲信號(hào)上升沿有效。位43:波形發(fā)生模式。該兩位與WGM11、 WGM10(位于TCCR1A

27、)相組合,用于控制T/C1的計(jì)數(shù)和工作方式。位20: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ū)動(dòng)111外部T1引腳,上升沿驅(qū)動(dòng)位5:保留。T/C1計(jì)數(shù)寄存器TCNT1H和TCNT1L151413121110 98 MSB LSB 76543210 TCNT1H和TCNT1L組成T/C1的16位計(jì)數(shù)寄存器TCNT1,它是向上計(jì)數(shù)的計(jì)數(shù)器

28、(加法計(jì)數(shù)器)或上/下計(jì)數(shù)的計(jì)數(shù)器(在PWM模式下)。若T/C1被置初值,則T/C1將在預(yù)置初值的基礎(chǔ)上計(jì)數(shù)。 T/C1輸出比較寄存器AOCR1AH和OCR1AL151413121110 98 MSB LSB 76543210T/C1輸出比較寄存器BOCR1BH和OCR1BL OCR1AH和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è)置為相等

29、,不會(huì)引發(fā)比較匹配。 比較匹配發(fā)生后,將置位相應(yīng)的中斷請(qǐng)求標(biāo)志OCF1A和OCF1B。T/C1輸入捕獲寄存器ICR1H和ICR1L151413121110 98 MSB LSB 76543210 ICR1H和ICR1L組成16位的輸入捕獲寄存器ICR1。按照ICES1的設(shè)定,外部輸入捕獲引腳ICP發(fā)生上跳變或下跳變時(shí),計(jì)數(shù)器TCNT1中的值寫入寄存器ICR1中,同時(shí)輸入捕獲中斷標(biāo)志ICF1將置“1”。 實(shí)例解析7T/C1定時(shí)實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C1的定時(shí)模式對(duì)LED燈進(jìn)行亮滅控制,即控制PA口的LED燈亮0.1S,滅0.9S設(shè)計(jì)思路:定時(shí)時(shí)間為0.1S,計(jì)數(shù)初值的計(jì)算方法定時(shí)器初值=216-

30、(8M/64)*0.1=53036=0XCF2CTCNT1H=0XCFTCNT1L=0X2C#include #define uchar unsigned char/*以下是端口初始化函數(shù)*/void port_init() DDRA = 0 xFF; /PA設(shè)置為輸出口 PORTA = 0 xFF;/PA輸出高電平/*定時(shí)器1初始化*/void timer1_init() TCNT1H = 0 xCF;/計(jì)數(shù)器置初值 TCNT1L = 0 x2C; TCCR1A |= 0 x00; /普通端口模式 TCCR1B |= (1CS11)|(1CS10);/64分頻 TIMSK&=(0=10)count=0;PORTA=0XFF; /控制PA口LED燈熄滅0.9s實(shí)例解析8T/C1輸入捕捉實(shí)驗(yàn)實(shí)現(xiàn)功能:使用T/C1的輸入捕捉功能檢測(cè)按鍵的按下,并判斷兩次按下的時(shí)間間隔,如果時(shí)間間隔超過3S,則PA口LED燈狀態(tài)反轉(zhuǎn),否則,如果沒有按鍵,則蜂鳴器每8.39S響一聲,表示T/C1計(jì)數(shù)溢出。設(shè)計(jì)思路:T/C1設(shè)置為普通模式,定時(shí)器啟動(dòng)后開始計(jì)數(shù),TCNT1從0開

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論