当前位置:首页 > 单片机 > 单片机
[导读] 使用AVR的外部中断INT1检测PD3Key,如果有按键按下,则唤醒休眠的MCU,并使它的PB口的LED做加1指示。 #include#include"D:ICC_HCmmICC.H"#defineDISP_DDRDDRB#defineDISP_PORTPORTB#defineIN_PD3cbi(DD

使用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);
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭