一、中断的概念
中断(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);
}
}

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

网友评论