调试!程序将无法运行

时间:2013-05-06 17:39:02

标签: c debugging raspberry-pi

我正在尝试运行一个c程序,它将等待我在4x4键盘上按键,然后显示我已击中的数字。我有点运行的程序,但只要我启动它就结束,我找不到我的错误。

 #include <wiringPi.h>
 #include <stdio.h>

 #define COL1     11
 #define COL2     10
 #define COL3     6
 #define COL4     5
 #define ROW1     4
 #define ROW2     3
 #define ROW3     2
 #define ROW4     1

 #define DET      0

 int colnum;
 int rownum;

 int keyinterrupt (void)
 {
      int col[] = {COL1, COL2, COL3, COL4};
      int row[] = {ROW1, ROW2, ROW3, ROW4};
      int reset;
      for(colnum = 0; colnum++; colnum < 4)
      {
           for(reset = 0; reset++; reset < 4)
           {
                digitalWrite(col[reset], 0);
           }

           digitalWrite(col[colnum], 1);

           for(rownum = 0; rownum++; rownum < 4)
           {
                if(digitalRead(row[rownum]))
                {return 0;}
           }
      }
 }

 int main (void)
 {
      pinMode(COL1, OUTPUT);
      pinMode(COL2, OUTPUT);
      pinMode(COL3, OUTPUT);
      pinMode(COL4, OUTPUT);
      pinMode(ROW1, INPUT);
      pinMode(ROW2, INPUT);
      pinMode(ROW3, INPUT);
      pinMode(ROW4, INPUT);

      if(wiringPiISR (DET, INT_EDGE_RISING, &keyinterrupt) < 0)
      {
           printf("Unable to setup ISR");
           return 1;
      }

      while(1)
      {
           while(!DET)
           {
                delay(1);
           }

           printf("The key pressed was at Col:%i Row:%i", colnum, rownum);
      }
      return 0;
 }

2 个答案:

答案 0 :(得分:2)

您已将您的for循环语法混淆了三次。

for(colnum = 0; colnum++; colnum < 4)

第二个条目应该是条件,第三个是每次迭代结束时要做的事情:

for (colnum = 0; colnum < 4; colnum++)

答案 1 :(得分:1)

显然,包含\ n在显示信息方面有很大的不同。我的代码在理论上是正确的(除了语法错误),但我看不到它。

相关问题