向各位高手请教一下atmega128外中断的问题
我以前是搞51的 才开始搞AVR啊
我的外中断程序就是进不去中断是什么原因啊,还望各位高手指点一下,在这先谢谢了
#include<avr/io.h>
#include<icc/macros.h>
#include<avr/interrupt.h>
#define uchar unsigned char
void delay(unsigned int ms) //延时1ms
{
uchar i; unsigned int j;
for(i=0; i<ms; i++)
for(j=0; j<1141; j++);
}
void shezhi() //中断设置
{
DDRD=BIT(0);
PORTD=BIT(0); //先将PD0位置高,等待底电平的触发
SEI(); //总中断使能
EICRA=0X00; //设置为底电平触发
EIMSK=BIT(0); //外中断0使能
}
SIGNAL(SIG_INTERRUPT0) //外中断0的入口函数
{
uchar i=0x02;
PORTC=i;
i++;
if(i==0xff) i=0x01;
delay(300);
PORTD=BIT(0); //再次将PD0复位进入主函数
}
int main()
{
DDRC=0xff; //将PC口设置为输出
shezhi(); //先设置中断
while(1) //等待下一次中断
{
delay(500);
PORTD&=~BIT(0); //软件复位,产生中断,进入中断子函数
}
} |