При условии, что на считывающем входе PB4 имеется внешний pull-up резистор, а светодиод зажигается подачей лог. 0, я бы так написал эту прогу
Код
#define KB_SCAN1 0x01 //маска для сканирующей линии
#define KB_LINE1 0x10 //маска для считывающей линии
#define LED_OUT 0xFF // маска для светодиода
int main( void )
{ unsigned char t1,t2;
DDRB=0x0F;
DDRD=0xFF;
t2=0;
t1=t2;
while(1)
{ PORTB&=~KB_SCAN1; //установим сканирующую линию
t1=~PINB&KB_LINE1; //опросим считывающую линию
PORTB|=KB_SCAN1; //сбросим сканирующую линию
if (t2==t1) //состояния одинаковы?
{ //да, значит состояние кнопки устройчивое
if (t1==0x00) PORTD|=LED_OUT;//погасим LED, если кнопка отжата
else PORTD&=~LED_OUT; //зажжем LED, если кнопка нажата
}
else t2=t1;
__delay_cycles(160000); //задержка для устранения дребезга
}
}