#include <AVRdef.h>
unsigned char temp=0x80;
void main()
{
DDRA=0xff;
GICR|=0x40;//使能外部INT0
MCUCR|=0x01;//INT0下降沿触发
SEI();//总中断
while(1);
}
#pragma interrupt_handler int0_isr:iv_INT0
void int0_isr(void)
{
PORTA=temp;
temp=temp>>7|temp<<1;
}
#include <AVRdef.h>
unsigned char count;
void main()
{
//TCCR0=0;
TCNT0=12;
//OCR0=244;
TCCR0=0x05;
TIMSK=0x01;
SEI();
DDRA=0xff;
PORTA=0;
while(1);
}
#pragma interrupt_handler Timer0:iv_TIMER0_OVF
void Timer0()
{
TCNT0=12;
count++;
if(count==2)
{
PORTA=~PORTA;
count=0;
}
}
#include <AVRdef.h>
void main()
{
//TCCR0=0;
TCNT0=12;//设置计数初值,计数244后清零申请中断
OCR0=244;//从0计数到244,匹配申请中断
TCCR0=0x0d;//CTC模式,1024预分频
TIMSK=0x02;//使能输出比较匹配中断
SEI();
DDRA=0xff;
PORTA=0;
while(1);
}
#pragma interrupt_handler Timer0:iv_TIMER0_COMP
void Timer0()
{
count++;
if(count==2)
{
PORTA=~PORTA;
count=0;
}
}
#include<AVRdef.h>
void main()
{
TCCR1A=0;//WGM11、10清零
TCCR1B=0;
TCNT1H=0x0b;
TCNT1L=0xdb;
TCCR1B=2;//WGM13、12清零,为普通模式,时钟选择CS02~00:8预分频
TIMSK=0x04;
SEI();
DDRA=0xff;
PORTA=0;
while(1);
}
#pragma interrupt_handler timer1:iv_TIMER1_OVF
void timer1()
{
TCNT1H=0x0b;
TCNT1L=0xdb;
PORTA=~PORTA;
}