📄 ext_int.c
字号:
#include "config.h"
SIGNAL(SIG_INTERRUPT1) //INT1中断服务程序
{
//硬件自动清除INTF1标志位
//这里全局中断被打开,将允许其他中断嵌套执行
_delay_ms(10);
if ((PIND&(1<<EXT_INT1))==0)
LED1_ON(); //点亮LED1
loop_until_bit_is_set(PIND,EXT_INT1);
_delay_ms(10);
}
void EXt_Init(void)
{
MCUCR=(1<<ISC11)|(1<<ISC10); /*设置为上升沿触发中断1*/
/*
ISCx1:0=00 INTx引脚为低电平时产生中断请求
ISCx1:0=01 INTx引脚上任意的逻辑电平变化都将引发中断
ISCx1:0=10 INTx引脚的下降沿产生中断请求
ISCx1:0=11 INTx引脚的上升沿产生中断请求
*/
GIFR=(1<<INTF1);//写1清除标志位,在使能中断前最好先把对应
// 的标志位清除,以免误触发
GICR=(1<<INT1); //使能三个外部中断
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -