![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
-zabírá málo datové paměti (asi 15 Bajtů), přičemž tato paměť je alokována na zásobníku. Postačuje tedy nechat dost místa na zásobníku. Ladíme-li programy pro 8051 a máme k dispozici 8052, lze uvolnit téměř všechny technické prostředky procesoru. Kromě toho potřebuje ještě 3 bajty na adresách 7Dh,7Eh,7Fh |
-nepotřebuje externí paměť dat |
-nepotřebuje stínovou paměť RAM |
-ovládání přes sériovou linku rychlostí 300 - 115200 Bd (dle krystalu) s autodetekcí rychlosti |
-krokování programu po instrukci |
-přeskok instrukcí |
-nastavení breakpointu - bodu, v němž se provádění programu zastaví |
-nastavení hlídané adresy - po změně jejího obsahu se program zastaví |
-výpis všech registrů 8051/52 |
-možnost editace obsahu všech registrů 8051/52 |
-možnost spuštění programu se zastavením na breakpointu |
-možnost provedení odladěného podprogramu bez nutnosti jím krokovat nebo nastavit breakpoint |
-trasování - provádění programu s výpisem adres a instrukcí |
-editace vnitřní i vnější paměti dat |
-disassembling instrukcí z paměti programu s mnoha rozšířeními oproti ostatním monitorům |
-možnost vyskočit z Monitoru51 - provádění programu normální rychlostí. Je umožněn návrat zpět do Monitoru51 |
-načítání INTEL HEX souboru |
-snadné ovládání jednoduchými příkazy |
- zabírá asi 15 B vnitřní paměti (pro odkládání registrů) na zásobníku + 3 bajty na adresách 7Dh,7Eh,7Fh |
- je poměrně velký - kolem 10 KB (nevadí, máte-li simulátor EPROM aspoň 32K). Veli- kost narostla při použití postupů, jež měly za úkol minimalizovat počet využitých registrů a tím zabranou paměť |
- v módu trasování, spuštění programu (příkaz G) a provedení podprogramu (příkaz C) není rychlost provádění programu rovna reálné rychlosti, ale je nižší. Každý krok je totiž synchronizován s přerušením od sériové brány, takže rychlost provedení je závislá na rychlosti přenosu. Je to daň za to, že není použit externí vstup přerušení. Program lze spustit normální rychlostí (příkazem Q), sériovou linku (opět na rozdíl od mnoha monitorů) lze v omezené míře využít; okupace sériové linky je principielní nevýhoda všech monitorů, běžících přímo v procesoru. Nelze ji beze zbytku odstranit - nějak se s procesorem komunikovat musí. Po dodržení některých zásad lze ladit i programy se sériovou komunikací. |
![]() |
![]() |
mon_start equ xx00h $include(monit51.inc);Adresa návěští mon_start může být jakákoliv, musí ale splňovat omezení - použití násobků 256 (to znamená např. 0B00h,0F00h,1500h apod.). Místo xx00 doplňte tedy Vámi zvolenou adresu.
asm51.exe muj_prg.asm3. Spusťte.
monit51 muj_prg.hex [/ob] [/oh]Prvním argumentem programu monit51 je název Vašeho přeloženého programu (s příponou HEX nebo BIN), zde muj_prg.hex. K tomuto programu bude doplněn Monitor51. Pokud je Váš program ve formě INTEL HEX a chcete výstup v podobě binární, použijte na místě druhého argumentu přepínač /ob (output as binary). Pokud je Váš program v binární formě a chcete výstup v INTEL HEX, použijte přepínač /oh (output as INTEL HEX). Pokud přepínač neuvedete, použije se pro výstup typ shodný se vstupním souborem. Seznam chybových hlášení zaváděče je v kapitole VI.
muj_prg.hexdo paměti mikroprocesoru (do simulátoru paměti EPROM)
![]() |
![]() |
INTERNAL MONITOR 8051/52, ver.4.3 (C)2000 MARTIN HANKOVEC NEGATRON RESEARCH MCS 52 DETECTED > 0034 77 00 MOV @R1,#00H 0036 DA FC DJNZ R2,FCH(rel) 0038 78 20 MOV R0,#20H >Řádka MCS 51 (nebo MCS 52) DETECTED nám říká, jaký máme v aplikaci procesor. Po detekci typu použije Monitor51 pro sériovou linku buď čítač/časovač 1 (u MCS 51), nebo čítač/časovač 2 (u MCS 52). Umožňuje nám to plně využít nejvyšší komunikační rychlosti daného typu procesoru. Na prvním ze tří řádků je vždy instrukce, která se právě bude provádět. Pod ní jsou zobrazeny následující dvě instrukce. Nyní můžeme vložit některý z příkazů Monitoru51.
![]() |
![]() |
![]() |
![]() |
![]() |
ERROR - INTEL HEX input file ... cannot be opened ! | Špatné (neexistující) jméno vstupního INTEL HEX souboru, případně špatný formát souboru. |
ERROR - INTEL HEX input file ... cannot be opened ! | Špatné (neexistující) jméno vstupního INTEL HEX souboru, případně špatný formát souboru. |
ERROR - BIN input file ... cannot be opened ! | Špatné (neexistující) jméno vstupního binárního souboru. |
ERROR - File Monit51.bin cannot be found ! | Datový soubor monit51.bin neexistuje. Dodejte ho do stejného adresáře se zaváděčem. (obsahuje data Monitoru51) |
ERROR - Monitor51 start address ....h is bad - use address xx00h only ! | Pro Monitor51 jste použili adresu, jejíž dolní část není 00. Pokud jste použili např. 1234h, použijte místo toho 1200h nebo 1300h |
ERROR - Monitor51 start address ....h is under end address of Your program ! | Příliš nízká počáteční adresa Monitoru51, který by tak zasahoval do Vašeho programu. |
ERROR - File Monit51.bin is corrupted! | Chyba v souboru monit51.bin - použijte soubor z originální distribuce. |
ERROR - Monitor51 start address is to high - Monitor51 exceeds address FFFFh ! | Příliš vysoká počáteční adresa Monitoru51 - jeho konec přesáhne FFFFh. Použijte nižší adresu. Délka Monitoru51 je asi 10KB, proto nejvyšší použitelná adresa je kolem D800h. |
ERROR - BIN output file ... cannot be written ! | Chyba při zápisu výstupního souboru - málo místa na disku, disk chráněn proti zápisu apod. |
ERROR - INTEL HEX output file ... cannot be written ! | Viz výše. |
ERROR - File Monit51.inc is not included into source program! | Pravděpodobně jste vynechali instrukci $include(monit51.inc) ve svém programu. |
![]() | ![]() |
![]() | ![]() |
![]() |