# define btn 2
bool debounce() {
  static uint16_t state = 0;
  state = (state<<1) | digitalRead(btn) | 0xfe00;
  return (state == 0xff00);
}
void setup() {
  pinMode(btn, INPUT_PULLUP);
  pinMode(8, OUTPUT);
}
void loop() {
  if (debounce()) {
    digitalWrite(8, !digitalRead(8));
  }
  delay(20);  // poor man's RTOS scheduler
}