我写了一段程序,用定时器计数器T0,外部计数六个下降沿,触发中断,放PORTA反向一次,但是这个程序为什么只能执行一次??中断出发后,标志位清零,再有五个下降沿不还能触发吗??但为什么只能出发一次呢?望大侠指教!谢谢。下面是我的代码
#include <mega16.h>
interrupt [
tiM0_OVF] void time0()//中断服务函数,PORTA反向
{
PORTA=~PORTA;
}
void main()
{
DDRA=0xff; //把端口A设置为输出端口
PORTA=0xff; //端口A赋初值
TCCR0=0x06; //T0控制寄存器,触发方式外部下降沿
TCNT0=250; //T0计数寄存器赋初值
SREG=0x80; //中断总开关
TIFR=0x01; //中断标志寄存器
TIMSK=0x01; // 中断屏蔽寄存器,中断分开关
while(1);
}
一周热门 更多>