“第十九课--Microduino 内部基准源ADC采样”的版本间的差异
(Created page with "{| style="width: 800px;" |- | ==目的== 了解中断,并通过按键来学习掌握中断的用法。 ==中断== ===中断的基本原理=== 一个正在做的事情被外...") |
(没有差异)
|
2014年3月2日 (日) 14:13的版本
目录目的了解中断,并通过按键来学习掌握中断的用法。 中断中断的基本原理一个正在做的事情被外部的事情打断,当执行完外部事情后,继续做原本的事情。例如:老师在上课,有同学迟到要进教室突然打断老师上课请老师准许进教室,老师准许之后又开始讲课,这就是中断。 中断概念所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序。 由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理该事件的一个程序。该程序执行完成后,CPU接着执行被暂停的程序。这个过程称为中断。 中断分类
中断好处
设备Microduino-Core Microduino-FT232R
原理图
程序
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);
}
}
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;
}
结果结果 未使用中断时按下开关,按住一会儿LED状态才能改变,使用中断之后LED状态就会立刻变化。 中断语法
重新分配中断中断可以再任何时候通过attachInterrupt()命令进行改变。当重新使用attachInterrupt()时,先前分配的中断就会从对应引脚上移除。 启用\停止中断microduino也可以忽略所有中断。如果你需要在一段代码中不执行中断,只需要执行 noInterrupts()命令。当这段代码执行完以后,你可以使用 interrupts()命令重新启用中断。 删除中断终端也可以通过detachInterrupt(interrupt_number)命令进行删除。 注意事项当中断函数发生时,delya()和millis()的数值将不会继续变化。当中断发生时,串口收到的数据可能会丢失。你应该声明一个变量来在未发生中断时储存变量。 |