




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
./AVR
定時(shí)器中斷初值計(jì)算方法使用芯片
AT
Mega16
外部晶振4.00MHz定時(shí)器1
〔16位定時(shí)器寄存器TCCR1B
=
0x04
設(shè)定256預(yù)分頻要利用定時(shí)器定時(shí)1秒1,4000000
/
256
=
15625
說(shuō)明定時(shí)器每當(dāng)1/15625
秒就會(huì)觸發(fā)一次中斷2,65535
-
15625
=
49910
計(jì)算出要累加多少次才能在1秒后出發(fā)定時(shí)器1的溢出中斷3,49910
<==>
C2
F6
將計(jì)算后的值換算成16進(jìn)制4,TCNT1H
=
0xC2
;
對(duì)寄存器賦值
TCNT1L
=
0xF6
;=================================================例如用16位定時(shí)器TIMER1,4MHZ晶振,256分頻,100ms定時(shí),如何求得初值賦給TCNT1?65536-<4M/256>*0.1=63973.5其中,4M是晶體頻率,0.1是定時(shí)時(shí)長(zhǎng)單位秒。對(duì)于8位的定時(shí)器T=<2^8-計(jì)數(shù)初值>*晶振周期*分頻數(shù)=<2^8-計(jì)數(shù)初值>/晶振頻率*分頻數(shù)計(jì)數(shù)初值=2^8-T/晶振周期/分頻數(shù)=2^8-T*晶振頻率/分頻數(shù)因?yàn)锳VR一指令一周期IAR
For
AVR
精確延時(shí)C語(yǔ)言中,想使用精確的延時(shí)程序并不容易。IAR
中有這樣的一個(gè)函數(shù)__delay_cycles<>,該函數(shù)在頭文件intrinsics.h中定義,函數(shù)的作用就是延時(shí)N個(gè)指令周期。根據(jù)這個(gè)函數(shù)就可以實(shí)現(xiàn)精確的延時(shí)函數(shù)了〔但不能做到100%精確度。實(shí)現(xiàn)的方法:建立一個(gè)delay.h的頭文件:#ifndef
__IAR_DELAY_H#define
__IAR_DELAY_H#include
<intrinsics.h>#define
XTAL
8
//可定義為你所用的晶振頻率〔單位Mhz
#define
delay_us<x>
__delay_cycles
<
<unsigned
long><x
*
XTAL>
>
#define
delay_ms<x>
__delay_cycles
<
<unsigned
long><x
*
XTAL*1000>
>#define
delay_s<x>
__delay_cycles
<
<unsigned
long><x
*
XTAL*1000000>
>#endif
注意:
__delay_cycles<x>,x必須是常量或則是常量表達(dá)式,如果是變量則編譯報(bào)錯(cuò)!關(guān)于溢出中斷不管是哪個(gè)單片機(jī)都是不斷累加,使其寄存器溢出觸發(fā)中斷,然后跳轉(zhuǎn)到中斷函數(shù)處執(zhí)行中斷服務(wù)程序。對(duì)于定時(shí)器初值的設(shè)定可以加深對(duì)定時(shí)器的工作原理的理解。
ATMega16
里面有8位和16位兩種定時(shí)器,他們何時(shí)會(huì)溢出這個(gè)是固定的,也就是到達(dá)他們的計(jì)數(shù)圍的最大值就會(huì)產(chǎn)生中斷,8位的定時(shí)器的最大計(jì)數(shù)圍是0~256〔2的8次方,就是累加到256后他就會(huì)產(chǎn)生中斷,16位的定時(shí)器最大計(jì)數(shù)圍是0~65536〔2的16次方,累加到65536時(shí)他就會(huì)產(chǎn)生中斷。而我們所謂的計(jì)數(shù)初值是就是要設(shè)定定時(shí)器在什么地方開(kāi)始計(jì)數(shù),以8位定時(shí)器為例比如:初值為100,所以定時(shí)器從100開(kāi)始累加,累加了156次,加到256后產(chǎn)生中斷,這就是中間消耗的時(shí)間和指令周期就是我們要去設(shè)定的時(shí)間;再比如:初值是200,所以定時(shí)器從200開(kāi)始累加,累加了56次,加到256后產(chǎn)生中斷,可以看到第一定時(shí)要累加156次才會(huì)中斷而第二次只要累加56次就會(huì)產(chǎn)生中斷,顯然第一次設(shè)定的時(shí)間要比第二次的長(zhǎng)。定時(shí)器不僅可以定時(shí),而且我們用到定時(shí)器的時(shí)候往往是需要精確定時(shí)的時(shí)候。我們可以計(jì)算出我們?cè)O(shè)定的初值會(huì)在多長(zhǎng)時(shí)間后進(jìn)入中斷。實(shí)驗(yàn)平臺(tái):ATMega16
晶振:
11.0592
MHz對(duì)初值的計(jì)算:
1,11059200
/
1024
=
10800
設(shè)定為1024倍分頻,得到每1秒需要進(jìn)行多少次累加
2,10800
/
100
=
108
得到10ms
的定時(shí)需要進(jìn)行多少次累加。
3,256
-
108
=
148
計(jì)算圍最大值減去要累加的時(shí)間,得到初值,即從哪里開(kāi)始累加才能在溢出時(shí)為10ms的時(shí)間。
4,148
<==>
0x94
得到十六進(jìn)制值,賦值給TCNT0代碼:定時(shí)10ms#include
<iom16.h>unsigned
char
flag
=
0;void
timer_init<void>{TCCR0
=
0x05;
//進(jìn)行1024分頻
TCNT0
=
0x94;
//賦計(jì)數(shù)初值
TIMSK_TOIE0
=
1;
//開(kāi)使能
SREG_I
=
1;
//開(kāi)總中斷
}#pragma
vector
=
TIMER0_OVF_vect__interrupt
void
time0_normal<void>{
TCNT0
=
0x94;
//重新賦初值
flag++;}void
main<void>{
timer_init<>;
DDRB_Bit0
=
1;
while<1>
{
if<flag
==
100>
//10ms
重復(fù)100次,即為1秒
{
PORTB_Bit0
=
~PORTB_Bit0;
//讓LED閃爍
flag
=
0;
}
}
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//實(shí)驗(yàn)平臺(tái):ATMega16晶振:11.059216位定時(shí)器初值設(shè)定:
1,11059200
/
256
=
43200
設(shè)定256倍分頻,得到每1秒需要進(jìn)行多少次累加
2,65536
-
43200
=
22336
計(jì)算圍最大值減去要累加的時(shí)間,得到初值,即從哪里開(kāi)始累加才能在溢出時(shí)為1s的時(shí)間。
3,22336
<==>
0x57
0x40
得到十六進(jìn)制值,賦值給TCNT1H
,
TCNT1L:定時(shí)1s#include
<iom16.h>
unsigned
char
flag
=
0;
void
timer_init<void>
{
TCCR1B
=
0x04;
TCNT1H
=
0x57;
TCNT1L
=
0x40;
TIMSK_TOIE1
=
1;
SREG_I
=
1;
}
#pragma
vector
=
TIMER1_OVF_vect
__interrupt
void
time1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)聚酰亞胺(PI)薄膜行業(yè)運(yùn)行現(xiàn)狀及發(fā)展前景分析報(bào)告
- 2025福建省建筑安全員C證考試題庫(kù)
- 南京師范大學(xué)《統(tǒng)計(jì)學(xué)專(zhuān)業(yè)前沿》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川農(nóng)業(yè)大學(xué)《醫(yī)學(xué)論文寫(xiě)作與學(xué)術(shù)誠(chéng)信》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西體育高等專(zhuān)科學(xué)?!兜厍蛭锢韺W(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 甘肅畜牧工程職業(yè)技術(shù)學(xué)院《研究型綜合》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱工程大學(xué)《學(xué)前教育專(zhuān)業(yè)英語(yǔ)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年山東省百師聯(lián)考高三上學(xué)期11月考試歷史試卷
- 上海民遠(yuǎn)職業(yè)技術(shù)學(xué)院《服裝市場(chǎng)調(diào)研》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西信息職業(yè)技術(shù)學(xué)院《秘書(shū)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 術(shù)后鎮(zhèn)痛泵的使用與護(hù)理
- GB 19522-2024車(chē)輛駕駛?cè)藛T血液、呼氣酒精含量閾值與檢驗(yàn)
- 2024年成都新都投資集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 危險(xiǎn)預(yù)知訓(xùn)練表(KYT)
- 2024年湖南鐵路科技職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- 《書(shū)籍裝幀設(shè)計(jì)》 課件 項(xiàng)目1 走進(jìn)書(shū)籍裝幀設(shè)計(jì)
- ASTM標(biāo)準(zhǔn)全部目錄(中文版)
- 《汽車(chē)電氣設(shè)備構(gòu)造與維修》 第4版 課件 第3、4章 電源系統(tǒng)、發(fā)動(dòng)機(jī)電器
- 遼海版小學(xué)美術(shù)六年級(jí)下冊(cè)全冊(cè)教案
- 2023年南京市鼓樓區(qū)建寧路街道安監(jiān)辦招聘專(zhuān)職安全員考試真題及答案
- 鄉(xiāng)鎮(zhèn)精神衛(wèi)生工作總結(jié)
評(píng)論
0/150
提交評(píng)論