#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,也几十毫秒???
请高手指教下····
|