Stáhnout

Transkript

Stáhnout
MIKROPOČÍTAČOVÉ SYSTÉMY
Programování mikrořadiče AT89C2051
Vytištěno z dokumentů volně dostupných na Webu
Způsob programování a oživení mikroprocesoru 8051
Stránka č. 1 z 2
Způsob programování a oživení mikroprocesoru 8051
Programování,testování a oživování mikroprocesoru je možné několika způsoby. Každému konstruktérovi může
vyhovovat odlišný postup vývoje budoucího zažízení řízeného mikroprocesorem. V současné době jsou nejobvyklejšími
postupy asi tyto:
programování mikroprocesoru ve speciální "programovací krabičce"
Jedná se o různé tzv. vývojové kity, které mají vyvedenu patici pro zasunutí mikroprocesoru nebo je v nich
mikroprocesor přímo zapájen.Krabička obsahuje podpůrné obvody mikroprocesoru jako je reset obvod, obvod
oscilátoru atd.Na krabičce tak potom bývá vyvedeno RESET tlačítko atd.Součástí kitu je i speciální programovací
software.
Nevýhodou těchto kitů je to,že je lze použít jen s konkrétními typy mikroprocesorů, pro které byly navrženy.Dále
je konstruktér ochuzen obvykle o sériový kanál nebo jeden celý port, přes který se kit připojuje k sériovému portu
PC, na kterém se provádí programování.Navíc nemusí být všechny vývody mikroprocesoru externě vyvedeny a
nejsou tak konstruktérovi k dispozici. Výhodou je jednoduchost a rychlost programování.
Příkladem tohoto prostředku je např. systém EASY51 firmy EASYsoft.
programování mikroprocesoru za pomocí různých emulátorů
Emulátor mikroprocesoru 8051 slouží k tvorbě a odlaďování programů pro něj, "ale bez něj". Vlastní emulátor je
navržen tak, aby v plné šíři emuloval (t.j. napodobil) vlastnosti mikroprocesoru ve vyvíjeném zařízení. Řada
pracovních režimů umožňuje jeho použití nejrůznějšími způsoby a to i tehdy, kdy vyvíjené (zákaznické) zařízení
není zcela zkompletováno.Připojení emulátoru k vyvíjenému zařízení se provádí emulačním kabelem, který
vychází z emulátoru a bývá zakončen několikapinovou zástrčkou (vidlicí) ve formě pouzdra obvodu, která může
být zastrčena přímo do patice místo původního (nebo dosud vůbec nezapojeného) mikroprocesoru ve vyvíjeném
zařízení. Místo kabelu může být celý obvod emulátoru navržen jako jednotka, zakončená několikapinovou vidlicí
(dle typu mikroprocesoru) k přímému zasunutí do patice, pokud tomu dovolí prostorové podmínky. Emulátor
může být pomocí propojovacích míst (nebo softwarově) nakonfigurován tak, že představuje logický ekvivalent
původního mikroprocesoru ve všech jeho možných stavech. Obslužný software emulátoru obvykle umožňuje
provést kontrolu vyvíjeného programu s ohledem na vzájemnou spolupráci s periferiemi, což by bylo normálně
možné provést pouze pomocí osciloskopu (toto platí i pro 1.metodu programování s program."krabičkou"). Dále
umožňuje zobrazit a měnit obsahy registrů, obsahy pamětí, simulovat paměti ROM nebo RAM, spouštět a
zastavit program na zvolených místech, zobrazit a změnit stavové slovo systému atd.
Z výše uvedených faktů vyplývá, že k samotnému přenesení(nahrání) programu do mikroprocesoru je ještě
potřeba klasický programátor (ať už univerzální nebo pro konkrétní typ mikroprocesoru). Nevýhodou tohoto
způsobu programování jsou určitá omezení (byť minimální), např. pevně daný krystal, výhodou je jednoduchost
ladění programů.
Příkladem tohoto prostředku je emulátor T-EMU52 firmy ELNEC.
programování mikroprocesoru pomocí univerzálního programátoru
Tento způsob využívá k programování "univerzální" programátor, který se připojuje k sériovému nebo méně
často k paralelnímu portu PC. Programátor je vybaven pouze samotnou paticí pro zasunutí mikroprocesoru,
obvykle je patice univerzální pro několik typů mikroprocesorů (s různým počtem vývodů). Neposkytuje
mikroprocesoru žádné podpůrné obvody. V programátoru se tak provádí jen samotné programování. Podpůrné
obvody je nutné mikroprocesoru zajistit na jiném místě, nejlépe tedy na desce s nepájivým kontaktním polem,
kde lze celé zařízení při vývoji pohodlně odladit. Nevýhodou je náročnější programování - nikde nevídíte, co se v
procesoru právě děje (stavy registrů, portů atd.) a jestli už proběhla určitá část programu apod. Obvyklou
metodou, jak indikovat dosažení určité části programu nebo požadované funkce, je připojit k portu
mikroprocesoru LEDku (LEDky), a v programu je na požadovaném místě ovládat (rozsvěcovat). Při tomto
způsobu programování je nepříjemná nutnost přendávat mikroprocesor mezi programátorem a nepájivým
kontaktním polem při sebemenší změně v programu. Dále je nutné se při programování přepínat mezi obslužným
programem programátoru a textovým editorem, ve kterém píšeme program. Nevýhodou je rovněž obvykle vyšší
cena univerzálního programátoru. Výhoda spočívá v tom, že konstruktér není ochuzen o žádnou část
mikroprocesoru, může se zvolit takový krystal, jaký potřebuje, díky univerzálnímu programátoru může využít
široké spektrum typů mikroprocesorů.
Příkladem takového programátoru budiž programátor ATMega firmy MITE nebo 51&AVRprog firmy ELNEC.
K tomuto způsobu programování náleží i další alternativa a to v podobě toho, že místo univerzálního
programátoru se používá programátor vyvinutý jen pro určitý typ nebo skupinu mikroprocesorů. V případě
skupiny je to obvykle pro mikroprocesory od jednoho výrobce. Využití takovéhoto programátoru je v současnosti
stále častější, protože jak bylo zmíněno výše, univerzální programátory jsou poměrně drahé. Naopak
programátory pro určitý typ mikroprosorů jsou levné a amatersky poměrně snadno vyvinutelné a vyrobitelné.
Množství konstrukcí takovýchto programátorů se neustále zvyšuje, jak je možné vysledovat z odborných časopisů
nebo internetu. Jistě potěší, že mnoho konstrukcí je českého původu, jak se můžete přesvědčit i na této stránce,
kde je několik takových konstrukcí uvedeno (nepřekvapí, že všechny jsou vyvinuty pro velmi oblíbené
mikroprocesory firmy ATMEL).
mhtml:file://D:\Dokumenty\Mikroprocesory\Způsob%20programování%20a%20ožive...
11.7.2009
Způsob programování a oživení mikroprocesoru 8051
Stránka č. 2 z 2
Postup při programování 3.metodou:
Napíšete tedy program v nějakém textovém editoru, který do výsledného souboru nepřidává své vlastní formátovací
informace, lze tedy použít např.Poznámkový blok, WordPad (bez formátování), textové editory Windows Commandera,
Norton Commandera atd. Potom musíte využít služeb některého z tzv.překladačů. Tento překladač zajistí kontrolu a
převod programu napsaného v jazyce symbolických adres do souboru ve formátu hex. V tomto kroku dochází k náhradě
symbolických označení, návěští atd. jejich skutečnými adresami, program se jednoduše řečeno převede do formy
strojového kódu srozumitelného mikroprocesoru. Tento hex soubor se potom načte do obslužného programu
programátoru a programátor nahraje program do samotného mikroprocesoru.
Podrobný popis vývoje programů pro 8051, způsob programování v jazyce symbolických adres a postup při překladu
programů najdete zde.
Pro jednoduché programy a zkoušení kratších bloků programu bývá dobré využít schopností a služeb tzv. simulátoru
mikroprocesoru. Jedná se o program, který běží na PC a simuluje funkci mikroprocesoru,aniž byste ho měli fyzicky k
dispozici.Jako vstup simulátoru se určí hex soubor, v simulátoru se dále mohou nastavit další parametry simulovaného
mikroprocesoru (hod.kmitočet, ext/int paměť, počáteční obsah (stav) registrů, stavového slova, portů atd.).Program v
simulátoru lze obvykle spustit tak, že proběhne celý tak jak jdou instrukce za sebou nebo v tzv.krokovém režimu, kdy se
provede vždy jen jedna instrukce a čeká na další pokyn uživatele ke spuštění další instrukce. Lze tak přehledně sledovat,
co která instrukce provádí a jak se mikroprocesor po provedení dané instrukce chová.Aby bylo možné sledovat stavy
jednotlivých funkčních částí mikroprocesoru (a k tomu je simulátor určen především),je obrazovka simulátoru obvykle
členěna do několika oken zaměřených na danou část mikroprocesoru. Lze tady sledovat zejména dobu vykonávání
programu nebo i jednotlivých intrukcí,stavy registrů,portů, obsah paměti dat atd. a samozřejmě také sledovat, která
instrukce se právě provedla.Kromě toho lze i stavy portů, obsahy registrů atd. nastavovat.
Jeden takovýto simulátor vyvinula královehradecká společnost MITE, zabývající se mikroprocesorovou technikou, jejíž
produkt lze stáhnout dle odkazu na hlavní stránce nebo i zde.
Chcete si vyrobit vlastní programátor mikroprocesorů 8051?
Vyberte si některou konstrukci v následujícím seznamu.
Zpět na hlavní stránku povídání
Copyright © Michal Fuksa 2001
mhtml:file://D:\Dokumenty\Mikroprocesory\Způsob%20programování%20a%20ožive...
11.7.2009
Vývoj programů, programování v jazyce symbolických adres
Stránka č. 1 z 7
Vývoj programů, programování v jazyce symbolických adres
Vývoj programů
Když napíšete nějaký program pro 8051, je nutné jej přeložit a nahrát jej programátorem do samotného mikroprocesoru.
O způsobu nahrání programu do mikroprocesoru a jiných alternativách odzkoušení napsaného programu jste se mohli
dočíst zde. Na této stránce se budeme zabývat tím, jak se ten nějaký program vlastně píše a co se skrývá pod slovy
"přeložení programu".
Při vývoji programu pro kterýkoliv typ mikroprocesoru je třeba znát nejen jeho architekturu a možnosti jeho instrukčního
souboru, ale také možnosti programového vybavení, ve kterém budeme program vytvářet. Programovým vybavením
myslíme program nebo spíše několik programů, které budeme mít uloženy v nějakém adresáři na osobním počítači PC a
pomocí nichž program pro 8051 napíšeme, přeložíme, třeba i odzkoušíme a nakonec většinou i nahrajeme do
mikroprocesoru. Vše bude vysvětleno dále.
Prvním krokem v procesu vývoje programu je jeho vymyšlení a napsání. Vymyšlení bývá úkol nejtěžší. Programátor
musí vědět co chce udělat a jak to udělat. My se budeme bavit jen o samotném napsání programu. To, jakým způsobem
budeme program zapisovat, záleží na tom, jaký programovací jazyk si zvolíme. Nejpoužívanějším jazykem je jazyk
symbolických adres (zkr. JSA), někdy nepřesně označovaný jako assembler. Assembler je totiž program, který převádí
zdrojový program napsaný v JSA na další stupeň v procesu překladu - viz dále. Ono je totiž jednodušší říct: "...napsaný v
assembleru" než "...napsaný v jazyce symbolických adres". Dále v textu budu namísto slova assembler používat slovo
překladač - záleží na vás, které slovo si více oblíbíte. Jazyk symbolických adres má nejblíže strojovému kódu
mikroprocesoru, při programování v něm dosáhneme nejefektivnějšího programu - bude rychlý a paměťově nejméně
náročný. Jinou možností je využít některého vyššího programovacího jazyka jako je C, Pascal nebo Basic. Pro
programátora je vytváření programu v tomto jazyce jednodušší, přehlednější, nemusí se učit nový jazyk, pokud již
některý vyšší prog.jazyk zná. Tento luxus je ale za cenu toho, že takovýto program bude o něco pomalejší a paměťově
neoptimalizovaný, než kdyby byl napsán v JSA. Jde o to, že program napsaný v C nebo Pascalu musí být stejně přeložen
do JSA automaticky pomocí programu zvaného kompiler. "Inteligence" převodu do JSA je tak dána vyspělostí daného
kompileru a programátor ji sám obvykle nemůže nijak ovlivnit. My se budeme dále bavit pouze o práci a psaní programů
v JSA, psaní programů v C nebo Pascalu se totiž provádí většinou v nějakém speciálním editoru, jehož součástí bývá i
daný kompiler. K úspěšné práci nám stačí i pouhý kompiler, zdrojový program pak píšeme v běžném text.editoru (viz
níže). Tady je dobré poznamenat, že vývojová prostředí pro vyšší prog.jazyky (editor+kompiler+další komponenty) jsou
v naprosté většině nabízeny jako komerční placené produkty, jejíž součástí bývá i dokumentace, mimojiné obsahující
přesný postup práce.
Zdrojový program (tj. program zapsaný ve zvoleném program.jazyce, v našem případě JSA) tedy napíšeme v nějakém
textovém editoru, který do výsledného souboru nepřidává své vlastní formátovací nebo řídící informace, lze tedy použít
např. Poznámkový blok z Windows 95/98/Me/NT/2000/XP, textový editor integrovaný v Norton Commanderu atd.
Můžeme použít i další programy jako WordPad nebo MS Word všech verzí, výsledný dokument ale musíme uložit jako
"čistý text", tj. v případě WordPadu zvolit při ukládání typ souboru textový dokument - formát MS-DOS, v případě MS
Wordu zvolit typ souboru MS-DOS text nebo něco podobného.
Druhý krokem je přeložení programu. Máme tedy připravený zdrojový program (textový soubor) v JSA. Teď musíme
využít služeb některého z tzv.překladačů. Tento překladač zajistí kontrolu správnosti zápisu zdrojového programu a jeho
převod do souboru ve formátu jakéhosi modulu. Vzniklý soubor bude mít příponu OBJ. Současně s ním se vytvoří i
textový soubor s příponou LST, což je protokol o průběhu překladu. Pokud byly při překladu objeveny chyby (např.
chyba syntaxe, duplicitní návěští apod.) - což překladač po překladu zahlásí, jsou v tomto souboru v rámci výpisu
zdroj.programu chyby označeny a charakterizovány. Je zde dále možno nalézt další informace o programu (tabulka
symbolů, rozmístění v paměti atd.) Pravidla správného zápisu programu budou popsána dále. Tady se musím blíže zmínit
o vytvořeném souboru s příponou OBJ, který je výše označen jako modul a jež souvisí s tzv. modulární tvorbou
programů.
Modulární programování může být výhodné při psaní rozsáhlých programů - mohou práci zjednodušit a zpřehlednit. Jde
o to, že si programátor může zamýšlený program rozdělit do několika samostatných částí, které mohou do jisté míry
fungovat nezávisle na sobě. Bude psát např. program pro realizaci mikroprocesorem řízeného voltmetru. Program si
může rozdělit třeba na 3 části - první bude řešit zpracování výstupů z A/D převodníku, druhá bude řešit obsluhu displeje,
třetí bude řešit snímání skupiny tlačítek. Jak je vidět, druhá a třetí část by mohly mít univerzální použití i v jiných
aplikacích (programech). Proto si programátor všechny 3 části zapíše do 3 samostatných souborů (=modulů). Musí pak
vyřešit vzájemnou vazbu mezi moduly - tj. správné definování vstupů a výstupů modulů a předávání dat mezi
jednotlivými moduly. V našem případě je tedy důležité nadefinovat vstupy u 2.modulu, výstupy u 3.modulu, a v
1.modulu zajistit předání dat do 2.modulu a přijetí dat z 3.modulu. S jednotlivými moduly se přitom pracuje stejně jako
kdybycho měli jeden samostatný soubor (modul). Programátor si tak může časem vyvořit celou knihovnu modulů,
řešících dílčí oblasti vyvíjených aplikací (knihovní moduly mají příponu OBJ nebo LIB).
Jak z předchozího vyplývá, při definování v/v a předávání dat budeme potřebovat nějaké další, speciální instrukce,
kterými řekneme překladači, co má dělat. Těmto instrukcím se říká pseudoinstrukce a představují tzv. direktivy
překladače. Protože tyto pseudoinstrukce nejsou řádnými intrukcemi mikroprocesoru, při běhu programu se
nevykonávají - plní svojí funkci pouze při překladu zdroj.programu a říkají překladači, co má při překladu dělat.
mhtml:file://D:\Dokumenty\Mikroprocesory\Vývoj%20programů,%20programování%...
11.7.2009
Vývoj programů, programování v jazyce symbolických adres
Stránka č. 2 z 7
Pseudoinstrukce se používají i k mnoha dalším činnostem, můžeme pomocí nich dělat následující: přiřazovat symboly
konkrétním objektům, inicializovat nebo rezervovat paměťový prostor, ovládat čítač instrukcí (PC) atd. Podrobně budou
direktivy překladače popsány níže.
Pokračujeme-li v druhém kroku, máme tedy vyvořen soubor s příponou OBJ nebo několik těchto souborů, v případě, že
náš program sestává z několika modulů. Pokud máme 1 soubor, můžeme rovnou přistoupit k přechodu na konečnou
formu a tou je soubor ve formátu HEX, což je i přípona vytvořeného souboru. Pokud máme souborů (modulů) několik, je
nutné je ještě pospojovat do jednoho výsledného souboru pomocí programu, jemuž se říká linker. Jeho výstupem je
jediných soubor opět s příponou OBJ nebo ABS. Soubor s příponou HEX je již konečný formát, ve kterém se program
nahrává pomocí programátoru do samotného mikroprocesoru. Můžete se setkat s několika druhy formátu HEX,
definovaný různými firmami, nejznámější jsou Intel-HEX a Motorola-HEX. Pro nás je důležitý formát Intel-HEX, pokud
konvertovací program z OBJ na HEX umožňuje volit mezi druhy, musí být nastaven Intel-HEX. Když se podíváte
nějakým ASCII prohlížem (např. z Windows Commanderu nebo třeba i Poznámkovým blokem) na obsah vyvtořeného
HEX souboru, uvidíte , že soubor je tvořen několika řádky začínající dvojtečkou, za níž následuje vždy několik čísel v
16-kové soustavě. Když budete chvilku bádat, zjistíte, že lze z čísel vyčíst zapsaný program. Bližší popis by zabral
spoustu místa a pro většinu programátorů jsou tyto informace zbytečné, proto případné zájemce odkazuji na tuto stránku,
kde je formát Intel-HEX řádně rozebrán. Ve stručném souhrnu lze říci, že při překladu dochází k náhradě symbolických
označení skutečnými objekty a hodnotami, přiřazení skutečných adres návěštím atd. - program se jednoduše řečeno
převede do formy strojového kódu srozumitelného mikroprocesoru.
Třetím krokem je nahrání programu ve formátu HEX do obslužného programu hardwarového programátoru a následné
přehrátí do samotného mikroprocesoru. Pokud k vývoji aplikací využíváte nějaký vývojový kit (viz 1.bod dle této
stránky) , pravděpodobně nemusíte provádět překlad programu do HEX formátu (je prováděn automaticky na pozadí
vývoj.prostředí).
Celý proces vývoje programu je dobře vidět na následujících obrázcích. Program, který je dle obrázku vlevo vytvářen,
byl pro lepší ilustraci pojmenován DISPLEJ.
Na obrázku vpravo je postup vývoje programu při modulárním programování. Abych řekl pravdu, dosud jsem žádný
program pomocí dělení na moduly nenapsal, vždy jsem vystačil s jedním programem (modulem). Ve vytvořené knihovně
modulů může člověk časem ztratit přehled, pokud si ji řádně nezdokumentuje. Ale to je věc názoru.
mhtml:file://D:\Dokumenty\Mikroprocesory\Vývoj%20programů,%20programování%...
11.7.2009
Vývoj programů, programování v jazyce symbolických adres
Stránka č. 3 z 7
Programování v jazyce symbolických adres
Co to je JSA?
Jazyk symbolických adres (JSA) musí mít, tak jako každý programovací jazyk, určitá pravidla zápisu a další obecné
konvence platné pro daný procesor. Jak už z názvu tohoto jazyka vyplývá, k popisu umístění jednotlivých instrukcí a
jejich operandů v paměti se neužívá konkrétních adres, ale pouze jejich symbolického označení (návěští) a to navíc
pouze ve vybraných - významných místech programu. Každá instrukce programu musí být umístěna na přesně
definovaném místě paměti procesoru. V průběhu vytváření programu ale stále dochází k mnoha změnám (doplňování,
přemísťování, vypouštění instrukcí), které by při absolutním adresování každé instrukce znamenaly nutnost trvale
přepisovat ovlivněné adresy - což by byla nepředstavitelná dřina. Právě systém symbolů dovoluje programátorovi
nestarat se o detailní správu paměťového prostoru na úrovni každé instrukce. To za něj automaticky provádí překladač,
jemuž dává programátor pokyny prostřednictvím již zmíněných pseudoinstrukcí a které překladači umožňují orientaci v
systému symbolických i reálných adres. Praktickým přínosem JSA je to, že v celém zdrojovém programu označujeme
symbolickými návěštími pouze některé, zvlášť významné adresy. K takovým adresám patří začátek programu, cílové
adresy skoků a volání, vstupní body podprogramů atd. Zápis zdrojového programu v JSA má určitý formát, který je
částečně závislý na typu mikroprocesoru, pro který program píšeme a také na vstupních požadavcích překladače.
Formát zdrojového programu JSA
Program v JSA zapisujeme po řádcích, kdy na jednom řádku může být jen jedna instrukce nebo pseudoinstrukce. Každý
řádek se může skládat ze 4 částí, které je dobré od sebe pro lepší přehlednost oddělovat minimálně jednou mezerou, lépe
však několika mezerami nebo tabulátorem. Těmito čtyřmi částmi jsou:
mhtml:file://D:\Dokumenty\Mikroprocesory\Vývoj%20programů,%20programování%...
11.7.2009
Stránka č. 4 z 7
Vývoj programů, programování v jazyce symbolických adres
1
2
3
4
- návěští nebo symbolické jméno
- instrukce nebo pseudoinstrukce (mnemonická zkratka)
- operandy
- komentář
Příklad pro instrukci
1
2
3
4
START: MOV A,P0 ;text komentáře
Příklad pro pseudoinstrukci
1
2
3
4
STOVKA EQU 64H ;text komentáře
Jak je z příkladů vidět, návěští se od symbolického jména odlišuje tím, že má nakonci dvojtečku. Instrukce může mít 0 až
3 operandy, pseudoinstrukce má vždy alespoň 1 operand, případně výčet operandů (DB,DW).
Obecná pravidla při zápisu programu
Symbolické jméno musí začínat písmenem nebo speciálním znakem s výjimkou otazníku a mezery. Jméno může tvořit
teoreticky až 255 znaků, ale rozlišuje se pouze prvních 31 znaků. Pokud se tedy v programu vyskytnou dvě dlouhá různá
jména, ale jež budou mít prvních 31 znaků stejné, překladač (assembler) zahlásí chybu. Symbolická jména mohou být
pouze před pseudoinstrukcemi přiřazení, tj. EQU, SET, CODE, DATA, IDATA, XDATA, BIT a SEGMENT. Jako
symbolická jména nemohou být použity vyhrazené symboly, kterými jsou mnemonické zkratky instrukcí, překladačem
vyhrazené symboly (P0,A,B,R0,R1,TMOD,...), názvy direktiv (pseudointrukcí). Objektmi, kterým se přidělují
symbolická jména, bývají překladačem vyhrazené symboly registrů (A,B,PSW,...) a bitů (C,F0,P1.1,...), případně další
symboly - $ aktuální stav čítače instrukcí (PC), @ nepřímá adresa, # přímá data.
Návěští je též symbol, který se od předchozího symb.jména odlišuje tím, že je ukončeno dvojtečkou - např. START:
Jméno návěští se nesmí shodovat s již použitým symbolickým jménem. Návěští může být umístěno na samostatném
řádku, nejčastěji se ale umísťuje před instrukci (na jednom řádku) a může být i před pseudoinstrukcemi DS, DBIT, DB a
DW. Návěští nesmí být v jednom programu definováno vícenásobně - nemůže být několik návěští se stejným jménem,
opět se i zde rozlišuje prvních 31 znaků (max. 255 znaků včetně dvojtečky). Návěští může obsahovat ze speciálních
znaků pouze otazník a dolní podtržítko. Jako návěští nemohou být použity vyhrazené symboly (stejně jako symbolických
jmen). Hlavní funkcí návěští je to, že fungují jako záložky určitých míst v programu, na které se přechází pomocí
instrukcí skoků/volání - tj. xJMP,xCALL,JB,JNB,JC,JNC,JZ,JNZ,JBC,CJNE,DJNZ. S návěštím pracuje obdobně jako se
symbolickým jménem.
Operand - může jím být konstanta (přímá data), přímá, nepřímá, relativní a bitová adresa, vyhrazený symbol (registr
nebo bit). Počet a typ operandů je dán použitím konkrétní instrukce (viz instrukční soubor), formát operandů u
pseudointrukcí bude popsán dále. Tady si ještě připomeneme, že konstanta (přímá data) vždy začíná znakem # a může
být zapsána v binární (např. 10101111B), hexadecimální (např. 0FFBCH) nebo dekadické (např. 127D) soustavě. Typ
soustavy označuje poslední znak v čísle - B, H a D. V případě dekadické soustavy nemusí být znak D zapisován - stačí
napsat jen např. 127. U hexadecimální soustavy je třeba mít na paměti, že konstanta musí vždy začínat číslicí, tzn. že
pokud konstanta začíná znakem A až F, je třeba před ní napsat ještě 0.
Komentář je libovolný informativní text, jehož začátek je uvozen středníkem. V komentáři, jak už název napovídá, by se
měl vyskytovat popis toho, co daná instrukce nebo část programu provádí nebo k čemu vlastně daná část slouží.
Komentáře je výhodné používat proto, aby byl program srozumitelný a přehledný nejen pro samotného programátora, ale
např. i pro jeho spolupracovníky atd. a to i po delší době od napsání programu. Zápis komentářů do programu
samozřejmě není povinný. Maximální délka komentáře je 255 znaků včetně středníku. Komentář může tvořit i
samostatný řádek programu, což se může hodit v případě, že je do programu nutné vložit rozsáhlý komentář (nesmíme
ale zapomenout napsat na začátek každého takového řádku středník).
Jeden řádek programu může mít maximální délku 255 znaků. Co je napsáno nad, je překladačem ignorováno (překladač
zahlásí chybu). Z toho vyplývá, že výše uvedené maximální délky symb.jmen, návěští a komentářů jsou reálné pro
návěští a komentář, protože ty mohou být umístěny na samostatném řádku. U symbolického jména vždy následuje
pseudoinstrukce plus operand nebo výčet operandů (výrazů), takže samotné symb.jméno nemůže mít nikdy celých 255
znaků.
Pseudoinstrukce překladače (direktivy překladače)
Co to jsou pseudoinstrukce a k čemu obecně slouží jsme si popsali v předchozím textu. Nyní se podíváme na jednotlivé
pseudoinstrukce podrobněji a vysvětlíme si funkci těch nejpoužívanějších. Podrobný popis, případně odlišnosti od zde
uvedeného je nutné vyhledat v manuálu ke konkrétnímu překladači, který budete používat. Naprostá většina zde
uvedených údajů by však měla být platná pro všechny překladače.
POZN: U formátu pseudoinstrukcí platí, že výrazy v hranatých závorkách jsou nepovinné.
mhtml:file://D:\Dokumenty\Mikroprocesory\Vývoj%20programů,%20programování%...
11.7.2009
Stránka č. 5 z 7
Vývoj programů, programování v jazyce symbolických adres
END
Začínáme od konce. Tato pseudoinstrukce identifikuje konec zdrojového programu (textu) a ukončuje tak práci
překladače. Před touto pseudoinstrukcí nesmí být návěští ani symb. jméno, může za ní být ještě komentář (na stejném
řádku). Na dalším řádku programu by již neměl být žádný další text, protože ten již překladač ignoruje (překladač zahlásí
chybu).
ORG
1
2
3
4
ORG výraz [;text komentáře]
Tato pseudoinstrukce nastavuje při překladu čítač instrukcí PC na hodnotu výrazu. Není-li na začátku programu
pseudoinstrukce ORG použita, potom překlad začíná automaticky v programové části od adresy 0000H. Přesto je pro
jistotu dobré na začátku programu toto nastavení provést (zapsat ORG 0H). Před ORG nesmí být návěští.
EQU
1
2
3
4
Symbolické jméno EQU výraz [;text komentáře]
Tato pseudoinstrukce přiřazuje výraz ke zvolenému symb.jménu, kde výrazem mohou být konstanta (#100H), konkrétní
adresa (20H), vyhrazený symbol překladače (R0,R1,...,A,B) nebo obecný výraz (ADR1+1). Programátor si tak jednoduše
může přejmenovat např. registr R0 na registr STOVKY a v programu pracovat s novým jménem namísto původního R0 např. MOV STOVKY,A).
BIT, DATA, IDATA, XDATA, CODE
1
2
3
4
Symbolické jméno BIT
výraz (bitová adresa)
[;text komentáře]
Symbolické jméno DATA
výraz (přímá 8-bitová vnitřní adresa)
[;text komentáře]
Symbolické jméno IDATA
výraz (nepřímá 8-bitová vnitřní adresa)
[;text komentáře]
Symbolické jméno XDATA výraz (přímá 16-bitová vnější adresa)
Symbolické jméno CODE
[;text komentáře]
výraz (16-bitová adresa programové paměti) [;text komentáře]
Tyto pseudoinstrukce slouží k přiřazení konkrétní hodnoty nebo výrazu zvolenému symbolickému jménu, kde
konkrétního hodnota představuje adresu daného paměťového prostoru dle typu pseudoinstrukce (uvedeného v závorce).
DB, DW
1
2
[návěští:] DB
3
4
konstanta nebo výčet konstant (8-bitů)
[;text komentáře]
[návěští:] DW konstanta nebo výčet konstant (16-bitů) [;text komentáře]
Tyto pseudoinstrukce slouží k uchování konstant v programové paměti. Konstant může být zapsáno i více, musí být od
sebe odděleny čárkami. Konstantami mohou být čísla, aritmetické výrazy, hodnoty symb.jmen a ASCII znaky. U DB
jsou konstanty 8-bitové, u DW jsou 16-bitové. ASCII znaky musí být zapsány mezi uvozovkami. Nejlépe bude ukázat si
možnosti konstant na příkladech:
STOVKA
EQU
100
DEFINICE:
DB
DB
DB
DB
DB
127,13,54,0
3*3,2*16
STOVKA
'(c) Copyright, 2001'
2*8,'MPG',2*16,'abc'
;čísla
;aritm.výrazy
;hodnoty symb.jmen (jsou-li definovány)
;ASCII znaky
;je možné navzájem kombinovat
mhtml:file://D:\Dokumenty\Mikroprocesory\Vývoj%20programů,%20programování%...
11.7.2009
Vývoj programů, programování v jazyce symbolických adres
Stránka č. 6 z 7
TISIC
EQU
1000
DEFINICE:
DW
DW
DW
DW
DW
12700,13,540,0
;čísla
3*328,2*165
;aritm.výrazy
TISIC
;hodnoty symb.jmen (jsou-li definovány)
'Co','py','ri','gh','t,',' 2','00','1' ;ASCII znaky
3*328,'AB',2*16,'cd'
;je možné navzájem kombinovat
U pseudoinstrukce DW je narozdíl od DB možné do uvozovek zapsat společně max. 2 ASCII znaky. První znak je
umístěn ve vyšším bytu, druhý znak v nižším bytu. Pokud je v uvozovkách zapsán jen 1 znak, do vyššího bytu 16bitového slova budou zapsány nuly.
V případě, že použijeme před pseudoinstrukcí DW návěští, bude návěští ukazovat na vyšší byte první zapsané konstanty.
Všechny používané pseudoinstrukce (direktivy) jsou obsáhle popsány v návodě k překladači firmy MetaLink Corp. (v
souboru Asm_man.doc), o kterém je řeč níže. Jsou zde popsány jak základní výše vyvsvětlené, tak i další speciální
pseudoinstrukce - pro práci s paměť. segmenty a registrovými bankami, pro rezervaci paměti, pro práci s moduly atd.
Další odlišnosti překladačů
Překladače se mohou lišit v těchto několika důležitých věcech:
jaké pseudoinstrukce používají a znají
jaké vyhrazené symboly používají a znají
jaké typy procesorů podporují
Dále se mohou lišit v tom, pro jaké prostředí byly napsány (DOS-příkazový řádek, Windows 95/98), zda umožňují
upgrade na nové typy procesorů (přes konfigurační soubory) atd.
O pseudoinstrukcích a jejich podpoře ze strany překladače už byla řeč v předchozím textu. Podobně je tomu i u
vyhrazených symbolů, čímž se myslí registry A,B,R0,R1,SCON,TMOD atd. a bity RS0,RS1,F0,SMOD atd. Instrukce
procesoru by měl překladač znát všechny, poku jde opravdu o překladač pro daný typ procesoru - tedy 8051. Jde ale
především o registry a bity, jež jsou nyní součástí nových klonů 8051 a které u původní verze 8051 nebyly. Nové klony
mají integrovány např. obvody watchdog, A/D převodník a nebo výstupní PWM obvody, jež se obsluhují přes nově
vytvořené registry, jež mají nějaké symbolické označení. Stejně tak mohou u nových klonů přibýt nové vstupy/výstupy.
Ty ale náš starý překladač nezná, a proto jedinou možností je registry adresovat přímo, tj. uvedením adresy. Jsou i
překladače, které dokonce neznají ani některé registry u původní 8051, příkladem je registr PCON (87H). Ten nebyl u
HMOSové verze procesoru prakticky využíván (kromě bitu SMOD) a uplatnění získal až u verze CMOSové. Proto ho
některé starší překladače vůbec neznaly (podívejte se na POZNámku na této stránce). V takovém případě je dobré na
začátku programu, který budete psát a využívat v něm právě takové registry nebo bity, nadefinovat si je sám pomocí
pseudoinstrukcí EQU nebo BIT (např. PCON EQU 87H). Novější překladače to totiž dělají podobně - v adresáři s
překladačem bývá umístěn textový konfigurační soubor, jež obsahuje definice registrů a významných bitů určitého
procesoru právě pomocí pseudoinstrukcí. Je pak možná jednoduchá aktualizace překladače na nové klony původního
procesoru.
Kde sehnat překladač (assembler) a konvertor do HEX formátu?
Pokud vám stačí vyvíjet programy bez knihovny modulů, vystačíte s překladačem a HEX konvertorem. Budete si ale
muset zavzpomínat na práci v příkazové řádce DOSu. Postup vývoje programu byl popsán a zakreslen výše. Množství
překladačů je možné najít na stránce http://www.programmersheaven.com/. S konvertory do HEX formátu už je to horší.
Velmi dobrý překladač, který lze na těchto stránkách najít, je Cross Assembler firmy Metalink Corp. Tvoří jej program
asm51.exe, konfiguarční soubory a dokumentace. Překladač v sobě obsahuje i konvertor do HEX formátu, takže nic víc
nepotřebujete. Program je možné stáhnout přímo i odtud. Práce s překladačem je dobře popsána v text.souboru
asm_man.doc. Doporučuji si ho pročíst, mohli byste být například překvapeni, proč překladač nezná symboly některých
bitů (Px.x atd.). Je totiž třeba na začátku každého programu inicializovat konfig.soubor s definicemi symbolů pro daný
procesor (podrobnosti viz právě asm_man.doc - direktiva $mod).
Pokud chcete programy vyvíjet modulárně (knihovna modulů), budete ještě navíc potřebovat spojovací program (linker).
Najít ale nějaký samostatný linker na internetu bude asi trochu problém, bývá totiž většinou součástí nějakého
komerčního (placeného) vývojového kitu.
Ze všech zmíněných důvodů mohu proto jen doporučit, ať chcete využívat knihoven modulů ano či ne, následující
vývojové prostředí firmy Systronix. Je napsáno pro prostředí Windows 95/98, umožní vám pracovat s projekty
(knihovny modulů), obsahuje překladač, HEX konvertor i linker a hlavně je ZDARMA ke stažení! Program se jmenuje
RAD51, nemá žádná omezení, instaluje se jako standardní windowsová aplikace. Nemusíte znát práci v příkazové řádce,
mhtml:file://D:\Dokumenty\Mikroprocesory\Vývoj%20programů,%20programování%...
11.7.2009
Vývoj programů, programování v jazyce symbolických adres
Stránka č. 7 z 7
napíšete program v integrovaném editoru, jedním tlačítkem spustíte překlad a RAD51 vám do určeného adresáře vytvoří
rovnou HEX soubor. Vytvoří se i LST soubor, který ale bohužel neobsahuje protokol o průběhu překladu, ani informace
o případných chybách. Je proto nutné mít v RADu51 zapnuto okno Output (v menu View), v němž se hlášení o chybách
překladu zobrazují. Poslední verzi programu RAD51 je možné stáhnout ze stránek výrobce zde. Najdete jej i na cédéčku
HW CD2 v sekci X51-SW pomůcky, jež vydal HW Server.
Pokud chcete programy vyvíjet ve vyšším programovacím jazyce - C, Pascalu nebo Basicu, opět doporučuji podívat se
na stránku http://www.programmersheaven.com/, kde je možné najít spoustu kompilerů pro daný jazyk. Kompilery je
také možné najít i HW CD2.
Zpět na hlavní stránku povídání
Copyright © Michal Fuksa 2002
mhtml:file://D:\Dokumenty\Mikroprocesory\Vývoj%20programů,%20programování%...
11.7.2009
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SUR
PLNURSURFHVRU\DG\[
'RF,QJ5XGROI-DORYHFNê&6FY\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
ÒYRG
9 DVVHPEOHUHFKSURPLNURSURFHVRU\DG\[DOHL$'X&VHVHWNiYiPH
V SRMP\ÄGLUHNWLY\SHNODGDþHNRPSLOiWRUX³7\WRGLUHNWLY\EH]SURVWHGQ tGtYODVWQtSHNODG
SHNODGDþH3HGORåHQêWH[WPi]DFtOHREHFQpVH]QiPHQtDSRXåLWtWFKWRGLUHNWLYEH]RKOHGX
QDNRQNUpWQtW\SSHNODGDþHLNG\åMH]DPHQSHGHYãtPQDGLUHNWLY\WFKW\S$ NRPSLOiWRU$
NWHUpSHNOiGDMt]GURMRYêWH[WStPRGRDEVROXWQtKRNyGX+(;QLNROLYRWYDUXREMHNWLYQt
KRSHNODGX2%-NWHUêQiVOHGQ PXVtEêWMHãW VSRMHQVOLQNRYiQV NQLKRYQRXSURFHGXUD
IXQNFt
2EHFQêSRSLVNRPSLOiWRU$
.RPSLOiWRUMHNtåRYêSHNODGDþMD]\NDV\PEROLFNêFKDGUHVMHGQRþLSRYpKRPLNURSRþt
WDþHURGLQ\[-HKRYVWXSHPSURNRPSLOiWRUMH]GURMRYêVRXERUMPpQR!$60YMD]\FH
V\PEROLFNêFK DGUHV YêVWXSHP SDN SHGHYãtP YêVOHGQê FtORYê VRXERU YH IRUPiWX ,17(/
+(; MPpQR!+(; D YROLWHOQ QDStNODG SURWRNRO R SHNODGX MPpQR!351 QHER
MPpQR!/67 9]KOHGHP N YHONpPX PQRåVWYt YDULDQW NRPSLOiWRU$ NWHUp MVRX N GLVSR]LFL MH
QXWQpSHGHPNRQVWDWRYDWåHQHMVRXYHYHONpYWãLQNRPSDWLELOQt
3HNODGDþHVH]SUDYLGODVSRXãWt] StND]RYpKRiGNXRSHUDþQtKRV\VWpPXQHERY GiYFH
SRXåLWtPStND]XVQNROLNDSDUDPHWU\QDS
NGH
$60MPpQR!>$60@>SDUDPHWU\tGtFtSHNODG!@
MPpQR!MHMPpQR]GURMRYpKRSURJUDPXPiOLStSRQX$60QHQtSRWHEQpML
XYiGW
SDUDPHWU\ tGtFtSHNODG! QDS SDUDPHWU SURJHQHURYiQt WDEXON\ V\PERO$
QHERSDUDPHWUSURY\WYRHQtWDEXON\NtåRYêFKRGND]$DSRG
3RSLVV\QWD[H
3HVQêVpPDQWLFNêYê]QDPMHGQRWOLYêFKLQVWUXNFtMHSRSViQYGRVWXSQpOLWHUDWXHD QHQt
QXWQpMHM]GHXYiGW8YHPHMHQSRXåLWtGLUHNWLYNRPSLOiWRU$NWHUpPDMtEH]SURVWHGQtYê
]QDPQDSHORåHQêSURJUDP
5H]HUYRYDQiMPpQD
5H]HUYRYDQi MPpQD PDMt Y SHNODGDþL Y\KUD]HQ\ NRQNUpWQt Yê]QDP D SURJUDPiWRU MH
P$åHSRXåtWSRX]HSHGHPXUþHQêP]S$VREHP
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
$
6H]QDPUH]HUYRYDQêFKMPHQ
$1'
$5
$%
$1/
$5
$&
$5
$5
'$7$
'%
'(&
',9
'-1=
%
(48
(6
,3
,7
,7
-1&
-1=
'375
%,7
,17
-=
/&$//
/-03
/2:
029
029&
3
3
-%
37
3
5
25
25*
25/
29
386+
3;
3;
5
5
3&
5
3&21
5
323
5%
5/&
55
6-03
60
60
60
63
68%%
7
7
;&+
-1%
5/
6:$3
:5
-03
5,
56
7,
-&
5(7,
56
7+
5
-%&
5(7
55&
6+5
)
,17
37
6+/
(;
(1'
,1&
36:
5(1
(;
(/6(
&/5
,)
36
5'
($
&-1(
,(
127
5
(7
&$//
,(
123
5
':
(7
08/
3
&
'675
029;
3
$-03
$5
(1',)
,(
$''&
$5
'$
+,*+
$''
$5
&<
'3/
$&&
$5
&3/
'3+
$&$//
7/
;&+'
5;'
6%8)
7%
7&21
7/
702'
;5/
6&21
7)
75
6(7
7)
75
6(7%
7+
7;'
-PpQDGHILQRYDQiSURJUDPiWRUHP
-PpQD GHILQRYDQi SURJUDPiWRUHP PRKRX EêW WYRHQ\ StVPHQ\ þtVOLFHPL D ]QDNHP
SRGWUåHQt
B
3UYQt]QDNPXVtEêWYåG\SRX]HStVPHQR0D[LPiOQtGpONDMPpQDP$åHEêW
]QDN$SHNODGDþYãDNSUDFXMHSRX]HVSUYQtPL]QDN\NWHUpWDNpUR]OLãXMH
.RQVWDQW\
3HNODGDþUR]OLãXMHPRåQêFK]S$VRE$]iSLVXNRQVWDQW
ýtVHOQpNRQVWDQW\
DGHNDGLFNpþtVOLFHPRKRXNRQþLW]QDNHP'
EELQiUQtþtVOLFHQHERNRQþtFtSRYLQQ]QDNHP%
FKH[DGHFLPiOQtþtVOLFH]QDN\$) GHILQLFHPXVt ]DþtQDWþtVOLFtD PXVtNRQþLW
]QDNHP+
GRNWDORYpþtVOLFHNRQþtFt]QDNHP2QHER4
'RF,QJ5XGROI-DORYHFNê&6F
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
=QDNRYpNRQVWDQW\
H$6&,,]QDNOLERYROQê$6&,,]QDNNWHUêMHX]DYHQêGRMHGQRGXFKêFKXYR]RYHN
=YOiãWQtYê]QDPYHYêUD]XPi]QDNGRODUNWHUpPXMHSLSHNODGXSLD]HQDDNWXiOQt
KRGQRWDSURJUDPRYpKRþtWDþH
2SHUiWRU\
9HYêUD]HFKPRKRXEêWMPpQDDNRQVWDQW\VSRMHQDRSHUiWRU\.RPSLOiWRU\UR]SR]QiYDMt
QiVOHGXMtFtRSHUiWRU\
RSHUiWRU
RSHUDFH
RSHUiWRU
RSHUDFH
RGHþtWiQt
6+5
ELWRYêSRVXQYSUDYR
25
$1'
VHþtWiQt
6+/
GOHQt
127
ORJLFNêVRXþHW
+,*+
QiVREHQt
ORJLFNêVRXþLQ
/2:
ELWRYêSRVXQYOHYR
QHJDFH
GROQtE\WRSHUDQGX
KRUQtE\WRSHUDQGX
9\KRGQRFRYiQt RSHUiWRU$ SL MHMLFK NRPELQDFL SUREtKi SRGOH SULRULW\ 1iVOHGXMtFt VH
]QDPMHXVSRiGiQSRGOHY]U$VWDMtFtSULRULW\RSHUiWRU$ $1'256+/6+5127+,*+
/2:3LVWHMQp~URYQLSULRULW\MHYêUD]Y\KRGQRFRYiQ]OHYDGRSUDYD3RDGtY\KRGQRFRYiQt
P$åHEêW]PQQRSRXåLWtP]iYRUHN
)RUPiWLQVWUXNFt
6QDGYãHFKQ\NRPSLOiWRU\SUDFXMtVQiVOHGXMtFtPIRUPiWHPLQVWUXNFH
>QiYãWt@SVHXGRLQVWUXNFH>RSHUDQG\@>NRPHQWi@
'pONDMHGQRWOLYêFKSROtQHQtXUþHQD3URY\ããt SHKOHGQRVWDSRKRGOQMãtSUiFLVHYãDN
GRSRUXþXMH Y\KUDGLW VL SUR NDåGp SROH ]QDN$ 9WãLQD HGLWRU$ Pi WDEXOiWRU QDVWDYHQ VWDQ
GDUGQQDWXWRYHOLNRVWNRPHQWiGRSRUXþXML]DSLVRYDWDåSRGYRXWDEXOiWRUHFK
1iYãWt
1iYãWtMHV\PEROLFNpMPpQRNWHUpMHXNRQþHQRGYRMWHþNRX7RPXWRMPpQXMHSLSH
NODGXSLD]HQDNRQNUpWQtDGUHVDQDNWHURXMHPRåQpVHSHVLGHQWLILNiWRUQiYãWtRGYROiYDW
'DQp QiYãWt VPt EêW GHNODURYiQR SRX]H MHGQRX 3L YtFHQiVREQpP YêVN\WX WpKRå MPpQD Y
SROLQiYãWtKOiVtSHNODGDþFK\EX5R]KRGXMtFtFKMHRSWSUYQtFK]QDN$
,QVWUXNFHSVHXGRLQVWUXNFH
9WãLQDNRPSLOiWRU$XPRåXMHSRXåtYDWQNWHUp]QiVOHGXMtFtFKSVHXGRLQVWUXNFt
'RF,QJ5XGROI-DORYHFNê&6F
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
'HILQLFHXåLYDWHOVNêFKMPHQ(486(7'$7$
6\QWD[H
MPpQR!(48YêUD]!
MPpQR!6(7YêUD]!
MPpQR!'$7$YêUD]!
6\PEROLFNpPXMPpQXMHSLD]HQDKRGQRWD]tVNDQiY\KRGQRFHQtPYêUD]X5R]GtOPH]L
SVHXGRLQVWUXNFt(48D6(7MHWHQåHSRXåLWtP6(7P$åHEêWMHGQRPXMPpQXSLD]HQDU$]
QiKRGQRWDYtFHNUiWMHGQiVHWHG\RSLD]HQtKRGQRW\NGHåWRSRXåLWt(48RGSRYtGiGHILQLFL
DWRWRMPpQRXåQHVPtEêWGHILQRYiQRQDMLQpPPtVW
3VHXGRLQVWUXNFH '$7$ MH XUþHQD N GHILQLFL V\PEROLFNêFK MPHQ NWHUp VH RGND]XMt QD
DGUHV\YQLWQtSDPWLGDWGLUHFWDGGUHVV
3VHXGRLQVWUXNFt(48MHPRåQpURYQåSLDGLWV\PEROLFNpMPpQRQNWHUpPX]UHJLVWU$
5Då5SURFHVRUX-HWHG\PRåQê]iSLVMDNRQDS
%$6( (48 5
3R]QiPND6\PEROLFNiMPpQDUHJLVWU$PXVtEêWGHILQRYiQDSHGMHMLFKSUYQtPSRXåLWtP
'HILQLFHXåLYDWHOVNêFKR]QDþHQtELW$%,7
6\QWD[H
MPpQR!%,7KRGQRWD!
7DWRSVHXGRLQVWUXNFHXPRåXMHSLDGLWStPRDGUHVRYDWHOQêPELW$PYHYQLWQtSDPWL
GDW V\PEROLFNi MPpQD 5RYQå XPRåXMH SLDGLW WPWR MPpQ$P L ,2 SRUW\ -DNR KRGQRWD
P$åHEêWSRXåLWDNRQVWDQWD]LQWHUYDOX))+QHERV\PEROLFNpR]QDþHQtELWXGOHPQHPRQLN\
YêUREFH
1DStNODG
3591,
9<6783
75(7,
%,7
%,7
%,7
+
3
$&&
1DVWDYHQtSURJUDPRYpKRþtWDþH25*
6\QWD[H
>QiYãWt@25*YêUD]!
7DWR SVHXGRLQVWUXNFH SURYHGH QDVWDYHQt KRGQRW\ SURJUDPRYpKR þtWDþH QD KRGQRWX GD
QRX Y\KRGQRFHQtP YêUD]X 3L SRNXVX R QDVWDYHQt YWãt KRGQRW\ QHå MH UR]VDK DGUHV Då
))))+RKOiVtSHNODGDþFK\EX
'HILQLFHGDW'%':
6\QWD[H
>QiYãWt@'%YêUD]!>YêUD]!@
3VHXGRLQVWUXNFH SRVWXSQ XNOiGi MHGQRE\WRYp KRGQRW\]tVNDQp Y\KRGQRFHQtP MHGQRW
OLYêFK YêUD]$ QD DNWXiOQt DGUHV\SRþtQDMH VRXþDVQRX DGUHVRX SURJUDPRYpKR þtWDþH 9êUD]\
PXVtQDEêYDWKRGQRWYUR]VDKX))+3RYROHQ\MVRXWDNpHW]FH]QDN$ X]DYHQpYMHGQR
'RF,QJ5XGROI-DORYHFNê&6F
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
GXFKêFKXYR]RYNiFKQDSSRVORXSQRVW]QDN$ VHXORåtMDNR+++3RþHWYêUD]$
]DMHGQtPStND]HP'%MHRPH]HQSRX]HGpONRXiGNX
6\QWD[H
>QiYãWt@':YêUD]!>YêUD]!@
3VHXGRLQVWUXNFHSRVWXSQ XNOiGiGYRXE\WRYpKRGQRW\]tVNDQpY\KRGQRFHQtPMHGQRWOL
YêFK YêUD]$ QD DNWXiOQt DGUHV\ SRþtQDMH VRXþDVQRX DGUHVRX SURJUDPRYpKR þtWDþH 9êUD]\
PXVtQDEêYDWKRGQRWYUR]VDKXDå))))+3RþHWYêUD]$ ]DMHGQtPStND]HP':MHRPH]HQ
SRX]HGpONRXiGNX
32=259\ããtE\WHMHXNOiGiQQDQLåãtDGUHVXDQLåãtE\WHQDY\ããtDGUHVX
5H]HUYRYiQtSDPWL'6
6\QWD[H
>QiYãWt@'6YêUD]!
3L SHNODGX MH Y SDPWL UH]HUYRYiQ SRþHW E\W$ GDQê YêUD]HP 3UR SHNODGDþH NWHUp
StPRJHQHUXMt+(;DNyGVHWDWRSVHXGRLQVWUXNFHStOLãQHSRXåtYiQHER" MLåQHQtPRåQpUH
]HUYRYDQpPtVWRY\XåtW
3R]QiPND9WRPWRStSDG PXVtEêWKRGQRW\StSDGQêFKSURPQQêFKSRXåLWêFKYHYêUD]X
GHILQRYiQ\SHGMHKRY\þtVOHQtP
9êEUSRXåLWpEDQN\UHJLVWU$86,1*
6\QWD[H
>QiYãWt@86,1*YêUD]!
3VHXGRLQVWUXNFHGHILQXMHSRXåLWtStVOXãQpEDQN\UHJLVWU$ RGPtVWDVYpKRYêVN\WX9êUD]
SRY\KRGQRFHQtPXVtQDEêYDWKRGQRW]LQWHUYDOXDå3L]SUDFRYiQtLQVWUXNFtNWHUpSUDFXMt
V UHJLVWU\5 Då 5 MH SL SHNODGX ]RKOHGQQD ]YROHQi EDQND UHJLVWU$ WHKG\MHOL QD PtVW
UHJLVWU$ YLQVWUXNFLXYHGHQRSHUDQG$5[$EVROXWH5HJLVWHUNGH[MHþtVORUHJLVWUXDå9
WDNRYpPStSDG SHORåtSHNODGDþLQVWUXNFLMDNRE\E\ODSRXåLWDLQVWUXNFHVStPRXDGUHVRX
,PSOLFLWQMH]YROHQDEDQND
= SUDNWLFNêFK ]NXãHQRVWt QHGRSRUXþXML WXWR GLUHNWLYX StOLã SRXåtYDW MH YKRGQp UDGML
]YROLWStPêDVVHPEOHURYNêStND]SURQDVWDYHQtEDQN\UHJLVWU$
3RGPtQQêSHNODG,)(/6((1',)
6\QWD[H
>QiYãWt@,)YêUD]!>QiYãWt@(/6(>QiYãWt@(1',)
3HNODGDþ Y\KRGQRWt YêUD]D SRNXG MH YêVOHGHNU$]QêURYHQ RG QXO\SHORåtQHSHORåt
QiVOHGXMtFtVHNYHQFLLQVWUXNFtDåSRYêVN\WSVHXGRLQVWUXNFH(/6(QHER(1',)3LYêVN\WX
SVHXGRLQVWUXNFH(1',)MHSRGPtQQêSHNODGXNRQþHQ3LYêVN\WX(/6(VHSRGPtQNDREUiWt
DGDOãtLQVWUXNFHDåSR(1',)VHQHSHNOiGDMtSHNOiGDMt
3R]QiPND 9QRHQtSVHXGRLQVWUXNFt,)(/6((1',)QHPXVtEêWXQNWHUêFKNRPSL
OiWRU$SRYROHQR
8NRQþHQt]GURMRYpKRWH[WX(1'
'RF,QJ5XGROI-DORYHFNê&6F
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
6\QWD[H
>QiYãWt@(1'
1HSRYLQQiSVHXGRLQVWUXNFHNWHUiR]QDPXMH SHNODGDþL NRQHF SHNOiGDQp þiVWL ]GURMR
YpKRWH[WX-DNêNROLGDOãtWH[WMHLJQRURYiQMHWHG\PRåQpVL]DWHQWRStND]ÄXORåLW³þiVWMHãW
QH]SUDFRYDQpKRQHRGODGQpKRSURJUDPX&K\EtOLWDWRSVHXGRLQVWUXNFHQDNRQFL]GURMRYpKR
WH[WXMHYSURWRNROXRSHNODGXXYHGHQDYDURYQi]SUiYD
2SHUDQG\
3RNXG MH QD PtVW RSHUDQGX StPi GLUHFW DGUHVD MH PRåQR SRXåtW EX QXPHULFNRX
KRGQRWX ] LQWHUYDOX ))+ QHER V\PEROLFNp MPpQR VSHFLiOQtKR IXQNþQtKR UHJLVWUX 6WHMQp
SUDYLGORSODWtLSURELWRYêRSHUDQGELWVWtPåHMDNRV\PEROLFNêFKMPHQVHSRXåtYiQi]Y$
StPRDGUHVRYDWHOQêFKELW$SRGOH]DYHGHQpPQHPRWHFKQLN\
3RNXGVHQDPtVW StPpKRQHERELWRYpKRRSHUDQGXY\VN\WQHKRGQRWDNWHUiQHQtGHIL
QRYDQiSHNODGDþQDWXWRVNXWHþQRVW]DUHDJXMHY\SViQtPYDURYQp]SUiY\GRSURWRNROXRSH
NODGXDYêVOHGHNWDNRYpWRRSHUDFHQHQtGHILQRYDQê
-HOL MDNR RSHUDQG XYHGHQD StPi KRGQRWD GDWD MH PRåQR SRXåtW YêUD]X MHKRå Y\
þtVOHQtPVHWDWRKRGQRWD]tVNi9HYêUD]XVHPRKRXY\VN\WRYDWþtVODDV\PEROLFNiMPpQD
3tNODG
/-03+
029$
029$&,6/2
&,6/2(48%
.RPHQWi
.RPHQWi MHOLERYROQêWH[WNWHUê]DþtQiVWHGQtNHP1DUD]tOLSHNODGDþSLSHNODGXQD
VWHGQtNSDNFHOê]E\WHNWH[WXGRNRQFHiGN\SRYDåXMH]DSR]QiPNX0LPRREHFQêIRUPiW
LQVWUXNFHMVRXPRåQpLW\WRIRUPiW\
>QiYãWt@NRPHQWiNRPHQWi
2EHFQ MH GRSRUXþHQR SRXåtYDW YHONp PQRåVWYt SR]QiPHN D NRPHQWi$ QHER" þDVHP
DOHVSROpSHSR]QiWHVYRMLS$YRGQt]SURJUDPRYDQRXP\ãOHQNX
3URWRNRORSHNODGX
6QDGYãHFKQ\SHNODGDþHY\WYitPLPRYODVWQtKRSHORåHQpKR+(;DVRXERUXLVRXERU
R SURYHGHQpP SHNODGX W]Y SURWRNRO 351 /67 7HQWR SURWRNRO R SHNODGX ]DKUQXMH
RSLV ]GURMRYpKR WH[WX SHORåHQê FtORYê NyG StSDGQp FK\ERYp KOiãHQt D QNG\ L YROLWHOQ
WDEXONXV\PERO$DNtåRYêFKRGND]$
2EHFQêIRUPiWiGNXSURWRNROXRSHNODGX
DGUHVD!FtONyG!RSLV]GURMRYpKRWH[WX!
NGHDGUHVDMHWYRHQDþW\PLþtVOLFHPLYKH[DGHFLPiOQtPWYDUXDXGiYiDEVROXWQtDGUHVXQD
NWHURXVHXNOiGiFtORYêNyG
'RF,QJ5XGROI-DORYHFNê&6F
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
FtORYêNyGMHWYRHQKH[DGHFLPiOQtPLþtVOLFHPLRSHUDþQtKRNyGXDStSDGQêFKRSHUDQG$
RSLV]GURMRYpKRWH[WXMHRGSRYtGDMtFtiGHN]GURMRYpKRWH[WXYþHWQNRPHQWiH
&K\ERYiKOiãHQtSLSHNODGX
6NRQþtOLSHNODGEH]FK\E\SDNMHQDNRQFLSURWRNROXRSHNODGXXYHGHQWH[W
1RHUURUVGHWHFWHG
-HOLSLSHNODGX]MLãWQDFK\EDMHSURWRNROXNRQþHQWH[WHP
[!HUURUVGHWHFWHG
NGH[MHSRþHW]MLãWQêFKFK\E
&K\E\SURJUDPX
3LYêVN\WXFK\E\YSHNOiGDQpPSURJUDPXJHQHUXMHSHNODGDþGRSURWRNROXRSHNODGX
FK\ERYpKOiãHQtYHWYDUX
(UURUW\SFK\E\!
7RWRFK\ERYpKOiãHQtMHYåG\XYHGHQRSRGiGNHPYHNWHUpPVHFK\EDY\VN\WOD
3HKOHGVWDQGDUGQtFKFK\ERYêFKKOiãHQt
LGHQWLILHUQRWGHFODUHG
YDORXWRIUDQJH))+
LGHQWLILNiWRUQHQtGHNODURYiQ
KRGQRWDSHVDKXMHUR]VDKE\WX
RXWRIUDQJH))))+
KRGQRWDPLPRUR]VDKVORYD
RXWRIDGGUHVVUDQJH
RGND]QDDGUHVXPLPRDGUHVRYêUR]VDK
RXWRIFXUUHQWSDJH
PXOWLSO\GHFODUDWLRQ
VNRNPLPRVRXþDVQRXVWUiQNX
YtFHQiVREQiGHNODUDFH
V\QWD[HUURU
V\QWDNWLFNiFK\ED
UHJLVWHUH[SHFWHG
RþHNiYDMtVHSRX]HUHJLVWU\55
QRWDVVLJQHGWRUHJ
LGHQWLILNiWRUQHQtSLD]HQUHJLVWUX55
PXOWLSO\DVVLJQPHQW
YtFHQiVREQpSLD]HQt
PXOWLSO\ODEHOGHFODUHG
QiVREQiGHNODUDFHQiYãWt3&
PXOWLSO\UHJLVWHUDVVLJQHG UHJLVWUMHSLD]HQGYDNUiW
RXWRIUDQJH
QHVWHG,)
QHVWHG(/6(
QHVWHG(1',)
DVVLJQHGWRUHJLVWHU
'RF,QJ5XGROI-DORYHFNê&6F
SURJUDPRYêþtWDþMHPLPRUR]VDK
YQRHQiSVHXGRLQVWUXNFH,)
YQRHQiSVHXGRLQVWUXNFH(/6(
YQRHQiSVHXGRLQVWUXNFH(1',)
QDPtVWSURGLUHFWDGUHVXMHQSRXåLWDSURPQQiSLD]HQiUHJ
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
RXWRIUDQJH
RXWRIUDQJH
V\PERO!H[SHFWHG
UHODWLYQtVNRNMHPLPRGDQêUR]VDK
]DSVHXGRLQVWUXNFtXVLQJSRXåLWDKRGQRWDYWãtQHå
MHRþHNiYiQV\PERO!
8SR]RUQQt3(./$'$ý(
3L SHNODGX PRKRX Y]QLNQRXW VLWXDFH NWHUp QHMVRX FK\ERX Y SHNOiGDQpP SURJUDPX
DOH SURJUDPiWRU E\ PO EêW R WRP LQIRUPRYiQ 7RWR FK\ERYp KOiãHQt MH YåG\ XYHGHQR SRG
iGNHPYHNWHUpPVHVLWXDFHY\VN\WOD
:DUQLQJEDG6)5DGGUHVV
FK\EQiDGUHVDVSHFLiOQtKRIXQNþQtKRUHJLVWUX
:DUQLQJ(1'H[SHFWHG
RþHNiYiQNRQHFVRXERUX
:DUQLQJEDGELWDGGUHVV
FK\EQiDGUHVDELWRYDGUHVRYDWHOQpSDPWL
7DWRYDURYiQtPDMtSRX]HFKDUDNWHULQIRUPDFHQHMVRXSRYDåRYiQ\]DFK\EX
&K\E\V\VWpPX
3RNXGGRMGHSLSHNODGXNFK\E V\VWpPXJHQHUXMHSHNODGDþGRSURWRNROXRSHNODGX
FK\ERYpKOiãHQtYHWYDUX
6\VWHPHUURUW\SFK\E\!
6H]QDPFK\ERYêFKKOiãHQt
2XWRIPHPRU\
SURJUDPPiQHGRVWDWHNSDPWLSURXNOiGiQtGDW
'LVNLVIXOO
SOQêGLVN
1RVXFKILOH
&DQ
WRSHQILOH
SRNXVRRWHYHQtQHH[LVWXMtFtKRVRXERUX
V\VWpP QHSRYROt RWHYtW GDOãt VRXERU -H WHED ]NRQWURORYDW YHOLNRVW SUR
PQQp),/(6YVRXERUX&21),*6<6
7DEXONDV\PERO$
-HOLSLVSXãWQtSHNODGDþH]DGiQSRåDGDYHNQDY\WYRHQtWDEXON\V\PERO$MHY\WYRH
QDWDEXONDV\PERO$DSLSRMHQDQDNRQHFSURWRNROXRSHNODGX
7DEXONDNtåRYêFKRGND]$
-HOLSLVSXãWQtSHNODGDþH]DGiQSRåDGDYHNQDY\WYRHQtWDEXON\NtåRYêFKRGND]$ MH
Y\WYRHQD WDEXOND NtåRYêFK RGND]$ D SLSRMHQD QD NRQHF SURWRNROX R SHNODGX 9 WDEXOFH
MVRX XYHGHQ\ MHGQRWOLYi V\PEROLFNi MPpQD GHILQRYDQi SURJUDPiWRUHP D SUR NDåGê YêVN\W
MPpQDþtVORiGNXYHNWHUpPMHMPpQRSRXåLWRýtVORiGNXYHNWHUpMHLGHQWLILNiWRUGHILQR
YiQMHXYR]HQR]QDNHP
'RF,QJ5XGROI-DORYHFNê&6F
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
2EHFQêSRSLVNtåRYêFKSHNODGDþ$NRPSLOiWRU$SURPLNURSURFHVRU\DG\[
3R]QiPN\QD]iYU
3HGORåHQêWH[WE\POVORXåLWN SUYRWQtPXVH]QiPHQtVHV PRåQRVWPLMDNRYOLYQLWSH
NODG]GURMRYpKRWH[WXY NRPSLOiWRUX6RXþDVQ YãDNWDNpP$åHGiYDWQiYRGQDREHFQMãtY\X
åLWtLGHQWLILNiWRU$SDP"RYêFKPtVWNRQVWDQWDNRQNUpWQtFKDGUHV,2SRUW$
-HYKRGQpWDNpSLSRPHQRXWQDVNXWHþQRVWåHQHYåG\QDMGHPHVWDQGDUGQtR]QDþRYiQt
SURPQQêFKY MHGQRPDWpåHNRPSLOiWRUX3tNODGHPWRPXP$åHEêWR]QDþRYiQtDNXPXOiWRUX
$NWHUêQNG\PXVtPH]DSVDWMDNR$FF386+$FFDOH029$'iOHMHYKRGQpXSR]RU
QLWQDVNXWHþQRVWåHYWãLQDSHNODGDþ$ QHUR]OLãXMHYHONpDPDOp]QDN\MHWHG\MHGQR]GD]D
StãHWHPRYDEQHER029$%2EHFQ VHYãDNGRSRUXþXMHREGREQ MDNRVWUXNWXURYiQt]iSL
VXSRXåtYDW]iSLVLQVWUXNFtYHYHONêFKStVPHQHFK
2EVDK
Ò92' 2%(&1é323,6.203,/È725# 323,66<17$;( 5(=(5929$1È-0e1$ -0e1$'(),129$1È352*5$0È725(0 .2167$17< 23(5È725< )250È7,16758.&Ë 1È9â7Ë ,16758.&(36(8'2,16758.&( 23(5$1'< .20(17È 35272.2/23(./$'8 &+<%29È+/Èâ(1Ë3,3(./$'8 &K\E\SURJUDPX 8SR]RUQQt3(./$'$ý( &K\E\V\VWpPX 7$%8/.$6<0%2/# 7$%8/.$.Ëä29é&+2'.$=# 32=1È0.<1$=È95 2%6$+ 328ä,7e35$0(1< 3RXåLWpSUDPHQ\
3RSLVNtåRYpKRSHNODGDþH($6<&$66
3URJUDPRYDFtMD]\NDVVHPEOHU7(6/$(/726
&5266$66(0%/(50HWD/LQN&RUSRUDWLRQ
,QWHUQHWRYVNpVWUiQN\ILUHPSRVN\WXMtFtNRPSLOiWRU\SURPLNURSURFHVRU[
2VREQtSR]QiPN\D]NXãHQRVWL
'RF,QJ5XGROI-DORYHFNê&6F
Y\YRM#MDOVRIWLROF] 5XGROI-DORYHFN\#YDERF]
CLR
SETB
CPL
A,
Rx,
a8,
@Rr, ,
DPTR,#d16
A,@A+
A,@A+PC
A,
,A
a8
a8
A,
A,
–
–
–
–
3/2
–
3/2
–
–
–
–
–
–
–
1/1
2/1
1/1
–
–
–
–
–
–
–
–
–
A
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
< bitové operace >
A
A
A
A
A
< posuny >
A,
A,
A,
a8,
a8,
A,
a8,
A
A
< logické operace >
A,
A,
A
A,
AB
AB
–
–
–
–
–
–
–
1/4
1/4
–
–
–
/b8
b8
2/1
2/1
2/1
–
–
–
–
–
2/1
–
2/1
–
–
2/1
–
–
–
–
1/1
1/1
2/1
2/1
–
2/1
–
–
1/1
–
2/2
–
–
–
–
–
–
–
–
1/1
–
Rx
1/1
1/1
1/1
1/1
1/1
1/1
–
1/1
2/1
–
1/1
2/1
1/1
1/1
1/1
–
1/1
1/1
1/1
1/1
1/1
–
–
< aritmetické operace >
RL
RLC
RR
RRC
SWAP
ANL
ANL
ORL
ORL
ORL
XRL
XRL
CLR
CPL
INC
INC
DEC
ADD
ADDC
DA
SUBB
MUL
DIV
MOV
MOV
MOV
MOV
MOV
MOVC
MOVC
MOVX
MOVX
PUSH
POP
XCH
XCHD
< přesuny >
1/1
1/1
1/1
C
–
–
–
–
–
1/1
–
1/1
–
–
1/1
–
–
–
–
2/1
2/1
1/1
1/1
–
1/1
–
–
2/1
2/2
3/2
2/2
–
–
–
–
–
2/2
2/2
2/1
–
a8
–
–
–
NC
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
1/1
1/1
–
–
–
–
–
–
1/1
–
2/2
–
–
–
–
1/2
1/2
–
–
1/1
1/1
–
–
–
B
–
–
–
–
–
–
2/1
2/1
–
3/2
2/1
3/2
–
–
–
–
–
2/1
2/1
–
2/1
–
–
2/1
2/1
3/2
2/1
–
–
–
–
–
–
–
–
–
–
–
–
NB
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
1/2
–
–
–
–
–
–
–
–
–
–
–
–
1/2
–
–
–
–
–
–
–
–
–
–
BC
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
1/2
1/2
–
–
–
–
@Rr #d8 DPTR @DPTR
Instrukční soubor mikroprocesorů 8051 / 8052
*
*
*
C
–
C
–
C
–
–
–
–
–
–
–
–
–
–
–
–
–
C
C
C
C
0
0
–
–
–
–
–
–
–
–
–
–
–
–
–
C
–
–
–
AC
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
AC
AC
AC
AC
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
AC
–
–
–
OV
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
OV
OV
–
OV
OV
OV
–
–
–
–
–
–
–
–
–
–
–
–
–
OV
–
–
–
P
–
P
–
P
–
P
–
P
–
P
P
–
P
–
P
–
–
P
P
P
P
P
P
P
P
–
–
–
P
P
P
P
–
–
P
P
P
( )←0
( )←1
( ) ← NOT ( )
vysvětlení
rotace vlevo
rotace vlevo přes C
rotace vpravo
rotace vpravo přes C
(A0–3) ↔ (A4–7)
(A) ← (A) AND ( )
(A) ← (A) AND ( )
(A) ← (A) OR ( )
(a8) ← (a8) OR ( )
(a8) ← (a8) OR ( )
(A) ← (A) XOR ( )
(a8) ← (a8) XOR ( )
(A) ← (0)
(A) ← NOT (A)
( ) ← ( ) +1
( ) ← ( ) +1
( ) ← ( ) –1
(A) ← (A)+( )
(A) ← (A)+(C)+( )
dokad.korekce po +
(A) ← (A)–(C)–( )
(A),(B) ← (A) * (B)
(A),(B) ← (A) / (B)
(A) ← ( )
(Rx) ← ( )
(a8) ← ( )
((Rr)) ← ( )
(DPTR) ← d16
(A) ← ((A)+(DPTR))c
(A) ← ((A)+(PC))c
(A) ← (( ))x
(( ))x ← (A)
zásobník ← (a8)
(a8) ← zásobník
(A) ↔ ( )
(A3–0) ↔ ( 3–0)
vysvětlení
–
–
2/1
2/2
–
–
–
–
–
–
–
–
–
–
–
–
–
3/2
–
–
–
–
–
–
–
–
–
–
–
3/2
3/2
–
–
–
–
–
–
–
–
–
–
3/2
–
Rx @Rr
A
–
–
–
–
2/2
–
–
2/2
2/2
–
–
–
–
–
2/2
2/2
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
3/2
a8
–
–
–
–
2/2
–
–
–
–
–
–
–
–
–
–
2/2
–
–
–
NZ
Z
–
–
–
–
–
–
–
–
2/2
–
–
–
–
–
–
–
–
3/2
–
–
–
–
–
–
3/2
–
…střadač
…registr R0÷R7
…nepřímá adresa v R0, R1
…přímá adresa
…bezprostřední data (8, 16 bitů)
…relativní adresa
…bitová adresa
…negovaný obsah buňky na adrese b8
1/1
2/2
3/2
1/2
1/2,
a11
2/2
a16
3/2
r8
2/2
@A+DPTR 1/2
r8
–
A,a8,r8
3/2
–
,#d8,r8
–
,r8
a11
a16
< ostatní >
A
Rx
@Rr
a8
d8, d16
r8
b8
(/b8)
NOP
C,
C,
C,b8
b8,C
r8
b8,r8
b8,r8
< skoky >
ACALL
LCALL
RET
RETI
AJMP
LJMP
SJMP
JMP
J
CJNE
CJNE
DJNZ
ANL
ORL
MOV
MOV
J
J
J
–
–
–
–
–
–
3/2
*
{SP}
x
c
1/1
–
–
–
–
–
–
–
–
–
–
C
C
–
C
C
C
C
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
OV
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
P
–
–
–
–
–
–
–
nic
( )←( )–1
(PC)←(PC)+3+if ((A)=(a8),r8,0)
(PC)←(PC)+3+if (( )=d8,r8,0)
(PC)←(PC)+3+if (( )=0,r8,0),
(PC) ← (SP), SP=SP – 2
(PC) ← (SP), SP=SP – 2
(PC)0–10 ← a11
(PC) ← a16
(PC) ← (PC) + 2 + r8
(PC) ← (A) + (DPTR)
(PC) ← (PC)+3+if ( ,r8,0)
{SP}←(PC+3).(PC)–a16,SP=SP+2
{SP}←(PC+2).(PC)–a11,SP=SP+2
(PC) ← (PC)+3+if( ,r8,0),(b8) ← 0
(C) ← (C) AND ( )
(C) ← (C) OR ( )
(C) ← (b8)
(b8) ← (C)
(PC) ← (PC)+2+if( ,r8,0)
(PC) ← (PC)+3+if( ,r8,0)
…počet slabik/cyklů
…paměť programu
…externí paměť dat
…ovlivňuje, je-li operandem
…ukládání do (SP+1) a (SP+2),
vybírání z (SP) a (SP-1)
–
–
–
–
–
–
–
–
–
–
–
–
–
AC
–
–
–
–
–
–
–
Instrukční soubor mikroprocesorů 8051 / 8052
A
Rx
a8
@Rr #d8 DPTR @DPTR
C
AC
OV
P
vysvětlení
< přesuny >
MOV
–
–
1/1 2/1 1/1 2/1
–
–
–
–
–
P
A,
(A) ← ( )
MOV
–
1/1
–
2/2
–
2/1
–
–
–
–
–
P
Rx,
(Rx) ← ( )
–
2/1 2/2 3/2 2/2 3/2
–
–
–
–
–
–
MOV
(a8) ← ( )
a8,
MOV
–
1/1
–
2/2
–
2/1
–
–
–
–
–
–
@Rr, ,
((Rr)) ← ( )
Přesun bytu z paměťového místa na jiné paměťové místo ve vnitřní datové paměti.
Instrukce MOV přesune obsah zdrojového bytu do cílového bytu bez ovlivnění jakýchkoliv příznaků.
MOV
DPTR,#d16 3/2
–
–
–
–
–
–
–
–
–
–
–
(DPTR) ← d16
Instrukce přesune obsah druhého a třetího bytu instrukce do ukazatele dat (DPTR). Druhý byte do DPH a třetí byte do DPL.
MOVC A,@A+
–
–
–
–
–
–
1/2
–
–
–
–
P
(A) ← ((A)+(DPTR))c
MOVC A,@A+PC 1/2
–
–
–
–
–
–
–
–
–
–
P
(A) ← ((A)+(PC))c
Instrukce přesune byte z programové paměti (operační kód nebo konstantu) do střadače. Adresa místa, jehož obsah se přesouvá,
získáme jako 16-bitový součet obsahu střadače (8 bitů) a ukazatele dat DPTR nebo čítače instrukcí PC. Pro případ čítače instrukcí
je jeho obsah před provedením instrukce inkrementován (ukazuje na následující instrukci).
MOVX A,
–
–
–
–
1/2
–
–
1/2
–
–
–
P
(A) ← (( ))x
MOVX
–
–
–
–
1/2
–
–
1/2
–
–
–
–
,A
(( ))x ← (A)
Instrukce přesune byte z/do střadače do/z vnější paměti dat. Instrukce mohou využívat 16-bitovou nebo 8-bitovou nepřímou adresu.
V prvním případě se vysílá adresa uložená v DPTR na bránu P2 (DPH) a bránu P0 (DPL). V druhém případě se vysílá na bránu P0
adresa uložená v registru R0 nebo R1 a na bráně P2 zůstává hodnota naposledy zapsaná.
–
–
–
2/2
–
–
–
–
–
–
–
–
zásobník ← (a8)
PUSH
a8
Instrukce přičte jedničku k ukazateli zásobníku a potom uloží obsah adresovaného místa do vrcholu zásobníku (zásobník je vždy
ve vnitřní datové paměti).
–
–
–
2/2
–
–
–
–
–
–
–
–
(a8) ← zásobník
POP
a8
Instrukce vyzvedne obsah vrcholu zásobníku a uloží jej na adresované paměťové místo.Pak odečte od ukazatele zásobníku jedničku.
XCH
–
–
1/1 2/1 1/1
–
–
–
–
–
–
P
A,
(A) ↔ ( )
Instrukce vymění (navzájem prohodí) obsah střadače a určeného registru nebo adresovaného paměťového místa.
XCHD
–
–
–
–
1/1
–
–
–
–
–
–
P
A,
(A3–0) ↔ ( 3–0)
Instrukce vymění (navzájem prohodí) obsah nižšího “půlbytu“ střadače s nepřímo adresovaným paměťovým místem vnitřní paměti
RAM.
< aritmetické operace >
INC
–
1/1
–
–
–
–
–
–
–
–
–
P
( ) ← ( ) +1
INC
–
–
1/1 2/1 1/1
–
1/2
–
–
–
–
–
( ) ← ( ) +1
Instrukce přičte k obsahu adresovaného paměťového místa jedničku. Po zvětšení hodnoty FFH dojde k přetečení na hodnotu 00H.
Inkrementace obsahu výstupní brány zvětšuje obsah přečtený z registru brány a nikoliv ze vstupně/výstupních vodičů.
Instrukce INC DPTR přičte jedničku k registrovému páru DPH a DPL, které vytváří 16-bitový ukazatel datové paměti DPTR. Dojde-li
při přičítání k přetečení u registru DPL (FFH → 00H) potom je přičtena jednička k registru DPH. Přičítání jedničky k DPTR probíhá
modulo 216 (FFFFH+1→ 0000H). Instrukce INC DPTR je jedinou 16-bitovou instrukcí v instrukčním souboru procesoru.
DEC
A
–
1/1
–
–
–
–
–
–
–
–
–
P
(A) ← (A) –1
DEC
–
–
1/1 2/1 1/1
–
–
–
–
–
–
–
( ) ← ( ) –1
Instrukce odečte jedničku od obsahu adresovaného paměťového místa. Po zmenšení hodnoty 00H dojde k podtečení na hodnotu
FFH. Dekrementace obsahu výstupní brány zmenšuje obsah přečtený z registru brány a nikoliv ze vstupně/výstupních vodičů.
ADD
–
–
1/1 2/1 1/1 2/1
–
–
C AC OV P
A,
(A) ← (A)+( )
Instrukce přičte obsah adresovaného bytu ke střadači a výsledek v něm ponechá.
ADDC
–
–
1/1 2/1 1/1 2/1
–
–
C AC OV P
A,
(A) ← (A)+(C)+( )
Instrukce přičte obsah adresovaného bytu a příznakový bit přenosu C ke střadači a výsledek v něm ponechá.
DA
A
–
1/1
–
–
–
–
–
–
C AC
–
P
dokad.korekce po +
Instrukce koriguje obsah střadače po binárním sčítání dvou dekadických čísel vyjádřených v BCD kódu tak, aby výsledek opět tvořil
dvě čtyřbitová BCD čísla. Je-li hodnota na nižších čtyřech bytech >9 nebo AC=1, potom se ke střadači přičte hodnota 6. Je-li hodnota
na vyšších čtyřech bitech >9 nebo AC=1, potom se ke střadači přičte hodnota 60H.
SUBB
–
–
1/1 2/1 1/1 2/1
–
–
C AC OV P
A,
(A) ← (A)–(C)–( )
Instrukce odečte obsah adresovaného bytu od střadače včetně příznaku přenosu (výpůjčky) a výsledek v něm ponechá. Je-li při
výpočtu vyžadována v bitu b7 výpůjčka, je příznakový bit C nastaven, v opačném případě je vynulován.
MUL
AB
1/4
–
–
–
–
–
–
–
0
– OV P
(A),(B) ← (A) * (B)
Instrukce vynásobí dvě osmibitová čísla bez znaménka uložená ve střadači a registru B. Je-li součin větší než hodnota 255 (FFH),
nastaví se příznakový bit přetečení OV=1. V opačném případě se OV vynuluje.
DIV
AB
1/4
–
–
–
–
–
–
–
0
– OV P
(A),(B) ← (A) / (B)
Instrukce provádí celočíselné dělení obsahu střadače s obsahem registru B. Celá část podílu zůstává ve střadači, zbytek (nikoliv
desetinná část) zůstává v registru B. Při dělení nulou se nastaví příznak přetečení OV=1.
< logické operace >
ANL
–
–
1/1 2/1 1/1
–
–
–
–
–
–
P
A,
(A) ← (A) AND ( )
ANL
–
–
–
–
–
2/1
–
–
–
–
–
P
A,
(A) ← (A) AND ( )
ANL
–
2/1
–
–
–
3/2
–
–
–
–
–
–
a8,
(a8) ← (a8) AND ( )
Instrukce ANL provede logický součin mezi odpovídajícími bity cílového a zdrojového bytu a výsledek uloží do cílového bytu. Je-li
cílovým bytem výstupní brána (přímá adresa), pak se operace provede mezi výstupním registrem a zdrojovým bytem (nikoliv
vstupními signály).
ORL
–
–
1/1 2/1 1/1 2/1
–
–
–
–
–
P
A,
(A) ← (A) OR ( )
–
2/1
–
–
–
–
–
–
–
–
–
–
ORL
(a8) ← (a8) OR ( )
a8,
–
–
–
–
–
3/2
–
–
–
–
–
–
ORL
(a8) ← (a8) OR ( )
a8,
Instrukce ORL provede logický součet mezi odpovídajícími bity cílového a zdrojového bytu a výsledek uloží do cílového bytu. Pro
operaci s výstupní bránou (přímá adresa) se operace provede mezi výstupním registrem a zdrojovým bytem (nikoliv vstupními
signály).
XRL
–
–
1/1 2/1 1/1 2/1
–
–
–
–
–
P
A,
(A) ← (A) XOR ( )
XRL
–
2/1
–
–
–
3/2
–
–
–
–
–
–
a8,
(a8) ← (a8) XOR ( )
Instrukce XRL provede operaci XOR (exclusive OR) mezi odpovídajícími bity cílového a zdrojového bytu a výsledek uloží do cílového
bytu. Pro operaci s výstupní bránou (přímá adresa) se operace provede mezi výstupním registrem a zdrojovým bytem (nikoliv
vstupními signály).
CLR
A
–
1/1
–
–
–
–
–
–
–
–
–
P
(A) ← (0)
Instrukce vynuluje obsah střadače.
CPL
A
–
1/1
–
–
–
–
–
–
–
–
–
–
(A) ← NOT (A)
Instrukce neguje každý bit střadače a vytváří tak jeho jednotkový doplněk.
< posuny >
RL
A
–
1/1
–
–
–
–
–
–
–
–
–
–
rotace vlevo
Instrukce osmibitové logické rotace střadače o jednu pozici vlevo.
RLC
A
–
1/1
–
–
–
–
–
–
C
–
–
P
rotace vlevo přes C
Instrukce devítibitové logické rotace střadače a příznaku přenosu o jednu pozici vlevo.
RR
A
–
1/1
–
–
–
–
–
–
–
–
–
–
rotace vpravo
Instrukce osmibitové logické rotace střadače o jednu pozici vpravo.
RRC
A
–
1/1
–
–
–
–
–
–
C
–
–
P
rotace vpravo přes C
Instrukce devítibitové logické rotace střadače a příznaku přenosu o jednu pozici vpravo.
SWAP A
–
1/1
–
–
–
–
–
–
–
–
–
–
(A0–3) ↔ (A4–7)
Instrukce prohodí navzájem obsah nižšího a vyššího “půlbytu“ střadače. Instrukce je shodná s osmibitovou rotací o čtyři bity vpravo
nebo vlevo.
b8
/b8
C
NC
B
NB
BC
C
AC
OV
P
vysvětlení
< bitové operace >
CLR
–
2/1
–
1/1
–
–
–
–
*
–
–
–
( )←0
Instrukce vynuluje adresovaný bit. Ovlivňuje: C,AC,F0,RS1,RS0,OV,P jen je-li adresován.
SETB
–
2/1
–
1/1
–
–
–
–
*
–
–
–
( )←1
Instrukce nastaví přímo adresovaný bit na log.1.
CPL
–
2/1
–
1/1
–
–
–
–
*
–
–
–
( ) ← NOT ( )
Instrukce neguje adresovaný bit. Ovlivňuje: C,AC,F0,RS1,RS0,OV,P jen je-li adresován.
ANL
–
2/2 2/2
–
–
–
–
–
C
–
–
–
C,
(C) ← (C) AND ( )
Logický součin příznaku přenosu C s přímo adresovaným bitem. Výsledek operace se uloží do příznaku C. Je-li před adresou bitu
lomítko, potom hodnota bitu bude před operací negována. Adresovaný bit lze adresovat jenom přímou adresou.
ORL
–
2/2 2/2
–
–
–
–
–
C
–
–
–
C,
(C) ← (C) OR ( )
Logický součet příznaku přenosu C s přímo adresovaným bitem. Výsledek operace se uloží do příznaku C. Je-li před adresou bitu
lomítko, potom hodnota bitu bude před operací negována. Adresovaný bit lze adresovat jenom přímou adresou.
2/1
–
–
–
–
–
–
–
C
–
–
–
(C) ← (b8)
MOV
C,b8
MOV
b8,C
2/2
–
–
–
–
–
–
–
–
–
–
–
(b8) ← (C)
Instrukce přesune hodnotu mezi příznakem přenosu C a daným bitem.
–
–
–
2/2 2/2
–
–
–
–
–
–
–
r8
(PC) ← (PC)+2+if( ,r8,0)
J
Instrukce JC testuje příznak přenosu a v případě jeho nastavení (log.1) provede skok na adresu, kterou vypočte jako součet čítače
instrukcí a relativní adresy.
Instrukce JNC testuje příznak přenosu a v případě jeho nulovosti (log.0) provede skok na adresu, kterou vypočte jako součet čítače
instrukcí a relativní adresy.
–
–
–
–
–
3/2 3/2
–
–
–
–
–
b8,r8
(PC) ← (PC)+3+if( ,r8,0)
J
Instrukce JB testuje adresovaný bit a v případě jeho nastavení (log.1) provede skok na adresu, kterou vypočte jako součet čítače
instrukcí a relativní adresy.
Instrukce JNB testuje adresovaný bit a v případě jeho nulovosti (log.0) provede skok na adresu, kterou vypočte jako součet čítače
instrukcí a relativní adresy.
–
–
–
–
–
–
–
3/2
–
–
–
–
b8,r8
(PC) ← (PC)+3+if( ,r8,0),(b8) ← 0
J
Instrukce testuje adresovaný bit a v případě jeho nastavení (log.1) provede skok na adresu, kterou vypočte jako součet čítače
instrukcí a relativní adresy a vynuluje testovaný bit.
A
Rx @Rr
a8
Z
NZ
C
AC
OV
P
< skoky >
{SP}←(PC+2).(PC)–a11,SP=SP+2
2/2
–
–
–
–
–
–
–
–
–
–
ACALL a11
Volání podprogramu uvnitř 2kB adresovaného prostoru (11-bitová adresa). Instrukce uloží návratovou adresu do zásobníku s tím, že
nejprve uloží nižší a potom vyšší byte. Volaný podprogram musí ležet uvnitř 2kB stránky, ve které leží instrukce následující po
instrukci ACALL.
{SP}←(PC+3).(PC)–a16,SP=SP+2
3/2
–
–
–
–
–
–
–
–
–
–
LCALL a16
Instrukce vykoná nepodmíněné volání podprogramu z přímo uvedené adresy ve svém druhém (vyšší byte) a třetím (nižší byte) bytu.
Před uložením přečtené adresy do čítače instrukcí (PC) se uloží návratová adresa (současný stav PC=adresa následující instrukce)
do zásobníku.
RET
1/2
–
–
–
–
–
–
–
–
–
–
(PC) ← (SP), SP=SP – 2
Instrukce návratu z podprogramu vyzvedne ze zásobníku dva byty a uloží je do čítače instrukcí (PC). Nejprve vyjme vyšší byte a
potom nižší byte a odečte od ukazatele zásobníku hodnotu dvě.
RETI
1/2,
–
–
–
–
–
–
–
–
–
–
(PC) ← (SP), SP=SP – 2
Instrukce návratu z obslužného podprogramu přerušení vyzvedne ze zásobníku dva byty a uloží je do čítače instrukcí (PC). Nejprve
vyjme vyšší a potom nižší byte a odečte od ukazatele zásobníku hodnotu dvě. Nakonec povolí přijetí žádosti o přerušení se stejnou
nebo nižší úrovní priority. Stavové slovo se automaticky neobnovuje.
2/2
–
–
–
–
–
–
–
–
–
–
(PC)0–10 ← a11
AJMP
a11
Krátký nepodmíněný skok na adresu uvnitř 2kB stránky.
LJMP
a16
3/2
–
–
–
–
–
–
–
–
–
–
(PC) ← a16
Instrukce vykoná nepodmíněný skok na adresu přímo uvedenou ve svém druhém (vyšší byte) a třetím (nižší byte) bytu. Adresa může
ležet kdekoliv v 64kB adresovém prostoru.
SJMP
r8
2/2
–
–
–
–
–
–
–
–
–
–
(PC) ← (PC) + 2 + r8
Instrukce realizuje krátký nepodmíněný skok na definovanou adresu, která se vypočítá jako součet čítače instrukcí ukazujícího na
adresu následující instrukce a posunu (-128;127) určeného relativní adresou.
JMP
@A+DPTR 1/2
–
–
–
–
–
–
–
–
–
–
(PC) ← (A) + (DPTR)
Instrukce nepřímého nepodmíněného skoku na adresu určenou 16-bitovým součtem obsahu střadače (8 bitů bez znaménka)
s obsahem ukazatele datové paměti DPTR.
–
–
–
–
–
2/2 2/2
–
–
–
–
r8
(PC) ← (PC)+3+if ( ,r8,0)
J
Instrukce JZ testuje obsah střadače a v případě je nulovosti provede skok na adresu, kterou vypočte jako součet čítače instrukcí a
relativní adresy.
Instrukce JNZ testuje obsah střadače a v případě je nenulovosti provede skok na adresu, kterou vypočte jako součet čítače instrukcí a
relativní adresy.
(PC)←(PC)+3+if ((A)=(a8),r8,0)
3/2
–
–
–
–
–
–
C
–
–
–
CJNE
A,a8,r8
(PC)←(PC)+3+if (( )=d8,r8,0)
CJNE
–
3/2 3/2
–
3/2
–
–
C
–
–
–
,#d8,r8
Instrukce porovná střadač nebo registr Rr nebo byte adresovaný registry R0,R1 se zdrojovým bytem (adresa,data). V případě jejich
nerovnosti provede relativní skok (maximálně o +127 nebo -128 bytů) na požadovanou adresu. Adresa skoku se vypočte přičtením
relativního posunu k čítači instrukcí, který byl nejprve třikrát inkrementován v důsledku čtení prováděné instrukce. Je-li cílový byte
menší než zdrojový, je zároveň nastaven příznak přenosu C=1, jinak se nuluje C=0.
(PC)←(PC)+3+if (( )=0,r8,0),
DJNZ
–
–
3/2 3/2
–
–
–
–
–
–
–
,r8
( )←( )–1
Instrukce odečte od adresovaného paměťového místa jedničku a zjistí, zda je výsledek nulový. Je-li výsledek nenulový, provede skok
na definovanou adresu.
< ostatní >
NOP
1/1
Kromě čítače instrukcí neovlivňuje instrukce žádné registry a příznaky.
A
Rx
@Rr
a8, a11, a16
#d8, #d16
r8
b8
(/b8)
…střadač
1/1
…registr R0÷R7
c
…nepřímá adresa v R0, R1(obsah registru určuje x
adresu místa s jehož obsahem se bude pracovat)
…přímá adresa
*
…bezprostřední data (8, 16 bitů)
{SP}
…relativní adresa
…bitová adresa
…negovaný obsah buňky na adrese b8
Co je cílový a zdrojový operand:
kód instrukce cílový byte,zdrojový byte,příp. 3.operand
např. MOV cílový byte (bit), zdrojový byte(bit)
–
–
–
–
nic nevykonává
…počet slabik/cyklů
…paměť programu
…externí paměť dat
…ovlivňuje, je-li operandem
…ukládání do (SP+1) a (SP+2),
vybírání z (SP) a (SP-1)
Obecně o AT89C2051
•
•
•
•
•
•
•
•
•
•
•
•
kompatibilita s Intel 8051
2 kB interní programové FLASH ( 1000 zápisových cyklů )
rozsah napětí od 2.7 do 6 V
oscilátor 0 Hz až 24 MHz
128 bytů vnitřní paměti RAM
15 programovatelných I/O pinů
dva 16-ti bitové čítače/časovače
Popis pinů mikroprocesoru AT89C2051 (příkl,) :
5 zdrojů přerušení
1) Res et
plně duplexní sériová linka
2) K om un ik ac e p o s ér i o v é l i nc e
dvouúrovňová ochrana dat
3) K om un ik ac e p o s ér i o v é l i nc e
2 úsporné režimy napájení
4) Kr ys ta l
5) Kr ys ta l
analogový komparátor
6) I/ 0 br án a ( t l ač í tk o 1)
7) I/ 0 br án a ( t l ač í tk o 2)
8) I/ 0 br án a ( t l ač í tk o 3)
9) I/ 0 br án a ( t l ač í tk o 4)
10) U zem n ě ní
11) I/ 0 br á na ( v ýs tu p n a r e lé)
12) I/ 0 br á na ( L ED 8)
13) I/ 0 br á na ( L ED 7)
14) I/ 0 br á na ( L ED 6)
15) I/ 0 br á na ( L ED 5)
16) I/ 0 br á na ( L ED 4)
17) I/ 0 br á na ( L ED 3)
18) I/ 0 br á na ( L ED 2)
19) I/ 0 br á na ( L ED 1)
20) N ap áj en í + 5 V
Jde o jednočipový 8. bitový mikroprocesor s Harvardskou strukturou ( oddělena datová a
programová paměť ). AT89C2051 je určen pro jednoduché aplikace, u kterých není potřeba
mnoho I/O pinů a paměti programu a dat. Oproti standartní řadě x51 obsahuje navíc
analogový komparátor se vstupy na P1.0 a P1.1. Jeho výstup je softwarově přistupný na bitu
P3.6. Velice dobře je propracován systém ochrany dat. Každý I/O pin může přímo budit LED
diodu ( až 20mA ), takže nejsou potřeba žádné okolní posilovače.
připojením krystalu a dvou kondenzátorů získáme plně funkční mikropočítač.
Cena typu AT89C2051-24PC se pohybuje okolo 70Kč
Procesor může pracovat za těchto podmínek :
a) piezoelektrický rezonátor = krystal ( 11,95 Mhz )
b) napájením 5V ( GND,VCC )
c) připojením k I/O branám, které zajišťují styk s vnějším prostředím
Při přivedení napětí n mikroprocesor dojde k RESETU => P1 – 11111111
P3 – 11111111
speciální registry – 00000000
R0 až R7 se neresetují
zásobník má svou hodnotu
Blokové schéma mikrořadiče AT89C2051
Vnitřní bloková struktura procesoru 8051
Vnitřní paměť RAM procesoru 8051
Zkušební zapojení

Podobné dokumenty

Obecný popis křížových překladačů pro x51

Obecný popis křížových překladačů pro x51 3RNXG MH QD PtVW RSHUDQGX StPi GLUHFW  DGUHVD MH PRåQR SRXåtW EX QXPHULFNRX KRGQRWX ] LQWHUYDOX ))+  QHER V\PEROLFNp MPpQR VSHFLiOQtKR IXQNþQtKR UHJLVWUX 6WHMQp SUDYLGO...

Více

Středoškolská odborná činnost 2006/2007 DIY

Středoškolská odborná činnost 2006/2007 DIY kondenzorem zalomeny a usměrněny na fresnelovu čočku. Třetí funkce, nebo spíše výhoda použití kondenzoru vyplývá ze skutečnosti, která byla popsána v předchozím odstavci. Paprsky, které projdou kon...

Více

Popis řady 709

Popis řady 709 Proto je nepřípustné ji používat k jiným účelů, než byla určena. Reprodukování, šíření a poskytnutí tohoto dokumentu, jeho částí nebo jeho obsahu třetí osobě je bez výslovného souhlasu vlastníka do...

Více

STEDNÍ PRMYSLOVÁ ŠKOLA ELEKTROTECHNIKY

STEDNÍ PRMYSLOVÁ ŠKOLA ELEKTROTECHNIKY Model Ĝeší problém Ĝídícího softwaru a elektroniky pro Ĝízení osobního výtahu. Z hlediska softwaru je to pĜedevším správná algoritmizace, ošetĜení nežádoucích elektromechanických jevĤ, realizace Ĝí...

Více

Základy programování 8051

Základy programování 8051 nepodmíněný skok v celém adr. rozsahu JMP @A+DPTR Význam a použití prvních třech instrukcí pro nepodmíněný skok je zřejmý - liší se pouze v rozsahu, ve kterém může ležet adresa skoku. Povšimněme si...

Více

µ-PROCESOROVÁ TECHNIKA

µ-PROCESOROVÁ TECHNIKA jsou zapsány v binárním tvaru a obvykle jsou interpretovány v hexa tvaru (lepší itelnost). Programování ve strojovém kódu je tedy velmi náro né na pozornost programátora (napsat delší program bez c...

Více

PDF Stahuje zde

PDF Stahuje zde END - ukončení programu a návrat do Basicu READ - výpis obsahu paměti od zadané 4-místné hexadresy WRITE - zápis hexčísel od zadané hexadresy START - spuštění programu od zadané hexadresy SAVE#1 - ...

Více