STC15单片机外部中断仅上升沿触发的方法
2017-06-21 20:25
471 查看
STC15系列单片机的外部中断0(INT0)和外部中断1(INT1)的触发有两种方式,上升沿和下降沿均可触发方式和仅下降沿触发方式。在实际应用中,有时候需要上升沿触发。这时有两种方案可以解决。
1.将触发方式设置成仅下降沿触发。当外部电路产生一个上升沿时,通过硬件电路加一个三极管进行反向变成下降沿。
2.这种方法不需要改变硬件电路。将触发方式设置成上升沿和下降沿均可触发方式。外部中断产生一个上升沿时,进入中断服务函数,这时在中断服务函数里做进一步处理,检测当前INT0的电平状态。如果是高电平,则判断为上升沿。如果是低电平,则判断为是下降沿。
注意(很重要!): 进入中断服务函数后,一定要延时几个毫秒再去做电平检测。因为不管是上升沿还是下降沿,都不可能是在一个瞬间完成的,中间会经历一个从高(低)到低(高)的过程。
如果进入中断服务函数就立刻检测,可能当时电平还没有达到满足高或低电平的默认电压值或者处于高和低之间的临界电压状态,很可能出现误判的现象。这样做的目的是让跳变后的电平达到稳定状态再检测,说白了就是一个去抖动的过程。
下面把初始化和中断服务函数的代码贴出来:
在实际做东西的过程中遇到的一个小问题,希望对你有帮助。
1.将触发方式设置成仅下降沿触发。当外部电路产生一个上升沿时,通过硬件电路加一个三极管进行反向变成下降沿。
2.这种方法不需要改变硬件电路。将触发方式设置成上升沿和下降沿均可触发方式。外部中断产生一个上升沿时,进入中断服务函数,这时在中断服务函数里做进一步处理,检测当前INT0的电平状态。如果是高电平,则判断为上升沿。如果是低电平,则判断为是下降沿。
注意(很重要!): 进入中断服务函数后,一定要延时几个毫秒再去做电平检测。因为不管是上升沿还是下降沿,都不可能是在一个瞬间完成的,中间会经历一个从高(低)到低(高)的过程。
如果进入中断服务函数就立刻检测,可能当时电平还没有达到满足高或低电平的默认电压值或者处于高和低之间的临界电压状态,很可能出现误判的现象。这样做的目的是让跳变后的电平达到稳定状态再检测,说白了就是一个去抖动的过程。
下面把初始化和中断服务函数的代码贴出来:
void Initial_INT0(void) { INT0=0; IT0=0; // 设置成上升沿和下降沿均触发 EX0=1; //使能INT0中断 EA=0; } void exint0() interrupt 0 //外部中断入口 { delay_ms(50); //延时消抖 if(INT0==1) //如果检测到INT0=1,则判断为上升沿 { led=0; delay_ms(500); led=1; } else led=1; }
在实际做东西的过程中遇到的一个小问题,希望对你有帮助。
相关文章推荐
- 关于STM32外部中断EXTI10-15,EXTI5-9共用一个中断向量处理方法
- 基于UC/COSII系统的STM32F103系列单片机外部中断按键的一种使用方法
- 外部中断之上升沿触发程序
- EXTI外部中断触发:神舟IV
- STC单片机不需要按电源开关下载的方法!
- STC单片机精确延时参数测定方法
- 51单片机外部中断小练习
- 关于51单片机“外部中断触发方式”的经验总结
- 51单片机外部中断示例
- 单片机中断的运算方法
- 单片机定时中断的精确定时编程方法种种
- 单片机实验3(外部中断)
- 51单片机解决中断和主程序共享全局变量的方法
- OK6410 linux3.0.1 外部中断组1~9无法request_irq的解决方法
- 51单片机以定时中断的方法实现DS18B20时序
- stc15系列单片机ISP编程失败率是相当高啊!
- 关于51单片机“外部中断触发方式”的经验总结
- [E Design]关于(触摸屏)外部中断去抖动的方法
- 菜鸟带你秒杀单片机之51单片机篇—外部中断
- 单片机外部中断返回不了主程序。。。