单片机在用脉冲方式(低电平触发方式)时,为了防止重复响应外部中断,可以在中断程序中查询外部中断引脚状态,若仍为低电平,则等待,直到变为高电平时才返回主程序。也可以外加硬件电路,消除引脚上的低电平。
在脉冲方式中,若在连续两个机器周期中采样到先高后低的电平变化,则将中断请求标志位置“1”,此标志位一直保持到CPU响应中断时,才由硬件自动清除。
单片机中要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置两个触发寄存器,同时在中断屏蔽寄存器的相应位写1允许中断请求。
当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置l。在挂起寄存器的对应位写1,将清除该中断请求。如果需要产生事件,必须先配置好并使能事件线。根据需要的边沿检测通过设置两个触发寄存器,同时在事件屏蔽寄存器的相应位写1允许事件请求。
当事件线上发生了需要的边沿时,将产生一个事件请求脉冲,对应的挂起位不被置1。通过在软件中断/事件寄存器写1,也可以通过软件产生中断/事件请求。
参考资料来源:百度百科-外部中断
脉冲方式中,若在连续两个机器周期中采样到先高后低的电平变化,则将中断请求标志位置“1”,此标志位一直保持到CPU响应中断时,才由硬件自动清除。所以为了防止重复响应外中断,需保证CPU在两个机器周期内检测到由高到低的负跳变,输入高电平和低电平的持续时间均要保持12个振荡周期,即一个机器周期的时间。
要是按键的话,要消抖。否则为什么要防止重复呢,中断程序还没有执行完之前是不允许再次申请中断的。
在中断返回之前,进行延时一段时间。
响应后关断中段