Всем привет. Снова взялся за Си. Прошлые попытки провалились. Если не найду ответа в гугл или здесь, вопросы буду писать в эту тему
Вопрос в следующем.
#define F_CPU 8000000
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
unsigned char i=0;
DDRD = 0xFF;
PORTD = 0x00;
while (1)
{
for ( i=0; i<=7; i++ )
{
PORTD = (1<<i);
_delay_ms(500);
}
for ( i=0; i<=7; i++ )
{
PORTD = ~(1<<i);
_delay_ms(500);
}
}
}
Во втором цикле for, как я понимаю должно быть так.в момент входа в цикл PORTD все биты нули. И при выполнении строки PORTD = ~(1<<i); ни чего не должно происходить.
так как запись нуля в ноль ни чего не произойдёт. Но как только доходит до этой строки все биты PORTD выставляются в единицы. И потом начинает тухнуть один светодиод с сдвигом влево.
Объясните пожалуйста почему так. Вроде это побитовые операции,