Přednaplnění časovače – přesná časová prodleva

Princip výpočtu

Pokud naplnění vychází 15,2, musíme opakovat 16x (zaokrouhlíme nahoru).

15 x 65 536 = 983040 mikrosekund

naplníme časovač 16 x 65536 =1048576 mikrosekund

a rozdíl mezi sekundou a výsledkem uložíme do registrů časovače TL0 a TH0. Potom program jednou dojede naplnění a 15x se naplní plně oba registry.

Výpočet: 1048576 – 1000000 = 48576 – převedeme do hexadecimální soustavy na BDC0 h - tedy v TL0 = C0 h a TH0 = BD h.

Pokud provedeme animaci, skutečný čas tohoto podprogramu je 1,000012 s. Program trvá 12 μs. Protože chceme čas úplně přesně, zvýšíme dolní registr o 12 – tedy na CC h. Nyní nám hodiny při animaci ukážou přesně 1 s.

Podprogram nyní dostává tuto podobu: 

   S1: MOV TMOD,#00000001B             ;nastavení módu 16-bitového

       MOV TL0,#0CCH                            ;přednastavení dolního registru

       MOV TH0,#0BDH                            ;přednastavení horního registru

       SETB TR0                                       ;spuštění časovače 0

       MOV R1,#16                                   ;počet, kolikrát se registr naplní (16x)

   HOP: CLR TF0                                   ;vynulování bitu naplnění

   SEM: JNB TF0,SEM                           ;testuje nulovost registru časovače

       DJNZ R1,HOP                                ;dokud není registr R1 rovný nule

      CLR TR0                                          ;zastaví časovač 0

      RET                                                 ;návrat z podprogramu

Podprogramy různých časových smyček se budou lišit jen v nastavení módu registru a ve výpočtu přednastavení. Máme-li 8-bitový registr (mód 2), přednaplňujeme pouze registr TL0, protože TH0 vůbec v tomto módu není využit. Pro výpočty a převody soustav používáme vědeckou kalkulačku v PC.

Zdroje
  • VESELÁ, Zuzana. Mikroprocesorová technika. Interní skriptum, VOŠ a SPŠE Olomouc. 2013
Doplňující učivo

Vyzkoušej podprogram v animaci u software MCU8051. Vyzkoušej a dopočítej jinou prodlevu, třeba 100 ms.