#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();
}
就是程序是怎么运行的,运行的顺序和它为何能够使LED闪烁。
一周热门 更多>