Подключение кнопки к микроконтроллеру

#define F_CPU 8000000L
#include <avr/io.h>
int main(void){
	unsigned char drebezg=5; //тактов на дребезг кнопки, чем хуже кнопка, тем выше число
	unsigned char butcount=0;
	DDRD = 0xFF; //порт D на выход, например зажигаем светодиоды и т.д.
	PORTD = 0b00000000; //все биты порта D = 0
	DDRB = 0x00; //порт B на вход
	PORTB = 0b00000001; //нулевой бит подтянут к 1. К этой ножке подключена кнопка. Кнопка замыкает нулевую ножку порта B на землю.
	while(1){
		if (!(PINB&0b00000001)){
// PINB - регистр состояния порта B. Побитно посмотреть не можем на СИ, поэтому проверяем так:
// PINB&0b00000001 - проверяем нулевой бит порта B, что он = 1 (кнопка не нажата), остальные биты не учитываются.
// !(PINB&0b00000001) - проверяем, что нулевой бит порта B, не равен 1 (!=1), т.е. кнопка нажата, остальные биты не учитываются
			if(butcount < drebezg){butcount  ;} //пропускаем такты на дребезг нажатия кнопки
			else{PORTD = 0b00000001;}
		} 
		else{
			if(butcount > 0){butcount--;} //пропускаем такты на дребезг отжатия кнопки
			else{PORTD = 0b00000000;}
		}
	}
}