[AVR单片机] 关于avr的定时器疑问···

[复制链接]
 楼主| 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的了!
windlrh 发表于 2010-12-5 18:09 | 显示全部楼层
硬件延时比软件好,觉得是熔丝位没设置吧
мe.蒾鋩 发表于 2010-12-7 10:26 | 显示全部楼层
airwill 发表于 2010-12-8 14:51 | 显示全部楼层
根据这个时间计算, 估计是内部看门狗时钟做了系统时钟了. 不妨检测一下.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

1

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部