Arduino教程入门系列-第十九课-Arduino中断的使用
中断的基本原理
要搞清楚什么是中断,我们可以从生活中的一个例子了解下。
你正在家里看电视,突然家里座机响了,你起身去接电话,接完电话后继续回来看电视。
这就是生活中的中断现象,也就是一个正在做的事情被外部的事情打断,当执行完外部事情后,继续做原本的事情。
什么是中断?
所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序
由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。该程序执行完成后,CPU接着执行被暂停的程序。这个过程称为中断。
根据中断源的位置,有两种类型的中断。有的中断源在CPU的内部,称为内部中断。大多数的中断源在CPU的外部,称为外部中断。
根据中断引脚的不同,或者CPU响应中断的不同条件,也可以把中断划分为可屏蔽中断和不可屏蔽中断两种。
使用中断的好处
1、 实行分时操作 提高 CPU 的效率 只有当服务对象向 CPU 发出中断申请时 才去为它服务 这样 我们就可以利用中断功能同时为多个对象服务 从而大大提高了 CPU 的工作效率
2、 实现实时处理
利用中断技术 各个服务对象可以根据需要随时向 CPU 发出中断申请 及时发现和处理中断请求并为
进入正题
我们在本次试验中使用ocrobot mango(Arduino UNO兼容板),IDE使用1.0.1版本。
在OCROBOT MANGO(UNO也一样)中,有两个可以使用的外部中断,0(数字引脚2)和1(数字引脚3),本次例子中我们使用D2引脚作为中断引脚,使用A0引脚控制LED。原理图如下:
2012-10-28 16:15 上传
(110.7 KB)
标准的数字输入与输出--没有中断
如果你按照上面的电路图进行了接线,把下面的代码编译上传进入Arduino。
代码用来读取你输入的值,然后作为条件进行比较,
ARDUINO 代码复制打印
int pbIn = 2; // 定义输入信号引脚
int ledOut = A0; // 定义输出指示灯引脚
int state = LOW; // 定义默认输入状态
void setup()
{
// 设置输入信号引脚为输入状态、输出引脚为输出状态
pinMode(pbIn, INPUT);
pinMode(ledOut, OUTPUT);
}
void loop()
{
state = digitalRead(pbIn); //读取微动开关状态
digitalWrite(ledOut, state); //把读取的状态赋予LED指示灯
//模拟一个长的流程或者复杂的任务
for (int i = 0; i < 100; i++)
{
//延时10毫秒
delay(10);
}
}<br />
下面视频是该代码的实验效果,按下开关,LED状态不会立刻改变,要按住一会儿才能改变。