以下程序为什么能够使LED灯闪烁?

2019-07-16 03:47发布

#define F_CPU  4000000UL
#include<avr/io.h>
#include<avr/interrupt.h>
#define INT8U  unsigned char
#define INT16U unsigned int
#define LED_BLINK()  (PORTC^=0x01)
INT16U  T_Count=0;

int main()
{
    DDRC=0x01;
TCCR0=0x05;   // T/C0控制寄存器  用于选择计数器的计数源、工作模式和比较输出的方式等CS0[2:0]:T/C0时钟源选择。。。低三位101 clk/1024
TCNT0=256-F_CPU/1024.0*0.05;   //计算寄存器
tiMSK=0x01;       //使能T0中断
sei();            //开中断
    while(1);
}

//T0定时器溢出中断服务程序
ISR(TIMER0_OVF_vect)
{
    TCNT0=256-F_CPU/1024.0*0.05;
if(++T_Count!=5) return;
    T_Count=0;
    LED_BLINK();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。