MicroController handledning del 10: Att skapa ett spel (knappen spelet) (2 / 4 steg)
Steg 2: Koden
#include < avr/io.h > #include < util/delay.h > void ProcessPressedButton (int ButtonPressed);
void ProcessReleasedButton (int ButtonReleased);
int Pressed_Confidence_Level [2].
int Released_Confidence_Level [2].
int pressad [2].
int LEDNumber [2].
int main(void)
{
DDRB = 0b01111111;
DDRD = 0b01111111;
PORTB = 0b10000000;
PORTD = 0b10000000; samtidigt (1)
{
om (bit_is_clear (PINB, 7))
{
ProcessPressedButton(0);
}
annat
{
ProcessReleasedButton(0);
}
om (bit_is_clear (PIND, 7))
{
ProcessPressedButton(1);
}
annat
{
ProcessReleasedButton(1);
}
{}} void ProcessPressedButton (int ButtonPressed)
{
Pressed_Confidence_Level [ButtonPressed] ++;
om (Pressed_Confidence_Level [ButtonPressed] > 500)
{
om (tryckte [ButtonPressed] == 0)
{
Tryckte [ButtonPressed] = 1;
om (ButtonPressed == 0) PORTB | = 1 << LEDNumber [ButtonPressed];
om (ButtonPressed == 1) PORTD | = 1 << LEDNumber [ButtonPressed];
LEDNumber [ButtonPressed] ++;
om (LEDNumber [ButtonPressed] > 6)
{
för (int jag = 0; jag < 10; i ++)
{
om (ButtonPressed == 0) PORTB = 0b11111111;
om (ButtonPressed == 1) PORTD = 0b11111111;
_delay_ms(10);
om (ButtonPressed == 0) PORTB = 0b10000000;
om (ButtonPressed == 1) PORTD = 0b10000000;
_delay_ms(10);
}
LEDNumber [0] = 0;
LEDNumber [1] = 0;
PORTB = 0b10000000;
PORTD = 0b10000000;
}
}
Pressed_Confidence_Level [ButtonPressed] = 0;
}
} void ProcessReleasedButton (int ButtonReleased)
{
Released_Confidence_Level [ButtonReleased] ++;
om (Released_Confidence_Level [ButtonReleased] > 500)
{
Tryckte [ButtonReleased] = 0;
Released_Confidence_Level [ButtonReleased] = 0;
}
}