#include <avr/io.h>//input output
#define F_CPU 16000000UL//kecepatan clock
int main(){
DDRD = 0xFF;
PORTD |= (1<<7);
delay_ms(750);//delay 750ms
PORTD &= ~(1<<7);
while(1){
for(int i=6; i>=0;--i){ //Active running LED from center to edge
PORTD |= (1<<i);
delay_ms(750);//delay 750ms
PORTD &= ~(1<<i); }
for(int i=1; i<=7;++i){ //Active running LED from center to edge
PORTD |= (1<<i);
delay_ms(750);//delay 750ms
PORTD &= ~(1<<i); }
}
}
void delay_ms(uint16_t milliseconds) {
while(milliseconds) {
// Mengatur prescaler 64 untuk timer1 (16-bit timer) untuk periode 1 ms
TCCR1B |= (1 << CS11) | (1 << CS10); // Prescaler 64
TCNT1 = 0; // Reset counter value
while (TCNT1 < 125); // Timer akan menghitung sebanyak 125 siklus untuk 1 ms pada prescaler 64
milliseconds--;
}}