似水流年 发表于 2014-9-23 18:46:08

串口中断!!!转载


int pin = 13;
int state = LOW;


void setup(){
pinMode(pin, OUTPUT);
attachInterrupt(0, blink, RISING);
Serial.begin(9600);
}

void loop(){
digitalWrite(pin, state);
}


void blink()
{
state = !state;
Serial.println("button clicked");
}


转载http://my.oschina.net/tangkikodo/blog/142995

ninjiafan 发表于 2014-9-23 21:17:31

什么意思哦?串口中断???

Super169 发表于 2014-9-24 00:25:47

本帖最后由 Super169 于 2014-9-24 00:27 编辑

從程式看, 是想當 Int.0 相關的 pin 出現 RISING 時, 就把 state 相反了, 同時顯示字句.
之後 loop 會改變 pin 13, 即燈會由開變關, 關變開.

不過, 在 interrupt 中執行 Serial.print, 好像不太好, interrupt 程序應該是盡量簡單為主.

似水流年 发表于 2014-9-27 09:19:41

ninjiafan 发表于 2014-9-23 21:17 static/image/common/back.gif
什么意思哦?串口中断???

对,,这样能不能模拟串口中断

sam 发表于 2014-10-31 23:55:35

似水流年 发表于 2014-9-27 09:19 static/image/common/back.gif
对,,这样能不能模拟串口中断

我认为你的思路反了。
试试这样:

//....
int Int_0 = 2;    //Most Arduino boards have two external interrupts: numbers 0 (on digital pin 2)
                     // and 1 (on digital pin 3).
void setup()
{
   //...
   attachInterrupt(0,blink,rising);
}
void loop()
{
if(Serial.available()>0)
{
   serial.print();
   digital.write(Int_0 ,low);
   digital.write(Int_0 ,high);    //在串口操作中触发、并产生外部中断。
   }   


此法的意图就是在使能外部中断0之后,在主程序中通过串口接收、用软件操作Int_0 管脚,达到外部中断条件后,用外部中断闪烁LED来显示串口动作。近似产生串口中断。

似水流年 发表于 2014-11-10 00:14:42

sam 发表于 2014-10-31 23:55 static/image/common/back.gif
我认为你的思路反了。
试试这样:



这样主程序一直在被占用,干不了别的,不能叫中断,叫轮询

似水流年 发表于 2014-11-10 00:15:53

sam 发表于 2014-10-31 23:55 static/image/common/back.gif
我认为你的思路反了。
试试这样:



目的不是检测中断,而是利用外部中断实现串口中断

sam 发表于 2014-11-27 22:40:21

那好吧,你好像自己找到答案了:lol

海阔凭鱼跃 发表于 2015-8-15 00:19:25

这还是外部中断 不是串口中断
页: [1]
查看完整版本: 串口中断!!!转载