11 个解决方案
#1
这个有计算公式的吧,你看看数据手册呗。
这个肯定可以达到的。
这个肯定可以达到的。
#2
产生定时用32.768k晶振比较准
#3
ding
#4
7.3728Mhz
如果你的系统不分频的话
那你的定时器得记7.3728M次,才是一秒
你得有24位的定时器才够
没用过AVR
具体的不好说。。。
如果你的系统不分频的话
那你的定时器得记7.3728M次,才是一秒
你得有24位的定时器才够
没用过AVR
具体的不好说。。。
#5
可是这样的话如何产生9600的波特率呢?
#6
大家都说avr比51功能强大,更方便。我看也不尽然。
#7
精确定时就用外部ic好了,ds1302?忘了,好像是这个
#8
你所希望的“精确”的1s,到底希望精确到什么程度?没有具体要求,无法做出判断。
#9
可以生成的,定时器1,256分频,0%的误差。初始化代码如下:
//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 = 0x8F; //setup
TCNT1L = 0x81;
OCR1AH = 0x70;
OCR1AL = 0x7F;
OCR1BH = 0x70;
OCR1BL = 0x7F;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
}
//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 = 0x8F; //setup
TCNT1L = 0x81;
OCR1AH = 0x70;
OCR1AL = 0x7F;
OCR1BH = 0x70;
OCR1BL = 0x7F;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
}
#10
我记得AVR的开发软件有这么个功能啊。
可以选择波特率,输入晶振大小,然后可以自动配置代码的。
——当时很无知,看了一下,现在还记得那个软件不错,可以直接生成代码的。
可以选择波特率,输入晶振大小,然后可以自动配置代码的。
——当时很无知,看了一下,现在还记得那个软件不错,可以直接生成代码的。
#11
gooogleman说的好像是 icc avr
zxq6 可以生成准确的1s,但1ms好像就不行了啊,不过1s满足我的要求了 呵呵
zxq6 可以生成准确的1s,但1ms好像就不行了啊,不过1s满足我的要求了 呵呵
#1
这个有计算公式的吧,你看看数据手册呗。
这个肯定可以达到的。
这个肯定可以达到的。
#2
产生定时用32.768k晶振比较准
#3
ding
#4
7.3728Mhz
如果你的系统不分频的话
那你的定时器得记7.3728M次,才是一秒
你得有24位的定时器才够
没用过AVR
具体的不好说。。。
如果你的系统不分频的话
那你的定时器得记7.3728M次,才是一秒
你得有24位的定时器才够
没用过AVR
具体的不好说。。。
#5
可是这样的话如何产生9600的波特率呢?
#6
大家都说avr比51功能强大,更方便。我看也不尽然。
#7
精确定时就用外部ic好了,ds1302?忘了,好像是这个
#8
你所希望的“精确”的1s,到底希望精确到什么程度?没有具体要求,无法做出判断。
#9
可以生成的,定时器1,256分频,0%的误差。初始化代码如下:
//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 = 0x8F; //setup
TCNT1L = 0x81;
OCR1AH = 0x70;
OCR1AL = 0x7F;
OCR1BH = 0x70;
OCR1BL = 0x7F;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
}
//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 = 0x8F; //setup
TCNT1L = 0x81;
OCR1AH = 0x70;
OCR1AL = 0x7F;
OCR1BH = 0x70;
OCR1BL = 0x7F;
TCCR1A = 0x00;
TCCR1B = 0x04; //start Timer
}
#10
我记得AVR的开发软件有这么个功能啊。
可以选择波特率,输入晶振大小,然后可以自动配置代码的。
——当时很无知,看了一下,现在还记得那个软件不错,可以直接生成代码的。
可以选择波特率,输入晶振大小,然后可以自动配置代码的。
——当时很无知,看了一下,现在还记得那个软件不错,可以直接生成代码的。
#11
gooogleman说的好像是 icc avr
zxq6 可以生成准确的1s,但1ms好像就不行了啊,不过1s满足我的要求了 呵呵
zxq6 可以生成准确的1s,但1ms好像就不行了啊,不过1s满足我的要求了 呵呵