我正在尝试运行一个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;
}
答案 0 :(得分:2)
您已将您的for
循环语法混淆了三次。
for(colnum = 0; colnum++; colnum < 4)
第二个条目应该是条件,第三个是每次迭代结束时要做的事情:
for (colnum = 0; colnum < 4; colnum++)
答案 1 :(得分:1)
显然,包含\ n在显示信息方面有很大的不同。我的代码在理论上是正确的(除了语法错误),但我看不到它。