2013-05-06 2 views
-4

4x4 키패드에서 키를 치고 내가 쳤던 번호를 표시 할 때까지 기다리는 C 프로그램을 실행하려고합니다. 내가 조금씩하는 프로그램이지만 시작하자마자 끝나고 내 실수는 찾을 수 없습니다.디버깅! 프로그램이 실행되지 않습니다

#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

누군가 아래 투표를 설명 할 수 있습니까 ?? – Marmstrong

+0

사람들이 코드를 검토하도록 요청하면 투표가 종료됩니다. 질문은보다 집중적이고 구체적이어야합니다. –

+0

나는 여기에서 새롭고 그것을 모르고 있었다. 나는 이것을 오래 동안 붙들어 왔지만 계속 노력할 것입니다. 불편을 끼쳐 드려 죄송합니다. – Marmstrong

답변

1

분명히, \ n의 포함은 큰 차이가 :

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

항목은 상태이어야하며, 세 번째는 각 반복의 끝에서 할 수있는 일이 정보를 표시 할 때. 내 코드는 이론적으로 (구문 오류를 제외하고) 정확했지만 나는 그것을 볼 수 없었다.

2

for 루프 구문을 세 번 섞어 보았습니다.

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

좋은 장소! 자신 만의 코드를 보면 이러한 종류의 실수를 볼 수 없습니다 (FYI - 저는 C를 처음 접했습니다). 아직도 내 프로그램을 실행하는 데 도움이되지 않았다. – Marmstrong

관련 문제