8 портов - 8 светодиодов, первое зажигание на
i == 0
И на сколько я понимаю, когда i == 7 и выполняется зажигание последнего(8 диода), i становится 8 и в проверке должно поменяться flag на 1 и сделать i == 6, чтобы загорелся предпоследний светодиод. (бесконечная дорожка из светодиодов), но всё почему-то не так.
int main(void)
{
DDRD = 0xFF;
PORTD = 0x00;
char i = 0;
char flag = 0;
while(1)
{
if(flag == 0) {
PORTD = (1 << i);
i++;
}
if(flag == 1) {
PORTD = (1 << i);
i--;
}
if(i == 8) {
flag = 1;
i--;
}
if(i == 0) {
flag = 0;
i++;
}
_delay_ms(200);
}
}
А вот этот код работает, как я и хотел, только я не пойму, почему
int main(void)
{
DDRD = 0xFF;
PORTD = 0x00;
char i = 0;
char flag = 0;
while(1)
{
if(flag == 0) {
PORTD = (1 << i);
i++;
}
if(flag == 1) {
PORTD = (1 << i);
i--;
}
if(i == 7) {
flag = 1;
}
if(i == 0) {
flag = 0;
}
_delay_ms(200);
}
}