В кода който си постнал, няма кой да загаси светодиода. Пробвай този код:
#include <avr/io.h>
#include <avr/delay.h>
#define F_CPU 4000000UL
int main(void)
{
DDRD=0xff;
DDRC=0x00;
while (1) {
if (PINC&_BV(PC5)){
PORTD|=_BV(PD1); //пали светодиода ако PC5=1
}
else{
PORTD&=~_BV(PD1); //гаси светодиода ако PC5=0
}
}
}
За тези които се чудят какво е _BV, това е вграден макрос. Дефиниране е по следния начин:
#define _BV(bit) (1 << (bit)) и следователно _BV(PC5) е еквиеалентно на (1<<PC5)
И накрая ако PC5 е оставан висящ във въздуха, няма гаранция какво ще бъде неговото входно състояние.