const byte digit[10] = {
0b01000000, // 0
0b01111001, // 1
0b00100100, // 2
0b00110000, // 3
0b00011001, // 4
0b00010010, // 5
0b00000010, // 6
0b01111000, // 7
0b00000000, // 8
0b00010000 // 9
};
int count = 0;
int direction = 1;
void setup() {
DDRD = 0xFF; // (2-7)
PORTD = 0xFF;
}
void loop() {
displayDigit(count);
delay(1000);
count += direction;
if (count >= 9) {
direction = -1;
} else if (count <= 0) {
direction = 1;
}
}
void displayDigit(int num) {
uint8_t segments = digit[num];
PORTD = (PORTD & 0x00) | segments;
}