avr单片机定时器1中断问题

2025-02-27 12:08:56
推荐回答(3个)
回答1:

中断没有问题,有问题的是把中断初始化和下面几句放在while(1)中了:
1)--DDRF = 0x01; ---设置端口PF0为输入,其他为输出
2)--PORTF = 0x01;---设置端口PF0为高电平,其他为低电平(包括PF1)
3)--DDRF = 0x02;---设置端口PF1为输入,其他为输出
4)--PORTF = 0x02;---设置端口PF1为高电平,其他为低电平

这样导致程序不断的将PF1设为低,然后马上又设为高,因为你上面几句放在主循环中了。

根据你中断的设置,你的led端口应该是PF1; 你的1.1mhz的频率是上面几句得到的。

解决方法:
1.你把while(1)中的代码全部剪切(不是复制)到while(1)之前;
while(1)中不要任何代码就OK了。

回答2:

//定时器中断函数
#pragma interrupt_handler second:9

void second()
{
TCNT1H = 0x5B;
TCNT1L = 0x40;
if (num == 0)
{
PORTF = 0x00;
num = 1;
}
else
{
PORTF = 0x02;
num = 0;
}
}
改成以上,你再复制进去试一下!

回答3:

用的什么编译器写呀?AVR的中断函数不是这么写的哦。亲!