program Casovnik 'Časovnik za vklop UV žarnice 'Nastavitev časa od 1 do 9 minut 'PIC16F84, kristal 4 MHz, 7-segmentni LED display dim oldstate1 as byte 'Spremenljivko oldstate1 definiraj kot bajt dim oldstate2 as byte 'Spremenljivko oldstate2 definiraj kot bajt dim i as byte 'Spremenljivko i definiraj kot bajt dim tabela as byte[10] 'Na 10 polj si lahko vpišemo 8 bitno število (to so one številke za izpis na LED displayu main) sub procedure Odstevaj_Alarm(dim minut as byte) 'Procedura kaj se zgodi ob Odstevaj_Alarm 'Odšteva čas od nastavljene vrednosti do 0 'Ob zagonu procedura vklopi RA2 - led, RA3 - rele 'Ob izteku časa izklopi led in rele dim j,k,port as byte 'Spremenljivke j,k,port definiraj kot bajt PORTA=%00001100 'Vklop releja(RA3) in LED(RA2) for j= minut to 1 step -1 'Odštevanje od nastavljenih minut do 0minut for k = 1 to 60 'k se povečuje po 1 do 60, ko pride do 60 zmanjša minuto za 1 manj in ponovi postopek if k mod 2 = 0 then 'Vsaki 2 sekundi se prižge pika na displayu - mod pomeni, da ti vrne ostanek od deljenja port=tabela[j] or %00000001 'Izpiše se vrednost na kateri je (1,2,3,..) in hkrati piko else 'Ali port=tabela[j] 'Neka cifra(binarno) iz tabele se napiše v port-izpiše se številka na kateri je end if 'Konec if stavka PORTB=port 'Ta vrednost iz tabele npr. številka 5 se prepiše sem na PORTB delay_ms(1000) '1sekunda zakasnitve next k 'Najprej izvede to for zanka, ko je k=1, nato se k poveča za 1 na 2 in spet ponovi to for zanko in tako naprej do 60 next j 'Naslednji j PORTA=%00000000 'Izklop releja in LED_displeya, ko so potekle minute PORTB=tabela[0] 'Od zgoraj izklopi rele in LED, ter nato izpiše na LED_displeyu vrednost 0 end sub 'Konec procedure main: 'Tu se uporablja ta tabela, ko ima noter 10 številk tabela[0] =252 '0 'Binarna vrednost %11111100 tabela[1] =96 '1 'Binarna vrednost %01100000 tabela[2] =218 '2 'Binarna vrednost %11011010 tabela[3] =242 '3 'Binarna vrednost %11110010 tabela[4] =102 '4 'Binarna vrednost %01100110 tabela[5] =182 '5 'Binarna vrednost %10110110 tabela[6] =190 '6 'Binarna vrednost %10111110 tabela[7] =224 '7 'Binarna vrednost %11100000 tabela[8] =254 '8 'Binarna vrednost %11111110 tabela[9] =246 '9 'Binarna vrednost %11110110 oldstate1 = 0 'Začetno stanje je 0 oldstate2 = 0 'Začetno stanje je 0 i = 0 'Začetno stanje je 0 TRISA = %00000011 'RA0 in RA1 vhod, od RA2 dalje so izhodi TRISB = %00000000 'PORTB izhod PORTA = %00000000 'Ko gremo v glavni program je na PortuA vse nič PORTB = tabela[0] 'Tote cifre iz tabele (tabela[0]=%11111100) se vnesejo na PORTB while true 'Neskončna zanka, ki se skoz izvaja if i>9 then 'Povečuje i do 9, če je več i=0 'ga ponovno postavi na 0, da ne gre naprej npr. 10,11 PORTB = tabela[0] 'Tote cifre iz tabele (tabela[0]=%11111100) se vnesejo na PORTB ko greš čez 9 end if 'Konec if stvaka if (Button(PORTA, 0, 1, 0)) then 'Tipka SET; Prva številka: port RA0; Druga številka: zakasnitev 1ms-debounce to je ono ko malo zaniha ko skleneš tipko; Tretja tipka: stanje 0 ali 1 za impulz (sklenjena tipka) oldstate1 = 1 'Bila je pritisnjena tipka in zato postavi zastavico na 1 end if 'Konec if stavka if (oldstate1 = 1) and (Button(PORTA, 0, 1, 1)) then 'Večanje števca za 1 oldstate1 = 0 'Zbriše vrednost zastavice na nič, da si nebi mislil da je ostala sklenjena tipka i=i+1 'Povečaj števec za 1, ko je bila tipka sklenjena PORTB = tabela[i] 'Prikaz trenutnega časa na LED_displayu end if 'Konec if stavka if (Button(PORTA,1,1,0)) then 'Tipka START; Prva številka: port RA1; Druga številka: zakasnitev 1ms-debounce to je ono ko malo zaniha ko skleneš tipko; Tretja tipka: stanje 0 ali 1 za impulz (sklenjena tipka) oldstate2 = 1 'Bila je pritisnjena tipka in zato postavi zastavico na 1 end if 'Konec if stavka if (oldstate2 = 1) and (Button(PORTA, 1, 1, 1)) then 'Preveri če je res bila pritisnjena tipka START oldstate2 = 0 'Zbriše vrednost zastavice na nič, da si nebi mislil da je ostala sklenjena tipka Odstevaj_Alarm(i) 'Kliče proceduro za odštevanje i=0 'Odšteva do vrednosti 0 end if 'Konec if stavka wend 'Konec while zanke end. 'Konec programa