Reklama

Základy ovládání mikrokontroléru ATmega(16/32) 22. díl – Krokování programu v jazyce symbolických adres (JSA)

Úvod

Možná vás někdy napadlo při psaní zdrojového kódu v jazyce C, jak vypadá výsledný zdrojový kód v jazyku symbolických adres (JSA) označovaný nepřesně jako assembler (viz, Wikipedie). A pokud nenapadlo, tak věřte, že dříve nebo později dospějete do situace, kdy budete muset důkladně ladit program a výsledný kód v jazyku symbolických adres je velmi vítaným pomocníkem. Osobně se na výsledný kód také občas dívám z důvodů, abych viděl, jak se určité syntaxe v jazyce C projeví do výsledného kódu a někdy je to opravdu dosti užitečné. V jednom z předchozích dílů (Základy ovládání mikrokontroléru ATmega(16/32) 2. díl – Sestavení a krokování programu) bylo ukázáno, jak krokovat chování programu v jazyce C a v tomto krátkém článku si ukážeme, jak si zobrazit ladění programu v jazyce symbolických adres.

Pokud jste jazyk symbolických adres nikdy neviděli, tak doporučuji trochu důkladněji prohledat internet a přečíst si o tom něco více. Pokud ale víte, o co jde a potřebujete pouze instrukční sadu pro AVR, abyste se v něm dobře vyznali, tak ji lze nalézt například zde: Atmel-0856-AVR-Instruction-Set-Manual.pdf

Popis

Teď už k samotnému zobrazení kódu v jazyku symbolických adres. Založíme si projekt a napíšeme krátký kód, viz Obr. 1.

 
Obr. 1: Jednoduchý vzorový zdrojový kód

Obr. 1: Jednoduchý vzorový zdrojový kód

Zdrojový kód nedělá nic jiného než, že na PORTA zapisuje aktuální stav proměnné i v rozsahu 0 – 9 a každý krok zdrží funkce _delay_ms(200) o 200 ms.

Vložíme někde do kódu “breakpoint” (místo, kde se zastaví provádění programu) pomocí kliknutí levého tlačítka myši na levý krajní okraj k řádku, kde chcete provádění kódu zastavit. Uložíme projekt a spustíme ladění pomocí zelené šipky anebo klávesové zkratky “F5″. Po spuštění ladění dojde k zastavení provádění kódu na řádku, kde jste umístili “breakpoint”. K zobrazení kódu v jazyce symbolických adres slouží volba “Debug – Widows – Disassembly” anebo klávesová zkratka “Alt + 8″, viz Obr. 2.

 
Obr. 2: Zobrazení panelu Disassembly

Obr. 2: Zobrazení panelu Disassembly

Po vybrání položky se zobrazí panel Disassembly, který si můžete umístit dle libosti, ale je rozumné mít vedle sebe jak zdrojový kód v jazyce C, tak v jazyku symbolických adres, viz Obr. 3.

 
Obr. 3: Zobrazení zdrojového kódu a panelu Disassembly

Obr. 3: Zobrazení zdrojového kódu a panelu Disassembly

Při krokování zdrojového kódu v jazyce C je vidět posun šipky, která určuje aktuální prováděný řádek také v záložce Disassembly. Pokud chcete krokovat zdrojový kód řádek po řádku v jazyku symbolických adres, tak musíte kliknout na panel Dissasembly.

Pokud chcete zobrazit zdrojový kód v jazyce symbolických adres na jiném místě, než máte umístěný “breakpoint”, tak stačí na požadovanou část kódu v jazyce C kliknout pravým tlačítkem myši a vybrat “Go to Dissasembly”, viz Obr. 4.

 
Obr. 4: Zobrazení JSA v jiné části zdrojového kódu

Obr. 4: Zobrazení JSA v jiné části zdrojového kódu

Při ladění přímo v jazyce symbolických adres vás také budou zajímat informace o hodnotách registrů apod. K zobrazení informací slouží volba “Debug – Windows – Processor Status”. Po výběru dojde k zobrazení panelu s informacemi, viz Obr. 5.

 
Obr. 5: Zobrazení panelu Processor Status

Obr. 5: Zobrazení panelu Processor Status

Dalším užitečným panelem a nejen při ladění v jazyku symbolických adres, ale i při ladění v jazyce C je panel “Debug – Windows – I/O”. V tomto panelu naleznete stavy vstupně/výstupních registrů, registry jednotlivých periférií apod, viz Obr. 6.

 
Obr. 6: Zobrazení panelu I/O

Obr. 6: Zobrazení panelu I/O
Jiné příspěvky v kategorii:

 

Základy ovládání mikrokontroléru ATmega(16/32) 1.díl – První kroky

Základy ovládání mikrokontroléru ATmega(16/32) 2. díl – Kompilace a krokování programu

Základy ovládání mikrokontroléru ATmega(16/32) 3.díl – Nahrání vytvořeného zdrojového kódu do mikrokontroléru

Základy ovládání mikrokontroléru ATmega(16/32) 4.díl – Ovládání vstupně/výstupních portů

Základy ovládání mikrokontroléru ATmega(16/32) 5.díl – Ošetření zákmitů na vstupním pinu mikrokontroléru

Základy ovládání mikrokontroléru ATmega(16/32) 6.díl – Externí přerušení

Základy ovládání mikrokontroléru ATmega(16/32) 7. díl – Jednoduchá elektronická hrací kostka
Základy ovládání mikrokontroléru ATmega(16/32) 8.díl – A/D převodník (1.část)

Základy ovládání mikrokontroléru ATmega(16/32) 9.díl – A/D převodník (2.část)

Základy ovládání mikrokontroléru ATmega(16/32) 10.díl – A/D převodník (3.část)

Základy ovládání mikrokontroléru ATmega(16/32) 11.díl – Čítač / Časovač (1.část – Základní popis)
Základy ovládání mikrokontroléru ATmega(16/32) 12.díl – Čítač / Časovač (2.část – Popis registrů)

Základy ovládání mikrokontroléru ATmega(16/32) 13.díl – Čítač / Časovač (3.část – Praktická ukázka)

Základy ovládání mikrokontroléru ATmega(16/32) 14.díl – Dvouřádkový LCD displej

Základy ovládání mikrokontroléru ATmega(16/32) 15.díl – Popis implementace komunikace I2C a EEPROM paměti 24LC512

Základy ovládání mikrokontroléru ATmega(16/32) 16.díl – Watchdog

Základy ovládání mikrokontroléru ATmega(16/32) 17.díl – Obsluha maticové klávesnice

Základy ovládání mikrokontroléru ATmega(16/32) 18.díl – Jednotka USART (1. část – Popis)

Základy ovládání mikrokontroléru ATmega(16/32) 19.díl – Jednotka USART (2. část – Praktická ukázka)

Základy ovládání mikrokontroléru ATmega(16/32) 20. díl – Generování audio signálu pomocí PWM

Základy ovládání mikrokontroléru ATmega(16/32) 21. díl – Analogový komparátor

 
Tajned facebook
 

Za případné chyby v textu, ve zdrojovém kódě, nebo ve schématickém zapojení se omlouváme.
AUTOŘI NEBEROU ŽÁDNOU ODPOVĚDNOST ZA PŘÍPADNÉ ÚJMY NA ZDRAVÍ ČI MAJETKU.