原标题:AVR128 外部中断 C程序
/*AT 128 功能: INT0、INT1*/
/*GCC编译器*/
#include
#include
#include
#define SET_1(a,b) a|=(1<
#define CLE_0(a,b) a&=~(1<
#define uchar unsigned char
#define uint unsigned int
/*中断初始化,INT0、INT1、定义为下降沿触发*/
void int_init( void )
{
cli();
EICRA|=(1<
EIMSK|=(1<
sei();
}
/*端口初始化*/
void port_init()
{
DDRA=0XFF;
PORTA=0XFF;
DDRD=0X00;
PORTD=0X00;
}
/*INT0中断服务函数*/
SIGNAL(INT0_vect)
{
CLE_0(EIMSK,INT0);
PORTA=0X0F;
_delay_ms(200);
PORTA=0XFF;
SET_1(EIMSK,INT0);
}
/*INT1中断服务函数*/
SIGNAL(INT1_vect)
{
CLE_0(EIMSK,INT1);
PORTA=0XF0;
_delay_ms(200);
PORTA=0XFF;
SET_1(EIMSK,INT1);
}
/*主函数,无中断时发光二极管轮流点亮熄灭200毫秒*/
int main( void )
{
uchar i;
port_init();
int_init();
while(1)
{
for(i=0;i<8;i++)
{
PORTA=CLE_0(PORTA,i);
_delay_ms(200);
PORTA=SET_1(PORTA,i);
_delay_ms(200);
}
}
return 0;
}
责任编辑: