Сейчас начал изучать AVR микроконтроллеры ( на СИ ) и ради практики делаю гирлянду с различными функциями. Заметил что некоторые делают бегущий огонь таким образом :
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
int main()
{
DDRB=0xFF; //Порт B как выход
while(1)
{
PORTB = 0b00000001; // Зажигаем 1 светодиод
_delay_ms(100); // Задержка
PORTB = 0b00000010; // 2
_delay_ms(100);
PORTB = 0b00000100;
_delay_ms(100);
// И так далее
}
}
И так по очереди зажигается каждый светодиод. Это первое что может прийти в голову, но всё же есть более "красивые" методы.