#include<iom16v.h>
#include<macros.h>
void delay(void)
{
unsigned int a,b;
for(a=0;a<1000;a++)
for(b=0;b<500;b++);
}
void init(void)
{
DDRA=0XFF; //输出方式
PORTA=0XFF;
DDRD=0; //输入方式
PORTD=0XFF;
MCUCR |=0X02; //下降沿触发
GICR |=BIT(6); //打开外边中断0
DDRD &=~BIT(2); //设置为输入
PORTD |=BIT(2); //带上拉电阻
SREG |=BIT(7); //打开全局中断
}
void main()
{
init();
while(1)
{
PORTA |=BIT(0); //第一个LED亮
delay();
PORTA &=~BIT(0);
delay();
}
}
#pragam void interrupt_handle int0_isr:2
void int0_isr(void)
{
PORTA=0;//LED全亮
delay();
delay();
delay();
PORTA=0xff;
}
第1个回答 2012-11-01
你在中断里使他灭的时候亮,亮的时候灭就行了。或者用两个中断。一个灭一个亮