请各位大侠帮我看看这个中断程序,在ATMEGA8里无法进入中断!程序如下:
#include <iom8v.h>
#include<macros.h>
void delay_nus(unsigned int us)
{
unsigned int i;
i = us/2;
i--;
asm("nop"); asm("nop");
for(;i!=0;i--)
{
asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop");
asm("nop"); asm("nop"); asm("nop");
}
}
void delay_nms(unsigned int t)
{
for(;t>0;t--)
delay_nus(1100);
}
void main(void)
{
DDRD &= ~(1 << DDD3); //PD3外部中断1口设置为输入
PORTD |= (1 << PORTD3); //PD3上拉电阻使能
DDRC=0xff; //设置PC口为输出
PORTC=0X00; //设置PC口输出为低电平
MCUCR |= (1 << ISC11);//INT1 下降沿触发
MCUCR&=~(1 << ISC10);
GICR |= (1 << INT1); //INT1 中断使能
SREG|=BIT(7); //使能全局中断
while(1)
;
}
//外部中断1服务程序
#pragma interrupt_handler exint1_isr:0x02
void exint1_isr(void)
{
SREG&=~BIT(7);
PORTC^= 0xff; //PC口接LED指示灯
delay_nms(150);
SREG|=BIT(7);
} |