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

Updating data inside an infinite loop in c

我有一个使用多路复用显示 7 段显示器数字的功能。根据我对如何多路复用的了解,您需要启用您希望显示的第一个片段,同时禁用第二个片段,要打印第二个片段,您需要禁用第一个片段并启用第二个片段,并且您需要放置这是一个无限循环,以便数据将成功打印。

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

我的代码:

对于我的主要功能:

     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 是房间的整数温度。

您有 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();
}