{{ spin meghivása: TOP object file-ban az órajel beállítása szükséges! OBJ clk : "clock_bcd" PUB clk.start clk.ReqTime 'változóra mutat }} VAR long dT, T, Time byte seclow, minlow, hourlow, sechigh, minhigh, hourhigh long stack[60] 'A futtatáshoz szükséges verem méret PUB Start 'Ezzel kell indítani ' Az idö kezdö értékét lehet beállítani seclow := 0 'másodperc 0-9 ig tag sechigh := 0 'másodperc 10-es tag minlow := 6 'perc 0-9 ig tag minhigh := 1 'perc 10-es tag Hourlow := 1 'Óra 0-9 ig tag Hourhigh := 1 'óra 0-2 ig tag (24 órás üzemmód) cognew(GTC, @Stack) 'GTC nevü metódust elindítjuk egy új cogban PUB ReqTime 'Ezt a metódust kell hívni hogy megkapjuk a Time értékét Time := 0 'feltöltés elött kinullázás Time.Byte[3] := seclow 'másodperc 0-9 ig tag betöltése longba Time >>= 4 'bitek mozgatása jobbra 4 re Time.Byte[3] := sechigh 'másodperc tizes tag Time >>= 4 Time.Byte[3] := minlow 'perc 0-9 tag Time >>= 4 Time.Byte[3] := minhigh 'perc 10-es tag Time >>= 4 Time.Byte[3] := hourlow 'óra 0-9 tag Time >>= 4 Time.Byte[3] := hourhigh 'óra 0,1,2 tag Time >>= 4 return Time 'hivó visszakapja a Time változót PUB GTC 'COGban futó végtelenített ciklus ez lépteti az idöt másodpercenként dT := clkfreq 'Órajel változóba T := cnt 'cnt számláló regiszter pillanatnyi értéke váltózóba Dira[5]~~ 'P5 kimenetek (diagnosztika led kedvéért) repeat T += dT 'órajel és cnt összeadása a T változóba waitcnt(T) 'várakozik T ideig (ez kb 1 másodperc) seclow++ 'változó incrementálása (mindig hozzáad 1-et) !Outa[5] 'P5 kimenet negálása (ha 0 akkor 1 ha 1 akkor 0) if seclow // 10 == 0 'Ha változó osztása 10-el maradék nélküli akkor a feltétel igaz) sechigh++ 'ha az elözö feltétel igaz akkor változó incrementálása seclow := 0 'ha feltétel igaz (tehát seclow = 10) akkor nullázás if sechigh // 6 == 0 'ha változó 6-al maradék nélkül osztható minlow++ sechigh := 0 if minlow // 10 == 0 minhigh++ minlow := 0 if minhigh // 6 == 0 hourlow++ minhigh := 0 if hourhigh =< 1 'változó kisebb vagy egyenlo 1 el if hourlow // 10 == 0 hourhigh++ hourlow := 0 if hourhigh == 2 'változó egyenlö 2 vel if hourlow // 4 == 0 hourlow := 0 hourhigh := 0 { Magyarázat a BCD kód betöltéshez 0000_0000_0000_0000_0000_0000_0000_0000 0000_0001_0000_0000_0000_0000_0000_0000 'byte be felül (seclow) 0000_0000_0001_0000_0000_0000_0000_0000 'shift jobbra 4 0000_0001_0001_0000_0000_0000_0000_0000 'byte be felül (sechigh) 0000_0000_0001_0001_0000_0000_0000_0000 'shift jobbra 4 0000_0001_0001_0001_0000_0000_0000_0000 'byte be felül (minlow) 0000_0000_0001_0001_0001_0000_0000_0000 'shift jobbra 4 0000_0001_0001_0001_0001_0000_0000_0000 'byte be felül (minhigh) 0000_0000_0001_0001_0001_0001_0000_0000 'shift jobbra 4 0000_0001_0001_0001_0001_0001_0000_0000 'byte be (hourlow) 0000_0000_0001_0001_0001_0001_0001_0000 'shift jobbra 4 0000_0001_0001_0001_0001_0001_0001_0000 'byte be (hourhigh) 0000_0000_0001_0001_0001_0001_0001_0001 'shift jobbra 4 }