AVR单片机GCC编程:定时器的基本操作
扫描二维码
随时随地手机看文章
以下为定时器的查询工作方式,不会发生中断请求:
#include
int main(void)
{
//8位定时器时间计算 T=(256-初值) * 脉冲周期
int i;
TCNT0 = 55;//设置初值
TCCR0 |= (1 << CS01);//8分频
for (i = 0; i < 10000; i++)
{
while(!(TIFR & TOV0));//对T/C0溢出标志进行判断,溢出后自动清零,不发生中断.
}
}
以下工作方式,会发生溢出中断请求:
#include
#include
volatile unsigned int i = 0;//注意,必须有volatile
int main(void)
{
//8位定时器时间计算 T=(256-初值) * 脉冲周期
TCNT0 = 55;//设置TC0初值
TIMSK |= (1 << TOIE0)//TC0溢出中断使能
sei();//全局中断使能
TCCR0 |= (1 << CS01);//8分频,启动定时器
while(1);
}
SIGNAL (SIG_OVERFLOW0)//TC0溢出中断服务程序
{
TCNT0 = 55;//重设TC0初值
i++;
if (cnt >= 1000)
{
}
}