极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10872|回复: 3

SOS!关于按键按下执行中断的问题

[复制链接]
发表于 2013-5-1 18:07:13 | 显示全部楼层 |阅读模式
int zdpin=2;
int k1=8;
int k2=9;
int k3=10;
int k4=11;
volatile int flag=0;
void setup()
{
  pinMode(k1,INPUT);
  pinMode(k2,INPUT);
  pinMode(k3,INPUT);
  pinMode(k4,INPUT);
  pinMode(zdpin,INPUT);
attachInterrupt(0,key,RISING);
  Serial.begin(9600);
}
void loop()
{
  if (flag==1)
   {Serial.println("1");
  flag=0;
  }
  if(flag==2)
{ Serial.println("2");
   flag=0;
  }
  if(flag==3)
  {Serial.println("3");
    flag=0;
}
if(flag==4)
{Serial.println("4");
   flag=0;
}
}
void key()
{
  if((digitalRead(k1)&digitalRead(zdpin))==0)
  flag=1;
  if((digitalRead(k2)&digitalRead(zdpin))==0)
  flag=2;
  if((digitalRead(k3)&digitalRead(zdpin))==0)
  flag=3;
  if((digitalRead(k4)&digitalRead(zdpin))==0)
  flag=4;
}
以上代码,想实现一个4*1的按键,按下一个按键在终端上显示相应的内容,但是4总是不能正常显示,而是在按下k1键或k2键随着输出:例如按下k1键后输出1 4 是怎么回事,各位大神帮帮忙,谢谢。
回复

使用道具 举报

发表于 2013-5-2 22:28:42 | 显示全部楼层
试一下用swith代替if或者后面三个if前面加上一个else
回复 支持 反对

使用道具 举报

发表于 2013-5-11 21:31:27 | 显示全部楼层
接线均是接的接的下拉电阻 ,还有后面应该是“==1” 就是 K1 和ZDPIN均按下时为1,与1相等执行相应的操作
回复 支持 反对

使用道具 举报

发表于 2014-1-8 09:47:02 | 显示全部楼层
我想问下,怎样才能够4个按键都能够使用中断? 外部中断口好像只有2个,怎么接线呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 22:53 , Processed in 0.035523 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表