Arduino 外部中断

第一篇Arduino的日志啧啧。

中断的概念。

中断装置和中断处理程序统称为中断系统

我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。

在Arduino库中定义,UNO有两个中断,MEGA2560有六个中断。具体如下表,来自 http://arduino.cc/en/Reference/AttachInterrupt

image

DUE普及率非常一般,暂不涉及。

语法。

attachInterrupt(interrupt, function, mode)

变量使用。

1)interrupt:中断号,UNO只能使用 0或1 ,即代表D2 与D3口。

2)function:调用中断函数,中断发生时调用的函数。

3)mode:中断触发模式。

UNO R3 支持四种中断触发模式:

LOW 当针脚输入为低时,触发中断
CHANGE 当针脚输入发生改变时,触发中断
RISING 当针脚输入由低变高时,触发中断
FALLING 当针脚输入由高变低时,触发中断

 

中断函数不返回任何值。

中断函数的使用方法:

首先给出一段来自官方的例程:

int pin = 13;          //首先我们需要找一个灯来观察
volatile int state = LOW;    //设置灯状态

void setup()
{
  pinMode(pin, OUTPUT);
  attachInterrupt(0, blink, CHANGE);    //设置触发,中断号0,即数字2口
}

void loop()
{
  digitalWrite(pin, state);        //对观察灯写入状态值
}

void blink()            //触发函数
{
  state = !state;            //将状态变量求反
}

我们从中可以看出,使用中断函数时,不需要定义针脚状态,直接使用中断函数即可。

当我们需要取消中断时,我们有下面的命令。

detachInterrupt(interrupt)

interrupt 是中断号。执行此语句后,系统不会对中断有反应,即上例中,系统不会再对灯状态进行改变。

posted @ 2013-02-06 11:23 传说中的福利君 阅读(...) 评论(...) 编辑 收藏