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

标签 c infinite-loop

我有一个功能,可以使用多路复用方式显示 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();
}

关于c - 在c中的无限循环内更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29202842/

相关文章:

javascript - 使用 GraalVM 在 Java 中读取/加载 Javascript 时如何退出无限 JS 执行循环?

c - C 中的 memset() 未初始化为 const double;

C – 将可变数量的参数传递给 main

c - 采访 : deleting a node in linked list

c - 如何在运行时查找所有全局变量?

java - 带有迭代器 hasNext() 和 next() 的无限 while 循环

javascript - 为什么我使用 componentWillReceiveProps 收到此错误?

jQuery .animate() 回调无限循环

c# - 如何找出记录数最大的数组编号?