#include unsigned char min; unsigned char min_e=0; unsigned char min_d=0; unsigned char ura_e=0; unsigned char ura_d=0; unsigned char izpis; unsigned char nast; interrupt [TIM0_OVF] void timer0_ovf_isr(void) { TCNT0=12; // vrednost za 250 ms @ 1M if (++min==240) // 4*60 = 240 = 1 min { min=0; ++min_e; } if (min_e==10) // ko je enica minut 10, gre na nič ter poveča desetico minut { min_e=0; ++min_d; } if (min_d==6) // ko je desetica minut 6, gre na nič, poveča enico ure { min_d=0; ++ura_e; } if ((ura_e==10 && ura_d<2) || (ura_e==4 && ura_d==2))// ko je enica ur 10 ali 4 poveča ure { min_d=0; ++ura_e; } if (ura_d==3) ura_d=0; // nastavitve if (++nast==4) { nast=0; if (PIND.0==1) { ++ura_d; izpis=0; } if (PIND.1==1) { ++ura_e; izpis=0; } if (PIND.2==1) { ++min_d; izpis=10; } if (PIND.3==1) { ++min_e; izpis=10; } } // izpis je v binarni obliki, pri urah doda še zgornjo LED if (++izpis==20) izpis=0; if (izpis<10) PORTB=0b10000000+ura_d*16+ura_e; if (izpis>=10) PORTB=min_d*16+min_e; } void main(void) { //CLKPR=0x80; //CLKPR=0x00; PORTB=0x00; DDRB=0xFF; PORTD=0x7F; DDRD=0x00; TCCR0A=0x00; TCCR0B=0x05; TIMSK=0x02; #asm("sei") while (1) { // Place your code here }; }