AVR的外部中断INT示例程
扫描二维码
随时随地手机看文章
使用AVR的外部中断INT1检测PD3Key,如果有按键按下,则唤醒休眠的MCU,并使它的PB口的LED做加1指示。
#include
#include"D:ICC_HCmmICC.H"
#defineDISP_DDRDDRB
#defineDISP_PORTPORTB
#defineIN_PD3cbi(DDRD,3)//PD3
#defineSET_PD3sbi(PORTD,3)
#defineGET_PD3gbi(PIND,3)
/*--------------------------------------------------------------------
程序名称:外部中断服务程序
程序功能:
注意事项:
提示说明:
输入:
返回:
--------------------------------------------------------------------*/
#pragmainterrupt_handlerint1_isr:3
voidint1_isr(void)
{
GICR&=0b01111111;//dISAbleint1interrupt
DISP_PORT++;//显示口指示加1,指示被按次数
delay50ms(4);
GICR|=0b10000000;//enableint1interrupt
}
/*--------------------------------------------------------------------
程序名称:外部中断初始化程序
程序功能:
注意事项:
提示说明:
输入:
返回:
--------------------------------------------------------------------*/
voidint1_init()
{
IN_PD3;//setPD3/INT1asinput
SET_PD3;//setPD3/INT1asoutput,highlevel,avoidtriggering
MCUCR|=0b11110011;//setPD3/INT1aslowlevelactive
GICR|=0b10000000;//enableglobalinterrupt
SEI();//enableexternalinterrupt
}
/*--------------------------------------------------------------------
程序名称:
程序功能:
注意事项:
提示说明:
输入:
返回:
--------------------------------------------------------------------*/
voidmain(void)
{
DISP_DDR=0xFF;
DISP_PORT=0x00;
int1_init();
asm("sleep");//setmcuassleepmodle
while(1);
}