查看: 307|回复: 1

[未解决] 中断异常

[复制链接]

该用户从未签到

发表于 2019-4-13 20:45 | 显示全部楼层 |阅读模式
为啥我这个程序只能中断一次,下一次没反应了


#include <Keypad.h>
#include <Wire.h>
int mykey;
int key=2;
unsigned int data=0;
unsigned char frist_one;
unsigned char frist_two;

unsigned char shu_frist;
unsigned char shu_two;
unsigned char shu_three;
unsigned char shu_end;

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {10,9, 8, 7}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,5, 4, 3}; //connect to the column pinouts of the keypad

//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

    void blink()
       {
        digitalWrite(13,!digitalRead(13));
        skey();
        }
void setup(){
    Serial.begin(9600);
    pinMode(13,OUTPUT);
    attachInterrupt(0,blink,CHANGE);
}
void readKeyboard()
{
  bgn:
  char customKey = customKeypad.getKey();
  if (customKey!=NO_KEY){
switch(customKey)
{
case '1' : data=1;break;
case '2' : data=2;break;
case '3' : data=3;break;
case '4':data=4;break;
case '5':data=5;break;
case '6':data=6;break;
case '7':data=7;break;
case '8':data=8;break;
case '9':data=9;break;
case '0':data=10;break;
case '*':data=11;break;
case '#':data=12;break;
case 'A' : data=13;break;
case 'B' : data=14;break;
case 'C':data=15;break;
case 'D':data=16;break;
default:break;
}
}
else
goto bgn;
  }  


  void skey()
{
   readKeyboard();
    if(data==11)
    {
        shu_frist=1;
      }
      if(shu_frist==1)//绗竴浣�
      { bga:
        if((data==1)|| (data==2)||(data==3)||(data==4)|| (data==5)|| (data==6)|| (data==7)|| (data==8)|| (data==9)|| (data==10))
        {
             frist_one=data;
             Serial.print(frist_one);
             shu_frist=0;
             shu_two=1;
          }
       }
       if(shu_two==1)//绗﹀彿
      {
        if((data==13)|| (data==14)|| (data==15)|| (data==16))
        {

             shu_two=0;
             shu_three=1;
          }
       }

        if(shu_three==1)//绗笁浣�
      {
         if((data==1)||(data==2)||(data==3)||(data==4)||(data==5)||(data==6)||(data==7)||(data==8)||(data==9)||(data==10))
        {
             frist_two=data;
             Serial.print(frist_two);
             shu_three=0;
             shu_end=1;
          }
       }
        if(shu_end==1)//璁$畻
      {
         if(data==12)
        {     mykey=frist_one*10+frist_two;
              Serial.println(mykey);
             shu_end=0;
          }
       }
}   

void loop()
{

  }




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

本版积分规则

热门推荐

哪位老哥有个U8g2lib.h这个库可以发一下吗
哪位老哥有个U8g2lib.h这
光线跟踪钛合金猫眼
光线跟踪钛合金猫眼
+视频 https://www.bilibili.com/video/av67732712/ +原理 ---光线跟踪 建立极
"高精度"米家电子温湿度计Pro拆解
"高精度"米家电子温湿度计
为了了解哪种温湿度传感器更好,我搞了一个米家电子温湿度计Pro(阿蒙同志赠送) 价格
Blinker 模拟传感器+数字传感器例程(DHT11 温湿度+气体传感)
Blinker 模拟传感器+数字
才接触1星期,发现Blinker自带了很多例程,已经成功试验了DHT的例程序,并完善了体
关于ADXL335加速度计相关问题
关于ADXL335加速度计相关
首先用测试程序,通过监视器看到获取到的模拟量 后面,把模拟量经过ADC以及公式换算
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
快速回复 返回顶部 返回列表