atmega16的定时0溢出中断为什么进不去

来源:百度知道 编辑:UC知道 时间:2024/05/19 11:30:33
#include <ioavr.h>
#define uchar unsigned char
#define uint unsigned int
uchar const DSEG[10]={0x28,0xee,0x32,0xa2,0xe4,0xa1,0x21,0xea,0x20,0xa0};
uchar const ACT[4]={0xe0,0xd0,0xb0,0x70};

uchar second=0;
uchar minute=0;
uint i,cnt=0;
//==================端口初始化==============================
void port_init(void)
{PORTA = 0xfe;
DDRA = 0xfe;
PORTC = 0xff;
DDRC = 0xff;
}
//==================定时器0初始化==============================
void timer0_init(void)
{
TCNT0 = 0x06; //1ms 定时
TCCR0 = 0x03; //来自预分频器的64分频
TIMSK = 0x01; //使能T/C0中断
}
//=========================================
void init_devices(void)
{
port_init();
timer0_init();
SREG=0x80;
}
//===================定时器0中断函数======================
#pragma interrupt_handler timer0_ovf_isr:10 //定时器1ms中断一次
void timer0_ovf_isr(void)
{
TCNT0 = 0

我之前也遇到了一样的问题 最后解决方法如下:
TIMSK |= (1<<TOIE0); //定时器0溢出中断使能

这样设置TIMSK 就进去中断了。我用的CVAVR 中断函数是这样子的:
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTA=1;

delay();
PORTA=0;
}

吧 “ #pragma interrupt_handler timer0_ovf_isr:10 //定时器1ms中断一次”这句放到头文件include下面