13869| 2
|
Arduino外部中断 |
本帖最后由 丄帝De咗臂 于 2015-6-12 10:49 编辑 一、什么是中断 1.中断是CPU在正常时,由于内部/外部事件引起CPU暂停正在运行的程序,而转到该事件的程序中去,执行完毕,再返回去执行暂时中断的程序。举一例子,假如你正在用手机玩消消乐,女朋友来喊你出去逛街。这时,你只能暂停游戏去逛街。逛街回来,可以继续玩o(∩_∩)o 这个例子就表现了中断及其处理过程:女友要求去逛街称为“中断请求”,你暂停游戏去逛街叫作“中断响应”,陪女友逛街的过程就是“中断处理”。 2.根据中断源的位置,有两种中断:有的中断源在CPU的内部,称为内部中断;大多数的中断源在CPU的外部,称为外部中断。 根据中断引脚的不同,或者CPU响应中断的不同条件,也可以把中断划分为可屏蔽中断和不可屏蔽中断两种。 二、计算机为什么要采用中断 1.实行分时操作:可以利用中断功能同时为多个对象服务,以提高CP的工作效率。 2.实现实时处理:通过中断,各个服务对象可以根据需要随时CP发出中断申请。 三、中断函数 大部分的Arduino板子里有两个外部中断: numbers 0 (on digital pin 2) and 1 (on digital pin 3)。 Mege有四个外部中断:numbers 2(数字针脚21),3(20),4(19),5(18)。 1.外部中断的语法:attachInterrupt(interrupt, function, mode),即attachInterrupt(中断号,中断函数,中断模式)。 中断模式:LOW 当中断管脚是低电平时触发 CHANGE 当中断管脚有高低电平变化时触发 RISING 当中断管脚是上升延时触发(从低电平变高电平) FALLING 当中断管脚是下降延时触发(从高电平变低电平) 2.删除中断:detachInterrupt(interrupt_number) 3.忽略所有中断:noInterrupts() 4.重新启用中断:interrupts() 注意事项:当中断函数时,delay()和millis()的数值将不会继续变化,串口收到的数据可能会丢失,应该声明一个变量来在未发生中断时储存变量。 四、示例程序
|
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed