// ura na LCD 2x16, CodeVisionAVR #include #asm // Alphanumeric LCD Module functions .equ __lcd_port=0x18 ;PORTB #endasm #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 { ura_e=0; ++ura_d; } 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; } } if (++izpis>5) { izpis=0; lcd_gotoxy(0,1); // izpis na LCD lcd_putchar(ura_d+48); lcd_putchar(ura_e+48); lcd_putchar(':'); lcd_putchar(min_d+48); lcd_putchar(min_e+48); } } void main(void) { PORTB=0x00; DDRB=0xFF; PORTD=0x7F; DDRD=0x00; TCCR0A=0x00; TCCR0B=0x05; TIMSK=0x02; lcd_init(16); // LCD module initialization lcd_gotoxy(0,0); lcd_putsf("CIRIUS Kamnik"); #asm("sei") while (1) { // Place your code here }; }