外部中断5上升沿触发,按键按下后,进不了中断。电路图是:PE5下拉电阻接地,并且接一个按键,按键另一端接+5V.
#include <mega64.h>
#include <delay.h>
#define LEDALLON PORTC = 0x00;//PC口低电平时LED灯亮
#define LEDALLOFF PORTC = 0xff;
void PortInitial(void)
{
DDRC = 0xff;
PORTC = 0xff;
DDRE &= ~(1<<5);//PE5设置为输入,外部电路实现下拉
}
void DeviceInitial(void)
{
#asm("cli");
#asm("nop");
EIMSK = 0xff;
EIFR = 0x00;
// EICRB:ISCx1,ISCx0:00低电平触发 ,01任意电平变化触发,10下降沿触发,11上升沿触发
EICRB = ((1<<ISC50)|(1<<ISC51));
EIMSK = 1<<INT5;
#asm("sei");
#asm("nop");
}
void main(void)
{
PortInitial();
DeviceInitial();
while(1)
{
LEDALLON;
}
}
interrupt [EXT_INT5] void led5ctrl(void)
{
delay_ms(10);
while((PINE&0x20)==0x20)//等待释放
{
PORTC = 0xdf;
}
} |