![Arduino项目开发:音乐创意](https://wfqqreader-1252317822.image.myqcloud.com/cover/779/27111779/b_27111779.jpg)
1.4.6 中断函数
什么是中断?在日常生活中,中断非常常见,如图1-24所示。
你在看书时,电话铃响了,于是在书上做个记号,去接电话,与对方通话;门铃响了,有人敲门,你让打电话的对方稍等一下,去开门,并在门旁与来访者交谈,谈话结束,关好门;回到电话机旁,继续通话,接完电话后再回来从做记号的地方继续阅读。
同样的道理,在单片机中也存在中断概念,如图1-25所示。在计算机或者单片机中中断是由于某个随机事件的发生,计算机暂停主程序的运行,转去执行另一程序(随机事件),处理完毕后又自动返回主程序继续运行的过程。也就是说高优先级的任务中断了低优先级的任务。在计算机中中断包括如下几部分:
中断源——引起中断的原因,或能发生中断申请的来源。
主程序——计算机现行运行的程序。
中断服务子程序——处理突发事件的程序。
![](https://epubservercos.yuewen.com/353D95/15477657705643506/epubprivate/OEBPS/Images/Figure-P25_7805.jpg?sign=1739049743-LI27bzOX9dK63AEBOFOEu7xXAURCs9qZ-0-a44668a6ce1f3da12012d240c913c289)
图1-24 中断的概念
![](https://epubservercos.yuewen.com/353D95/15477657705643506/epubprivate/OEBPS/Images/Figure-P25_7809.jpg?sign=1739049743-ogRtkVp41FW23hUgQWAcKTaqczXC9MCH-0-dbaef7e8f188301ef0ee3a66465dc0d2)
图1-25 单片机中的中断
1. attachInterrupt(interrput,function,mode);
该函数用于设置中断,有3个参数,分别表示中断源、中断处理函数和触发模式。中断源可选0或者1,对应数字引脚2、数字引脚3。中断处理函数是一段子程序,当中断发生时执行该子程序部分。触发模式有4种类型,LOW(低电平触发)、CHANGE(变化时触发)、RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)。
例程功能如下:引脚2接按钮开关,引脚4接LED1(红色),引脚5接LED2(绿色)。在例程中,LED3为板载的LED,每秒闪烁一次。使用中断0控制LED1,中断1控制LED2。按下按钮,马上响应中断,由于中断响应速度快,LED3不受影响,继续闪烁。使用不同的4个参数,例程1试验LOW和CHANGE参数,例程2试验RISING和FALLING参数。
例程1:
![](https://epubservercos.yuewen.com/353D95/15477657705643506/epubprivate/OEBPS/Images/Figure-P25_15732.jpg?sign=1739049743-toGrhzGkDlPqSAu3rS9wVZM3bIeo5v6u-0-c5821fe5bc7746f2545cca9b19bcd744)
例程2:
![](https://epubservercos.yuewen.com/353D95/15477657705643506/epubprivate/OEBPS/Images/Figure-P26_15738.jpg?sign=1739049743-DJ28VW5el9xb4yHZCTnQrrTLgI9X2gum-0-7847d416cc8a6d689139907dbed462ae)
2. detachInterrupt(interrput);
该函数用于取消中断,参数interrupt表示所要取消的中断源。