MPASM a IDE pro vývoj aplikací MCU (Microchip) MPLAB, vývojové prostředí a jeho instalace; Založení nového projektu a jeho základní nastavení; Zásady tvorby a základní úprava formuláře zdrojového kódu; MPASM a direktivy překladače; Téma č. 9 MPLAB- zásady tvorby programového kódu Cyklus vývoje programů pro MCU: Vývoj programů je uzavřený cyklus čtyř základních kroků: 1. Tvorba zdrojového kódu- přepis algoritmu do jazyka symbolických adres (assembleru) nebo jazyka C s kontrolou základní syntaxe (v editoru MPLAB), 2. Překlad a linkování kódu- překlad do kódu absolutního nebo relativního (vhodné pro tvorbu knihovních funkcí), spojení do jednoho programového celku linkerem, 3. Odladění kódu- simulace vytvořeného programu (kódu) zabudovaným simulátorem za účelem odstranění chyb, 4. Analýza a oprava chyb- využití pestré škály různých typů stimulů vhodných k ověřování vnějších procesů (asynchronní/ synchronní, buzení I/O vstupů, datové sekvence apod.) při simulaci případně emulaci přímo v zapojení zařízení, Celý cyklus je tak uzavřen a probíhá až do finální fáze dokončení programu pro nasazení v zařízení (viz obrázek). Použití projektového manažeru: Celý cyklus vývoje programu lze realizovat v prostředí MPLAB IDE, který umožňuje rychle a efektivně provádět návrh a odladění celého programu až do finální podoby vhodné pro přenesení (naprogramování) do MCU. Z následujícího obrázku je patrná funkce takového manažeru, který obsahuje: Složku zdrojových souborů (Source Files), Datum: 28.1.2011 Téma 9/ Obor V3.R strana 1/ ze 5
Složky hlavičkových, objektových a knihovních souborů (Header, Object, Library Files) a Složky pro skripty řídící linker a ostatní soubory (Linker script, Other Files). Vhodnými překladači (MPASM nebo C17/C18 kompilátory) lze následně získat kód buď s absolutními adresami (pouze v MPASM) nebo kód relokovatelný (přemístitelný) s adresami relativními. Kód s relativními adresami lze umístit buď do knihoven různých funkcí (např. STDIO.h) nebo samostatně spojit (linkovat) s jinými relativními kódy do jednoho výsledného kódu s absolutními adresami. Linker tedy vytváří soubory vhodné pro ladění (Debug File) nebo soubory ve strojovém kódu (Exec File). Formální zásady pro tvorbu zdrojového kódu: V předchozím tématu byl popsán postup založení nového projektu a s ním i doporučení použít šablony pro daný konkrétní typ MCU, pro který bude program vytvářen. Nyní si uvedeme, jaká forma je doporučená při psaní takovému zdrojového kódu v editoru. Důvodem je přenositelnost takových programů až na úrovni mezinárodní a také zaručení jejich dostatečné kompletnosti, co se týká nejen samotného programového kódu, ale i definic a jiných řídících direktiv pro překladač. Doporučeným jazykem pro komentáře je ANJ, který je celosvětově rozšířen a pro komunitu analytiků i programátorů je zcela srozumitelný. Úvodní záhlaví Popisuje základní vlastnosti popisovaného kódu, Obsahuje název programu (viz např. Delay_long.asm), Datum a verzi, údaje o autorovi a organizaci, Informaci o dalších zdrojových kódech (např. P16F84A.INC), Případné poznámky (zde např. časy zpoždění, podprogramy apod.) Datum: 28.1.2011 Téma 9/ Obor V3.R strana 2/ ze 5
Direktivy pro MPASM Pro výběr MCU (např. list p=16f84a), Včlenění hlavičkového souboru (např. #include p16f84a.inc), Datum: 28.1.2011 Téma 9/ Obor V3.R strana 3/ ze 5
Ošetření výpisu (nebo potlačení) některých chybových hlášení nebo varování od překladače (errorlevel). Definice konstant (znaků), proměnných či symbolů Pro konstanty se doporučuje používat jména (symboly) začínající znakem _ (spodní podtžení) (např. _ct0), Pro proměnné v datové paměti je dobré použít blokovou definici (cblock/ endc), která přiřadí symbolu hex hodnotu adresy proměnné v paměti (např. delay1); každému symbolu lze rezervovat i více bytů v paměti, Symbolová definice umožňuje přiřadit jeden symbol (jméno) jednořádkové instrukci nebo i její části (např. bank0 bude nahrazovat celou instrukci bcf STATUS,RP0). Definice maker Makroinstrukce je symbolické vyjádření celé skupiny instrukcí, což usnadňuje programátorům psát kód, který se častěji opakuje a také zvyšuje jeho čitelnost. Vlastní kód programu Toto je uvozeno u programu psaného v absolutním tvaru direktivou ORG (počátek) s hodnotou absolutní adresy kódu v programové paměti MCU, V případě, že jsou využity i oblasti pro ISR (rutiny pro obsluhu přerušení), pak tyto jsou také uvozeny obdobně, jako vlastní RESET vector (viz např. ORG 0x004). Z uvedeného příkladu je zřejmé, že vlastní program začíná na adrese 0x000 a dále pokračuje na návěští main. Datum: 28.1.2011 Téma 9/ Obor V3.R strana 4/ ze 5
Zdrojový kód musí být vždy ukončen direktivou END, která dává pokyn překladači, že končí oblast pro překlad. Datum: 28.1.2011 Téma 9/ Obor V3.R strana 5/ ze 5