//Если нажать кнопку и отпустить - загориться светодиод. Если повторно нажать и отпустить кнопку - светодиод погаснет.
#include <avr/io.h>
int main(void)
{
DDRD=0x00;
DDRB=0xFF;
PORTB=0xFF;
PORTD=0x7F;
ACSR=0x80;
while(1)
{
while((PIND&(1<<PIND0))) //PIND0-это просто 0.Сдвинуть влево на 0 бит 1-цу,
{ //and с PIND.Если в PIND 0-й бит 1,то бесконечный
} //цикл,если 1,то выходим из цикла.
if ((PINB&(1<<PINB0))) //Если после and 1
{
PORTB&=(~(1<<PB0)); //то скидываем бит
}
else
{
PORTB|=(1<<PB0); //иначе подымаем 1-й бит
}
while(!(PIND&(1<<PIND0)))//Результат выражения такойже как и первый выше,
{ //но со знаком not(!) всё наоборот.
}
}
}