1

C新手在这里,想知道是否有人可以指出一些阅读材料的方向来解决这个问题。我有 2 个寄存器和一个变量:

Register->Foo;
Register->Bar;
myVar;

myVar是数学函数的输出,结果被重复写入Register->Foo多个周期,然后当按下按钮时,myVar重复写入Register->Bar多个周期。

目前,我正在每个周期进行检查,如下所示:

if button not pressed:
    write myVar to Register->Foo
else
    write myVar to Register->Bar

但我真的只需要在按下按钮时进行检查,而不是每个指令周期。如何仅在按下按钮时更改 myVar 指向的位置,并在所有循环中都保持该设置,直到再次按下按钮?这样的事情可能吗?

OutputRegister = myVar // have this run all the time inside a loop

// somewhere else
OutputRegister = Register->Foo or Register->Bar 
// depending on button
// What data structure or method can I use to make this!
4

2 回答 2

0

您使用了一个额外的变量,例如is_assigned. 当按钮被按下时,它被设置为零(意思是“假”),然后你改变条件和分配,如下所示:

if (button_not_pressed && !is_assigned)
{
    if (button_not_pressed)
        Register->Foo = myVar;
    else
        Register->Bar = myVar;

    is_assigned = 1;
}

这意味着当button_not_pressed是真的,is_assigned是假的,那么做里面的陈述。然后设置为is_assigned真,下一次迭代条件将是假的。

于 2013-07-25T17:19:41.690 回答
0

您应该保留指向正确位置的指针。这样您就可以分配给它并在其他触发器上更改目标。

例如:

int foo;
int bar;
int * dest;

void on_button_press() {
    dest = &bar;
}

void on_button_release() {
    dest = &foo;
}

void main() {
    for (;;) {
        // code
        *dest = myVar;
        // code
    }
}
于 2013-07-25T17:24:22.920 回答