打印
[AVR单片机]

关于avr的定时器疑问···

[复制链接]
1868|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qinjunquan|  楼主 | 2010-8-14 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"iom32V.h"
#include"macros.h"

unsigned char i=0;

#pragma interrupt_handler Timer0_comp_isr:20
void Timer0_comp_isr(void)
{
    PORTA=~PINA;
    TCNT0  = 0x00;             //为计数寄存器赋初值。
}
void Timer0_init(void)
{
    CLI();
TCCR0=0x00;       //T0控制寄存器,停止定时器
    TCNT0=0x00;    //初始值0,
    OCR0 =0xea;    //匹配值234,1/8mhz*1024*234us=30ms
    TIMSK&=~BIT(0);
    TIMSK|=BIT(1); //比较中断中断允许
    TCCR0=0b00001111;   //启动定时器,CTC模式,1024分频,不与OC0连接
    SEI();
}
void main()
{
   DDRA=0xff;
   PORTA=0x55;
   Timer0_init();
   while(1);
}

很简单的一个程序,但是观察PA口接的LED居然是隔三四秒才闪一次,为什么呢?
用的晶振是8Mhz的,按道理8位的定时器最多就是256*1024*1/8Mhz,也几十毫秒???
请高手指教下····

相关帖子

沙发
xukai871105| | 2010-8-15 14:54 | 只看该作者
也要看看你的熔丝位啊,总不能在使用片内晶振的时候说系统用的外部的8M

使用特权

评论回复
板凳
hotpower| | 2010-8-16 10:41 | 只看该作者
有此可能。
软件延时试试

使用特权

评论回复
地板
wangyueming| | 2010-9-15 22:39 | 只看该作者
用示波器一测就知道是不是8M的了!

使用特权

评论回复
5
windlrh| | 2010-12-5 18:09 | 只看该作者
硬件延时比软件好,觉得是熔丝位没设置吧

使用特权

评论回复
6
мe.蒾鋩| | 2010-12-7 10:26 | 只看该作者
:lol

使用特权

评论回复
7
airwill| | 2010-12-8 14:51 | 只看该作者
根据这个时间计算, 估计是内部看门狗时钟做了系统时钟了. 不妨检测一下.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝