#include #define xtal 1000000 char digits[8]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07}; unsigned char; unsigned char p_state; unsigned char key; unsigned char i; void main(void) { PORTB=0x00; DDRB=0xFF; DDRD = 0xFF; PORTD = digits[0]; DDRC = 0x00; PORTC = 0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 15.625 kHz // Mode: Phase correct PWM top=FFh // OC0 output: Non-Inverted PWM TCCR0=0x63; TCNT0=0x00; OCR0=10; while (1) { if(!PINC.0) { if(key!=p_state) { if(i==7) { i=0; PORTC=digits[0]; } else i++; PORTD = digits[i]; OCR0 = i*10+10; p_state=key; }; } else p_state=0xFF; }; }