以下為定時器的查詢工作方式,不會發(fā)生中斷請求:
#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溢出標志進行判斷,溢出后自動清零,不發(fā)生中斷.
}
}
以下工作方式,會發(fā)生溢出中斷請求:
#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)
{
}
}