/* ATmega8, 48, 88, 168, 328 /Reset PC6|1 28|PC5 seg_A PD0|2 27|PC4 seg_B PD1|3 26|PC3 seg_C PD2|4 25|PC2 seg_D PD3|5 24|PC1 seg_E PD4|6 23|PC0 Vcc|7 22|Gnd Gnd|8 21|Aref PB6|9 20|AVcc PB7|10 19|PB5 SCK Anode_1 seg_F PD5|11 18|PB4 MISO Anode_2 seg_G PD6|12 17|PB3 MOSI Anode_3 dot PD7|13 16|PB2 Anode_4 PB0|14 15|PB1 */ #define F_CPU 1000000UL // 1 MHz standard clock #include // defines all macros and symbols #include // defines time delay functions uint8_t framebuffer[4] = {0b00111111,0b00000110,0b01011011,0b01001111}; int main (void) { uint8_t i; DDRD = 0b11111111; // all pins of PORT D as output DDRB = 0b00111100; // some pins of PORT B as output while (1) // infinite main loop { for (i=0; i<4; i++) { PORTB &= 0b11000011; // all digits off PORTB |= (0b00000100 << i); // activate digit #i PORTD = ~framebuffer[i]; // output bit pattern _delay_ms(500); // wait 500 ms } } }