diff --git a/speedyleds/Makefile b/speedyleds/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..374e6c6850c25461780808bf696d26d75e1e3836 --- /dev/null +++ b/speedyleds/Makefile @@ -0,0 +1,8 @@ +speedyleds.hex: speedyleds.o + avr-objcopy -j .text -j .data -O ihex speedyleds.o speedyleds.hex + +speedyleds.o: + avr-gcc speedyleds.c -o speedyleds.o -Wall -Wextra -Wpedantic -mmcu=atmega328p -Os -std=c99 + +flash: + avrdude -p atmega328p -c gpio -U flash:w:speedyleds.hex diff --git a/speedyleds/speedyleds.c b/speedyleds/speedyleds.c new file mode 100644 index 0000000000000000000000000000000000000000..a292693cffa98781a5d08628e119c5e8758ebb2b --- /dev/null +++ b/speedyleds/speedyleds.c @@ -0,0 +1,31 @@ +#define F_CPU 12000000UL + +#include<util/delay.h> +#include<avr/io.h> +#include<avr/libc.h> + +int main(void){ + DDRD = 0b11111100; + DDRB = 0b00111111; + PORTD = 0b00000011; + PORTB = 0b00000000; + char on = 0; + while(1){ + while(!on){ + if(PORTD != 0b11111111) PORTD = (PORTD<<1)+1; + else{ + if(PORTB != 0b11111111) PORTB = (PORTB<<1)+1; + else on=1; + } + _delay_ms(250); + } + while(on){ + if(PORTB != 0b00000000) PORTB = (PORTB-1)>>1; + else{ + if(PORTD != 0b00000011) PORTD = (PORTD-1)>>1; + else on=0; + } + _delay_ms(250); + } + } +}