欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
AVR 單片機初值計算
[打印本頁]
作者:
hongniu
時間:
2015-6-24 21:25
標(biāo)題:
AVR 單片機初值計算
使用芯片 AT Mega16 外部晶振 4.00MHz
定時器1 (16位定時器)寄存器 TCCR1B = 0x04 設(shè)定 256預(yù)分頻
要利用定時器定時1秒
1,4000000 / 256 = 15625 說明定時器每當(dāng) 1/15625 秒 就會觸發(fā)一次中斷
2,65535 - 15625 = 49910 計算出要累加多少次才能在1秒后出發(fā)定時器1的溢出中斷
3,49910 <==> C2 F6 將計算后的值換算成16進制
4, TCNT1H = 0xC2 ; 對寄存器賦值
TCNT1L = 0xF6 ;
=============================================================================
例如用16位定時器TIMER1,4MHZ晶振,256分頻,100ms定時,如何求得初值賦給TCNT1?
65536-(4M/256)*0.1=63973.5
其中,4M是晶體頻率,0.1是定時時長單位秒。
對于8位的定時器
T=(2^8-計數(shù)初值)*晶振周期*分頻數(shù)=(2^8-計數(shù)初值)/晶振頻率*分頻數(shù)
計數(shù)初值=2^8-T/晶振周期/分頻數(shù)=2^8-T*晶振頻率/分頻數(shù)
因為AVR一指令 一周期
作者:
skoobing
時間:
2020-4-27 19:30
非常好!不錯!非常感謝樓主
作者:
杏花寒
時間:
2020-10-10 14:23
非常好!不錯!非常感謝師傅
作者:
my808
時間:
2020-11-19 18:52
ICC-AVR application builder 點幾下鼠標(biāo)就可完成
推薦大家試一試
ScreenShot_20201119_184703_1.jpg
(202.18 KB, 下載次數(shù): 53)
下載附件
2020-11-19 18:51 上傳
//ICC-AVR application builder : 2020/11/19 18:50:34
// Target : M16
// Crystal: 4.0000Mhz
#include <iom16v.h>
#include <macros.h>
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //m103 output only
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}
//TIMER1 initialize - prescale:256
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 1Sec
// actual value: 1.000Sec (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xC2; //setup
TCNT1L = 0xF7;
OCR1AH = 0x3D;
OCR1AL = 0x09;
OCR1BH = 0x3D;
OCR1BL = 0x09;
ICR1H = 0x3D;
ICR1L = 0x09;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
}
#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
TCNT1H = 0xC2; //reload counter high value
TCNT1L = 0xF7; //reload counter low value
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer1_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x04; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//
void main(void)
{
init_devices();
//insert your functional code here...
}
復(fù)制代碼
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1