《Arduino开发实战指南:机器人卷》一2.5 中断函数

2.5 中断函数

单片机的中断可概述为:由于某一随机事件的发生,单片机暂停原程序的运行,转去执行另一程序(随机事件),处理完毕后又自动返回原程序继续运行,其发生过程如图2.2所示,其中中断源、主程序、中断服务程序简述如下。
中断源:引起中断的原因,或能发生中断申请的来源。
主程序:单片机现在运行的程序。
中断服务程序:处理中断事件的程序。

2.5.1 interrupts()和noInterrupts()

在Arduino中,interrupts函数与noInterrupts函数分别负责打开与关闭总中断,这两个函数均为无返回值函数,无参数。

2.5.2 attachInterrupt(interrput,function,mode)

attachInterrupt函数用于设置外部中断,有3个参数,分别表示中断源、中断处理函数和触发模式,它们的具体含义如下。
中断源:可选0或者1,对应2或者3号数字引脚。
中断处理函数:指定中断的处理函数,是一段子程序,当中断发生时执行该子程序部分,其中参数值为函数的指针。
触发模式:有四种类型——LOW(低电平触发)、CHANGE(变化时触发)、RISING(低电平变为高电平触发)、FALLING(高电平变为低电平触发)
数字引脚D2口接按钮开关,D4口接LED1(红色),D5口接LED2(绿色),LED3为板载LED灯,每秒闪烁一次。使用中断0来控制LED1,中断1来控制LED2。按下按钮,马上响应中断,由于中断响应速度快,LED3不受影响,继续闪烁。该示例的程序清单如下:

volatile int state1=LOW,state2=LOW;
int LED1=4;
int LED2=5;
int LED3=13;                    // 使用板载的LED灯
void setup()
{
  pinMode(LED1,OUTPUT);
  pinMode(LED2,OUTPUT);
  pinMode(LED3,OUTPUT);
  attachInterrupt(0,LED1_Change,LOW);        // 低电平触发
  attachInterrupt(1,LED2_Change,CHANGE);    // 任意电平变化触发
}
void loop()
{
  digitalWrite(LED3,HIGH);
  delay(500);
  digitalWrite(LED3,LOW);
  delay(500);
}
void LED1_Change()
{
  state1=!state1;
  digitalWrite(LED1,state1);
  delay(100);
}
void LED2_Change()
{
  state2=!state2;
  digitalWrite(LED2,state2);
  delay(100);
}

2.5.3 detachInterrupt(interrput)

detachInterrupt函数用于取消中断,参数interrupt表示所要取消的中断源。

时间: 2024-10-27 04:54:50

《Arduino开发实战指南:机器人卷》一2.5 中断函数的相关文章

《Arduino开发实战指南:机器人卷》一导读

前 言 单片机中各种复杂的寄存器曾让众多的学习者望而生畏--要完成某项功能需要耗费大量的时间去熟悉单片机的底层.Arduino的诞生,改变了这一局面.Arduino将各种寄存器封装起来,并提供了易用的接口,极其简洁的界面,C语言编程方式,强大的第三方函数库支持,这些功能赋予其强大的生命力.目前市面上开始出现不少Arduino的学习教程,包括Android+Arduino的教程,但是和机器人应用开发相结合的书籍尚不多见. 机器人是一个典型的光机电算一体化系统,它融合了光学.机械.电子.传感器.计算

《Arduino开发实战指南:机器人卷》一1.3 安装Arduino Uno驱动

1.3 安装Arduino Uno驱动 在应用Arduino开发环境进行程序设计前,首先要安装Arduino Uno控制板的驱动程序.本节介绍Arduino Uno驱动程序的常规安装方法,并对一种经常导致驱动安装不成功的情况给出了解决方法. 1.3.1 常规Arduino Uno驱动程序安装方法 准备一块Arduino Uno控制板和一条USB连接线,当第一次将Arduino Uno板与电脑相连时,电脑上会出现"找到新的硬件向导"对话框,如图1.3所示,同时控制板上的电源指示灯被点亮.

《Arduino开发实战指南:机器人卷》一1.4 Arduino开发环境

1.4 Arduino开发环境 Arduino开发环境的主界面如图1.12所示,除了包含File(文件).Edit(编辑).Sketch(概述).Tools(工具).Help(帮助)这5类菜单外,在菜单栏下方还提供了5个常用的快捷菜单按钮,它们依次为Verify(校验).Upload(上传).New(新建).Open(打开).Save(保存). 这5个快捷菜单按钮的具体功能如下: :Verify(校验),用于完成程序的检查和编译. :Upload(上传),用于将编译完成后的程序上传到Arduin

《Arduino开发实战指南:机器人卷》一第2章

第2章 Arduino的基本函数从第1章中我们已经初步了解了Arduino的易用性.自由性与交互性,然而它真正吸引众多爱好者是因为提供了大量的基础函数,包括I/O控制.时间函数.中断函数.数学函数.串口通信函数等,这些基础函数使单片机系统开发不再有复杂的底层代码,没有难懂的汇编语言,使用者可以方便地对板上的资源进行控制.另外,Arduino还提供了许多关于这些基础函数的示例程序,这些示例可以在Arduino开发环境的"File→Examples"菜单中找到,从而大大地降低了初学者的学习

《Arduino开发实战指南:LabVIEW卷》——2.1 Arduino IDE

2.1 Arduino IDE 2.1.1 Arduino IDE界面 双击Arduino应用软件的执行文件arduino.exe,打开Arduino开发环境. Arduino开发环境包含一个用于写代码的文本编辑器,一个消息显示区域,一个文本控制台,以及一个有常用功能按钮的工具栏和一系列菜单.它与Arduino硬件连接,可以进行程序下载以及通信.Arduino IDE界面如图2-1 所示. 使用Arduino编写的软件称为sketch.这些sketch在文本编辑器里编写.sketch以后缀名为.

《Arduino开发实战指南:机器人卷》一1.2 Arduino资源

1.2 Arduino资源 Arduino的出现,大大降低了互动设计的门槛,越来越多没有学过电子知识的人,如艺术家.设计师等,开始使用Arduino制作各种充满创意的作品.为了满足不同应用领域的要求,Arduino设计了多款不同型号的开发板,如Arduino Duemilanove.Arduino Nano.Arduino mini.Arduino BT.Arduino Fio.Arduino Uno等.本书针对后面章节的需要,介绍Arduino Uno与Arduino Mega2560两种开发

《Arduino开发实战指南:机器人卷》一1.1 认识Arduino

1.1 认识Arduino Arduino是一款源自意大利的开放源代码硬件项目平台,该平台是一块USB接口Simple I/O接口板(包括12通道数字GPIO,4通道PWM输出,6-8通道10bit ADC输入通道),并且使用类似Java.C语言的IDE(集成开发环境). Arduino的核心是基于AVR指令集的单片机,但它简化了单片机工作的流程,对AVR库进行了二次编译封装,将复杂的单片机底层代码封装成简单实用的函数,使用者无需关心单片机编程繁琐的细节,如寄存器.地址指针等,从而大大降低了单片

《Arduino开发实战指南:机器人卷》一3.1 直流电机简介

3.1 直流电机简介 直流电机是把电能转换成机械能的一种设备,它是利用通电线圈在磁场中受到磁场力矩的作用后会发生转动的原理制造的.图3.1.3.2.3.3是几种直流电机的实物图,由于直流电机的种类繁多,本书就不一一介绍了. 如图3.1所示的普通直流电机一般以电机直径命名,如260电机.360电机.540电机,它们分别是指直径为26mm.36mm.54mm的直流电机,通常直径越大,电机扭力也越强.如图3.2所示的空心杯电机,它具有良好的控制性能,它的转速与供电电压成正比,通过控制电机的供电电压就可

《Arduino开发实战指南:机器人卷》一3.5 常用电机驱动芯片介绍

3.5 常用电机驱动芯片介绍 实际应用时,用分立器件制作H桥式直流电机驱动电路比较麻烦,例如,控制不好易烧毁.需加入保护电路等.目前市面上有很多封装好的H桥集成电路,接上电源后,电机和控制信号就可以使用了,在额定的电压和电流范围内使用非常方便可靠,例如:L293D.L298N.TA7257P.SN754410等,本书将重点介绍常用的L298N电机驱动芯片. L298N是ST公司的产品,如图3.10所示,采用15脚Multiwatt封装,内部包含4通道逻辑驱动电路.L298N芯片可以同时驱动两个二