2013-03-23 7 views
0

그래서 CCS 컴파일러를 사용하여 PIC를 프로그래밍하고 있습니다. 타이머 인터럽트를 사용하고 있는데이 인터럽트는 크로노 미터라는 함수를 호출합니다. 이것은가는 방법입니다두 번 이상 함수 호출

void timer2_isr() 
{ 
    j++; 
    l++; 
    z++; 
    if (j==1) 
    { 
     timero=1; 
     btndly=1; 
     j=0; 
    } 
    user1= chronometer(x, l); 
    user2= chronometer(pad.deger, z); 
} 

이 함수는 struct를 반환하고 인수로 두 개의 정수를 사용합니다. 방금 함수를 호출하면 제대로 작동합니다. 그러나이 경우처럼 함수를 두 번 호출하면 user2는 user1과 동일하고 코드가 제대로 작동하지 않을 때도 마찬가지입니다. 왜 그런가?

chrono chronometer(int enable, int milicounter) 
{ 
    chrono time; 
    if(enable==1 && milicounter>=25)  // Eğer kronometre aktif haldeyse 
     { 
     milicounter=0; 
     time.sec++; 
     if(time.sec==60) 
     { 
      time.sec=0; 
      time.min++; 
     } 
     if(time.min==60) 
     { 
      time.min=0; 
      time.hour++; 
     } 
     if(time.hour==24) 
      time.hour=0; 
     } 
    return time; 
} 
+1

크로노 미터 코드를 게시 할 수 있습니까? – octopusgrabbus

+0

함수를 추가했습니다. – serpence

+0

동일한 매개 변수를 전달할 수 있습니까? – Alon

답변

0

이 .. 당신이 그것의 회원을 재설정하지 않고 시간 구조체를 사용하기 시작 예기치 않은 결과가 초래되는 것 그리고 그것은 어떻게 든 초기화해도 .. 그렇게 분명히, 입력 매개 변수를 참조하지 않습니다 결과는 동일합니다 ..

+0

예 구성원을 재설정하지 않고 시간 구조체를 사용합니다. 시간에서 값을 지울 필요가 없다고 생각했습니다. 함수는 매 40 밀리 초마다 동시에 호출됩니다. 그러나 첫 번째와 두 번째 반환 값을 어떻게 분리 할 수 ​​있습니까? – serpence

+0

무엇을 의미합니까? 입력 변수에 대한 참조가 없으면 왜 다른가? – Alon

+0

저는 C에서 약간 녹슬 었어요. 나는 함수가 호출 될 때마다, 같은 주소를 가진 다른 주소를 사용한다고 생각했습니다. 그래서 내가하고 싶은 것은 기본적으로 함수가 호출 될 때마다 리턴 변수를 분리하는 것입니다. – serpence

관련 문제