在c中无限循环内更新数据

时间:2015-03-23 03:28:24

标签: c infinite-loop

我有一个功能,可以显示使用多路复用的7段显示的编号。根据我所知道的如何进行多路复用,您需要在禁用第二段时启用您希望显示的fisrt段,并打印第二段,您需要禁用第一段并启用第二段,然后您需要放置这是一个无限循环,以便数据成功打印。

现在我的问题是要显示的数据正在发生变化,并且需要不断更新,但在我的代码中,我无法更新无限循环内的数据,因此它被卡在其收到的第一个值中。

我的代码:

对于我的主要功能:

     Void main(){
      while(1){
        displaytemp(TEMP);
       }
      }

Void displaytemp(int temp){
 While(1){
  Int tens = temp/10;
  Int ones = temp%10;
  Print(tens);
  Enable first 7seg
  Disable second 7seg
  Delay();
  Print(ones);
  Disable first 7seg
  Enable second 7seg
  }

  }

TEMP来自中断源,如果我不将其置于无限循环内,它会不断更新,但它只能显示1位数。 TEMP是整个房间的温度。

1 个答案:

答案 0 :(得分:1)

你有2个无限循环 - 内循环(在displaytemp中)阻塞第一个循环。这是处理它的一种方法:

void main(){
  while(true){
      int temperature = get_temp();
      display_digit(first, temp/10);
      display_digit(second, temp%10);
  }
}

void display_digit(segment, int digit){
  if (segment == first) enable_7seg(first);
  else disable_7seg(first);
  if (segment == first) enable_7seg(second);
  else disable_7seg(second);

  Print(digit);
  Delay();
}