User Manual

62
Někdo může namítnout, že lze v adreři příkladů RP6 nalézt mnohem atraktivnější program
"Hello World", který obsahuje běžící světlo na LED a nějaké další textové výstupy.
Nyní probereme program z pisu 1 a vysvětlíme jednotlivé řádky.
Řádek 1 - 3: /* A small and simple "Hello World" C Program for the RP6! */
Jedná se o řádky s komenřem a nebudou interpretovány překladačem. Komenře se
používají k dokumentaci zdrojového textu; začínají /* a končí */.
Dokumentace pomůže porozumět zápisu programu i ostatním lidem, ale bude užitečný pro
přehlednost vlastních programů, kd se k nim po letech vrátíte.
Komenře mohou být jakkoliv dlouhé nebo okomentovanéčásti zdrojových textů budou při
testování jinými programy ignorovány bez ztráty původního kódu. Vedle těchto víceřádkových
komenřů, podporuje GCC také jednořádkové komenře, které začínají //. PO // bude
libovolný text, až do konce řádku, interpretován jako komenř.
Řádek 5: #include "RP6RobotBaseLib.h"
Tento řádek vloží do programu knihovnu funkcí RP6, která poskytuje řadu užitečných funkcí a
předem definovaných objektů pro nízkou úroveň řízení hardware. Při vkládání knihoven
používáme takzvané hlavičkové soubory (s příponou *.h”), které informují kompilátor, kde
hledat přísluš funkce. Hlavičkové soubory se používají pro echny externí odkazy z
dostupných souborů jazyka C. Pečlivě prostudujte obsah RP6RobotBaseLib.h a
RP6RobotBaseLib.c mohou objasnit základní principy. V kapitole o pre-procesoru probereme
možnosti direktivy #include podrobněji.
Řádek 7: int main(void)
Tento řádek definuje nejdůležitější funkci ukázkového programu: funkci main. Zam se stále
učíte a podrobně pozváte funkce, ale právě nyní můžete přijmout mlenku, že celý program
začí zde.
Řádek 8 a 12:{ }
V jazyku C se mohou pomocí složených závorek '{' a '}' definovat takzva bloky. Bloky
sdružují několik příkazů.
Řádek 9: initRobotBase();
Zde se volá funkce z knihovny RP6Library. Tato funkce bude inicializovat mikroprocesor AVR a
konfigurovat AVR hardwarové moduly. Většina funkcí napsaných pro mikroprocesor nebude
fungovat správně, pokud neprovedeme inicializaci pomocí funkce initRobotBase(),
nezapomeňte dy zavolat tuto funkci na začátku programu.
Řádek 10: writeString("Hello World!\n");
Tento řádek volá funkci "writeString" z knihovny RP6Library s parametrem řetězce "Hello
World!\n". Funkce provede výstup textu do sériového rozhraní.