查看“第十九课--Microduino 内部基准源ADC采样/zh”的源代码
←
第十九课--Microduino 内部基准源ADC采样/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{Language|第十九课--Microduino_内部基准源ADC采样}} {| style="width: 800px;" |- | ==目的== 了解中断,并通过按键来学习掌握中断的用法。 ==中断== ===中断的基本原理=== 一个正在做的事情被外部的事情打断,当执行完外部事情后,继续做原本的事情。例如:老师在上课,有同学迟到要进教室突然打断老师上课请老师准许进教室,老师准许之后又开始讲课,这就是中断。 ===中断概念=== 所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序。 由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。该程序执行完成后,CPU接着执行被暂停的程序。这个过程称为中断。 ===中断分类=== *中断源的位置 **中断源在CPU的内部,称为内部中断; **中断源在CPU的外部,称为外部中断。 *中断引脚的不同或者CPU响应中断的不同条件:可屏蔽中断和不可屏蔽中断。 ===中断好处=== *实行分时操作提高 CPU 的效率,只有当服务对象向CPU发出中断申请时才去为它服务,这样我们就可以利用中断功能同时为多个对象服务,从而大大提高了CPU的工作效率。 *实现实时处理,利用中断技术,各个服务对象可以根据需要随时向 CPU 发出中断申请,及时发现和处理中断请求。 ==设备== '''[[Microduino-Core]]''' '''[[Microduino-FT232R]]''' *其他硬件设备 **面包板跳线 一盒 **面包板 一块 **LED发光二极管 一个 **220欧姆电阻 一个 **按键 一个 **USB数据连接线 一根 ==原理图== *'''Microduino core:两路外部中断,分别为D2、D3;''' *'''Microduino core+:三路路外部中断,分别为D2、D3和D6。''' [[File:lesson19-schematic.jpg|600px|center|thumb]] ==程序== *不使用外部中断 <source lang="cpp"> int botton= 2; // 定义输入信号引脚 int pin = 13; volatile int state = LOW; void setup() { // 设置输入信号引脚为输入状态、输出引脚为输出状态 pinMode(botton,INPUT); pinMode(pin,OUTPUT); } void loop() { state = digitalRead(botton); //读取微动开关状态 digitalWrite(ledOut, state); //把读取的状态赋予LED指示灯 //模拟一个长的流程或者复杂的任务 for (int i = 0; i < 100; i++) { //延时10毫秒 delay(10); } } </source> *使用外部中断 <source lang="cpp"> int pin = 13; volatile int state = LOW; void setup() { pinMode(pin, OUTPUT); attachInterrupt(0, blink, RISING); } void loop() { digitalWrite(pin, state);//把读取的状态赋予LED指示灯 //模拟一个长的流程或者复杂的任务 for (int i = 0; i < 100; i++) { //延时10毫秒 delay(10); } } void blink() { state = !state; } </source> ==结果== 结果 未使用中断时按下开关,按住一会儿LED状态才能改变,使用中断之后LED状态就会立刻变化。 ==中断语法== *语法: **attachInterrupt(interrupt, function, mode) *参数: **interrupt:中断引脚数 **function:中断发生时调用的函数,该函数会取代正在执行的程序,此函数必须不带参数和不返回任何值。该函数有时被称为中断服务程序。 **mode:定义何时发生中断以下四个contstants预定有效值: ***LOW: 当引脚为低电平时,触发中断 ***CHANGE: 当引脚电平发生改变时,触发中断 ***RISING :当引脚由低电平变为高电平时,触发中断 ***FALLING :当引脚由高电平变为低电平时,触发中断. ===重新分配中断=== 中断可以再任何时候通过attachInterrupt()命令进行改变。当重新使用attachInterrupt()时,先前分配的中断就会从对应引脚上移除。 ===启用\停止中断=== microduino也可以忽略所有中断。如果你需要在一段代码中不执行中断,只需要执行 noInterrupts()命令。当这段代码执行完以后,你可以使用 interrupts()命令重新启用中断。 ===删除中断=== 终端也可以通过detachInterrupt(interrupt_number)命令进行删除。 ==注意事项== 当中断函数发生时,delya()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。 |}
返回至
第十九课--Microduino 内部基准源ADC采样/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息