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);
}

此函数返回一个结构并以 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 回答