attachInterrupt(interrupt, function, mode)

====== attachInterrupt(interrupt, function, mode) ======


===== description =====


当发生外部中断时,调用一个指定函数。当中断发生时,该函数会取代正在执行的程序。大多数的Arduino板有两个外部中断:0(数字引脚2)和1(数字引脚3)。


arduino Mege有四个外部中断:数字2(引脚21),3(20针),4(引脚19),5(引脚18)。
===== 语法 =====


interrupt:中断引脚数
\\ function:中断发生时调用的函数,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。
\\ mode:定义何时发生中断以下四个contstants预定有效值:
  * LOW 当引脚为低电平时,触发中断
  * CHANGE 当引脚电平发生改变时,触发中断
  * RISING 当引脚由低电平变为高电平时,触发中断
  * FALLING 当引脚由高电平变为低电平时,触发中断.
===== 返回 =====



===== 注意事项 =====


当中断函数发生时,delay()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。
===== 使用中断 =====


在单片机自动化程序中当突发事件发生时,中断是非常有用的,它可以帮助解决时序问题。一个使用中断的任务可能会读一个旋转编码器,监视用户的输入。


如果你想以确保程序始终抓住一个旋转编码器的脉冲,从来不缺少一个脉冲,它将使写一个程序做任何事情都要非常棘手,因为该计划将需要不断轮询的传感器线编码器,为了赶上脉冲发生时。其他传感器也是如此,如试图读取一个声音传感器正试图赶上一按,或红外线槽传感器(照片灭弧室),试图抓住一个硬币下降。在所有这些情况下,使用一个中断可以释放的微控制器来完成其他一些工作。
===== 程序示例 =====
<code cpp>
int pin = 13;
volatile int state = LOW;


void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);
}


void loop()
{
  digitalWrite(pin, state);
}


void blink()
{
  state = !state;
}
</code>




[[arduino:arduino_language_reference|返回主菜单]] 


**相关讨论请访问[[http://www.geek-workshop.com|极客工坊]]**




版权说明:本词条由极客工坊团队发布维护,转载请说明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值