在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();
}
我有一个使用多路复用显示 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();
}