按键时的处理

问题描述 投票:0回答:1

我有当前的代码,我试图添加一个toggle_speed()函数,这个函数将在主函数的if语句中被调用。else if (button_pushed() == 2). 我试图完成的是,当按钮被按下时,它的速度增加了一倍,但如果它被再次按下,速度将恢复到正常。这是我的代码,所有的帮助是感激的,IM相当新的。我们正在编程到AVR与ATmega324A工作。基本上,我需要帮助构建一个有效的toggle_speed函数,因为我所做的是最certai。

c button avr atmega
1个回答
1
投票

你基本上想要这样的东西。

volatile uint32_t background_speed, alien_speed, projectile_speed;
...

void toggle_speed(void){
  static int doublespeedactive;
  doublespeedactive = !doublespeedactive;

  if (doublespeedactive)
  {
    background_speed = 600;
    alien_speed =  400;
    projectile_speed = 300;
  }
  else
  {
    background_speed = 600 / 2;
    alien_speed =  400 / 2;
    projectile_speed = 300 / 2;
  }
}

doublespeedactive 是一个状态变量。如果它是1,那么双倍速度是激活的,如果它是0,那么正常速度是激活的。

doublespeedactive = !doublespeedactive; 切换值的 doublespeedactive 从1到0或从0到1。

阅读关于 ! 运营商。

然而你不叫 toggle_speed 的任何地方,所以这个答案可能不完整。

请注意 volatile 关键字是必要的,如果你想调用 toogle_speed 从一个ISR。

© www.soinside.com 2019 - 2024. All rights reserved.