#include
#include
#define uchar unsigned char
#define uint unsigned int
uint count;
void init()
{
DDRB|=_BV(PB4)|_BV(PB5)|_BV(PB6)|_BV(PB7);
PORTB&=~(_BV(PB4)|_BV(PB5)|_BV(PB6)|_BV(PB7));
//TCNT0=155;//初值为55,即记数到255-155=100次溢出并进入定时器0中断函数
TCNT1H=(65536-10000)/256;//记数到10000次溢出并进入定时器1中断函数
TCNT1L=(65536-10000)%256;
TIMSK|=_BV(TOIE1);//溢出中断使能,相当与52的ETO=1;
sei();//开总中断
TCCR1B|=_BV(CS11);//8分频,并启动定时器1,8M晶振经过8分频后以1M的速度来记数,即每过1us记数一次,记数10000次则为10ms,即10ms进入一次定时器1中断函数
}
int main()
{
init();
while(1);
}
SIGNAL(SIG_OVERFLOW1)//定时器1中断服务函数,实现LED 1s亮 1s灭
{
TCNT1H=(65536-10000)/256;//记数到10000次溢出并进入定时器1中断函数
TCNT1L=(65536-10000)%256;
count++;
if(count>=100)
{
count=0;
PORTB^=_BV(PB4);//取反
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』