0

したがって、CCSコンパイラを使用してPICをプログラミングしています。タイマー割り込みを使用していますが、この割り込みは、2回書き込んだクロノメーターと呼ばれる関数を呼び出します。これがその方法です

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

この関数は構造体を返し、引数として2つの整数を取ります。関数を1回呼び出すだけで、正常に機能します。ただし、この場合のように、関数を2回呼び出すと、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;
}
4

1 に答える 1

0

メンバーをリセットせずにtime構造体を使用し始めているようです。その結果、予期しない結果が発生します。また、何らかの方法で初期化されたとしても、入力パラメーターを参照しないため、結果は明らかに同じになります。

于 2013-03-23T18:59:29.317 に答える