原文:http://www.arduino.cn/thread-2421-1-1.html
1.什么是中断?
试想一下,你正在家里吃饭,这时传来了敲门声,虽然你巨饿,虽然面前全是山珍海味,但此时你不得不去开门,同时不得不放停下生命中最重要的事情——吃饭。打开门后,你发现只是一个查水表的,你检查了水表读数并告诉了查水表的人。关上门,你马不停蹄的又投入了于食物的作战中。
我们来分析一下这个颇具传奇性的故事,在这里人生的主旋律——吃饭,就是你的主程序,而敲门声,就是一个中断信号,它让你不得不去执行你的人生插曲——开门接客这个中断函数。完成这个小插曲后,你又要投入到主线剧情 吃饭这个主程序上。
现在我想告诉你一个惊天秘密,其实你妈欺骗了你,你根本不是他们亲生的,你是人造人,而你的大脑里装备了一个arduino控制器!你的型号是 Arduino 吃货,之所以叫这么2的名字,是因为你的loop的写法问题。我们来看看你的loop函数。
1
2
3
|
void
loop() {
吃();
}
|
1
2
3
4
5
6
7
|
void
开门(){
打开门;
if
(门口的人==女神)
跪舔();
if
(门口的人==查水表的)
报告水表读数();
}
|
1
2
3
|
void
setup(){
attachInterrupt(耳朵, 开门, 敲门声);
//耳朵传感器在此不做介绍,有兴趣的自行研究
}
|
1
2
3
4
|
void
holle()
{
Serial.println(
"holle"
);
}
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
int
pin = 13;
volatile
int
state = LOW;
void
setup()
{
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, CHANGE);
//当int.0电平改变时,触发中断函数blink
}
void
loop()
{
digitalWrite(pin, state);
}
void
blink()
//中断函数
{
state = !state;
}
|