美文网首页Arduino 专题学习
项目13:Arduino外部中断

项目13:Arduino外部中断

作者: 0137赵春天 | 来源:发表于2019-06-07 10:51 被阅读1次

一、中断的概念

中断(Interrupt)是计算机的一个重要概念,现代计算机普遍采用中断技术。中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

具体什么是中断呢?

CPU执行时原本是按程序指令一条一条向下顺序执行的。 但如果此时发生了某一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务).  待CPU将事件B处理完毕后, 再回到原来被中断的地方继续执行程序(中断返回),这一过程称为中断 。

就比如说:你正在读书,这时候门铃响了。你把手中的书放下,去开门。客人进来以后,你继续回来读书,并且从原来读的地方继续往下读。这里的门铃就是中断请求,去开门就是中断相应。

当中断发生时,程序执行流程图示如下:

中断的分类、外部中断与内部中断

外部中断:一般由外设发出中断请求,如:键盘中断、打印机中断、外部中断需外部中断源发出中断请求才能发中断。

内部中断:内部中断主要为定时中断,定时中断是指主程序在运行一段程序过后自动进行的中断服务程序。

现代计算机中采用中断系统的主要目的是

①提高计算机系统效率。计算机系统中处理机的工作速度远高于外围设备的工作速度。通过中断可以协调它们之间的工作。当外围设备需要与处理机交换信息时,由外围设备向处理机发出中断请求,处理机及时响应并作相应处理。不交换信息时,处理机和外围设备处于各自独立的并行工作状态。

②维持系统可靠正常工作。现代计算机中,程序员不能直接干预和操纵机器,必须通过中断系统向操作系统发出请求,由操作系统来实现人为干预。主存储器中往往有多道程序和各自的存储空间。在程序运行过程中,如出现越界访问,有可能引起程序混乱或相互破坏信息。为避免这类事件的发生,由存储管理部件进行监测,一旦发生越界访问,向处理机发出中断请求,处理机立即采取保护措施。

③满足实时处理要求。在实时系统中,各种监测和控制装置随机地向处理机发出中断请求,处理机随时响应并进行处理。

④提供故障现场处理手段。处理机中设有各种故障检测和错误诊断的部件,一旦发现故障或错误,立即发出中断请求,进行故障现场记录和隔离,为进一步处理提供必要的依据。

二、外部中断

支持外部中断的引脚:Nano中支持外部中断输入的引脚的引脚为d2,d3

中断函数及其用法:

attachInterrupt(interrupt,function,mode)

1)  interrupt:中断号,UNO只用0,1,即代表D2,D3口

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

3)mode:中断触发模式

放在 void setup() 中

以下是中断模式及其解释:

三、实例程序:利用PWM按钮手动十档调光

实验器材: 

1、Anduino Nano开发板

2、配套USB数据线

3、面包板及配套连接线

4、1个LED灯

5、2个电阻

代码:

int flag = 0;

void setup()

{

pinMode(2, INPUT);

pinMode(9, OUTPUT); //该端口需要选择有#号标识的数字口

}

void loop()

{

int up = digitalRead(2); //读取2号口的状态

if (up == HIGH) //判断2号口目前是否是高电平

{

flag = flag + 5; //每次累加值为5

if (flag >= 255) {

flag = 255;

} //限定最大值为255

analogWrite(9, flag); //使用PWM控制9号口输出,变量n的取值范围是0-255

delay (300);

}

}

以上代码可以直接复制使用,电路连接图如下:

相关文章

网友评论

    本文标题:项目13:Arduino外部中断

    本文链接:https://www.haomeiwen.com/subject/mwhmxctx.html