在使用单片机外部中断1时,可定义电平或者下降沿触发。
很多人在使用下降沿触发时,老是碰到这样的问题。同一个信号来触发时进入中断2次,或者多次进入中断函数。
造成这样的原因:第一、可能是中断信号有抖动,导致多次进入中断。第二、软件设计中,当进行中断响应处理时,关闭外部中断,当处理程序结束后,采用软件延时,再次请求中断。保证中断响应的不被再次中断请求打断。
1.对信号进行处理,估计是信号下降沿出现抖动
2.用单片机延时处理下降沿信号
2) 边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。
3) 中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
1. 进入中断,关闭中断
2. 把中断方式改为"电平" !!!!
3. 在主程序中循环扫描了N次
4. 把中断方式改为"边缘" !!!!
5. 开中断
中断标志位 是不能软件控制的, 以下方法可把中断标志位清零:
关中断 --- 电平 ---- 边缘
边缘: 下降沿触发方式 setb it0 | setb it1
电平: 低电平触发方式 clr it0 | clr it1
联系客服