如果在

时间:2016-12-07 19:40:41

标签: c microcontroller attiny

目前我正在努力编写微控制器。

int main()
{
    init_ports();

    while(1){
        if(gameStatus == 1){
            gameStatus = 2;
            beep(120);
        }
    }
}

是我的主要游戏,gameStatus是一个全局的uint_8。它由一个按下按钮引起的中断设置。

ISR(INT0_vect){
    if(gameStatus == 0)
        gameStatus = 1; // that works

}

然而,主要根本不会识别gameStatus。这有什么原因可以吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

感谢wildplasser!

更改

uint8_t gameStatus = 0;

volatile uint8_t gameStatus = 0;

做了这个伎俩。

https://en.wikipedia.org/wiki/Volatile_(computer_programming)