ATMEGA16的定时计数器问题,谢谢!
时间:10-02
整理:3721RD
点击:
我写了一段程序,用定时器计数器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);
}
#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);
}
补充一下,我把触发方式,改为内部时钟计数,就可连续触发中断,为什么用外部脉冲计数就只能触发一次呢?,大侠们快来啊,谢谢
别沉啊,求指教啊