帮我看一下下面这个程序:为什么中断0可以(指示灯有变化),中断1却不可以?
#include <mega128.h>
#define uchar unsigned char
#define uint unsigned int
#define LED 7 //PORTB 0
//us级别的延时函数
void D_us(unsigned int u)
{
do
{
u--;
}
while(u>1);
}
//ms级别的延时函数
void D_ms(unsigned int m)
{
while(m!=0)
{
D_us(1000);
m--;
}
}
//中断服务程序
//INT7~INT0位1,且状态寄存器SERG的I标志置位时,相应的外部引脚中断就使能了,
//INT0引脚电平发生变化,产生中断
/*interrupt [EXT_INT0] void int_a(void)
{
uchar temp;
temp=SREG;
D_ms(100);
PORTB^=(1<<LED); //取反 ,LED
SREG=temp;
} */
interrupt [EXT_INT1] void int_b(void)
{
uchar temp1;
temp1=SREG;
D_ms(100);
PORTB^=(1<<LED); //取反 ,LED
SREG=temp1;
}
void main(void)
{
SREG=0x00; //禁止总中断
DDRB=0xff; // PORTB7输出
DDRD=0x00;
PORTB &=~(1<<LED); //清零 低电平点亮LED
SREG=0x80; //总中断允许
EIMSK=0x03; //INT0-INT1中断使能
EICRA=0x00;
while(1) //循环等待中断
{
;
}
} |