Ako vytvoriť port na príjem mcs 51. Mikrokontroléry z rodiny mcs51. Príkazy bitových operácií
Stav systému prerušenia je zisťovaný na konci každého cyklu stroja vo fáze S5P2, s výnimkou príkazov RETI a akýchkoľvek príkazov odkazujúcich na registre IE a IP. Od okamihu opravy požiadavky na prerušenie do servisu prerušenia trvá od 38 do 86 periód frekvencie fOSC, v závislosti od fázy požiadavky a počtu strojových cyklov príkazu, počas ktorého bola žiadosť prijatá .
Keď je prerušenie implementované v hardvéri, vykoná sa inštrukcia LCALL addr16, ktorá zaistí uloženie aktuálneho stavu programového počítadla do pamäte (uloženie návratovej adresy) a presun na štartovaciu adresu addr16 zodpovedajúcej servisnej procedúry. Každý zdroj žiadosti o prerušenie má svoj vlastný
počiatočná adresa (vektor prerušenia): |
||||
Externé prerušenie INT0. |
||||
Časovač / počítadlo prerušenia TC0. |
||||
Externé prerušenie INT1. |
||||
Časovač / počítadlo prerušenia TC1. |
||||
Prerušenie sériového portu. |
2.7. Metódy adresovania a systém príkazov z rodiny MCS-51
Riadiaci systém rodiny MCS-51 je zameraný na organizáciu flexibilného vstupu a výstupu údajov prostredníctvom univerzálnych portov P0 ... P3 a primárne spracovanie informácií. Zvláštna pozornosť je venovaná operáciám s bitmi a prenosu kontroly podľa ich hodnoty. Pokyny na vykonávanie týchto operácií predstavujú veľkú skupinu a spolu s príslušným hardvérom tvoria v architektúre MCS-51 takzvaný „booleovský procesor“.
Sada inštrukcií poskytuje programátorovi možnosť používať väčšinu operácií s úplnou sadou metód adresovania a hardvérovými prostriedkami dostupnými pre softvér.
2.7.1. Spôsoby adresovania
Každá inštrukcia informuje procesor o operácii, ktorú má vykonať, a o spôsoboch prístupu k operandom. Kód príkazu má niekoľko polí, ktoré majú konkrétny funkčný účel. Najdôležitejšími poľami akéhokoľvek príkazu sú operačný kód (CPC), ktorý určuje činnosť príkazu, a časť adresy. Polia adresnej časti obsahujú informácie o adresách operandov a výsledku operácie a v niektorých prípadoch informácie o adrese nasledujúceho príkazu.
Ak adresa ukazuje na číslo pamäťovej bunky, v ktorej sa operand nachádza alebo kde je zapísaný, nazýva sa to priama adresa.
Metódy adresovania sú súborom mechanizmov na prístup k operandom. Niektoré z nich sú jednoduché, vedú k kompaktnému formátu inštrukcií a rýchlemu prístupu k operandu, ale majú obmedzené množstvo dostupných zdrojov. Ostatní vám umožňujú pracovať so všetkými zdrojmi, ktoré má systém k dispozícii, ale príkaz sa ukáže byť dlhý
vstup a prevedenie je časovo náročné. Sada spôsobov adresovania v každom súbore inštrukcií je kompromisnou kombináciou známych mechanizmov adresovania, ktoré vybrali architekti na základe súboru úloh, ktoré je potrebné vyriešiť.
Nasledujú hlavné metódy adresovania používané v rodine príkazov MCS-51.
Implicitné adresovanie... Príkaz neobsahuje explicitné pokyny o adrese operandu zúčastňujúceho sa operácie alebo adrese, na ktorej je umiestnený výsledok operácie, ale táto adresa je implikovaná. V príkazoch je akumulátor najčastejšie implicitne adresovaný ako prijímač výsledku operácie. Napríklad výsledok pridania obsahu akumulátora (A) a registra R1 aktuálnej databanky s inštrukciou ADD A, R1 sa zapíše do implicitne adresovateľného akumulátora. Celý zadaný príkaz zaberá jeden bajt v pamäti, pričom adresa iba akumulátora (8Eh oblasti SFR) obsahuje jeden bajt.
Priame adresovanie... Pole adresy príkazu obsahuje
Adresa nie je adresou operandu, ale samotného operandu. Priame adresovanie je označené špeciálnym znakom # pred číslom. Napríklad pomocou príkazu MOV A, # 15h sa do akumulátora načíta hexadecimálne číslo 15 (druhý bajt príkazu). V príkazovom systéme je priame adresovanie označené ako #data, kde údaje sú číslo
(údaje = 00h ... FFh).
Priame adresovanie... Pole adresy príkazu udáva priamu adresu bunky dátovej pamäte, v ktorej sa operand nachádza alebo kde je zapísaný. Napríklad pomocou príkazu MOV A, 15h sa do bunky nahrá obsah bunky DSEG s adresou 15h. Bunka pamäte je priamo adresovateľná, zatiaľ čo akumulátor je implicitný. V závislosti od umiestnenia adresovaného operandu je priame adresovanie rozdelené na priamy register a absolútny.
Priame adresovanie registra... Pole adresy príkazu obsahuje priamu adresu registra aktuálnej banky registrov. V každej banke je osem registrov a na ich adresovanie je potrebná trojbitová adresa dopredu. V mnemotechnike príkazov je adresovateľný register označený ako Rn, kde n = 0 ... 7. Všetky príkazové polia sa zmestia do jedného bajtu. Toto sa nazýva krátke adresovanie. Napríklad MOV R4, R1.
Priame absolútne adresovanie vám umožňuje odkazovať na akúkoľvek bunku DSEG a oblasť SFR. Priama adresa v tomto prípade trvá jeden bajt a príkaz - dva bajty. V príkazovom systéme je bajt priamej adresy označený slovom direct (direct = 00h… FFh). Napríklad inštrukcia MOV 80h, R2 (alebo MOV P0, R2) načíta obsah registra R2 aktuálnej dátovej banky do portu P0 (umiestnenie 80h oblasti SFR). Ak majú oba operandy priame absolútne adresovanie, potom sa inštrukcia stane trojbajtovou (napríklad MOV 80h, 15h).
Nepriame adresovanie... Pole adresy obsahuje adresu pamäťovej bunky, v ktorej sa nachádza priama adresa operandu. V príkazovom systéme špeciálny symbol @ označuje nepriame adresovanie. Nehnuteľnosť
registre R0 a R1 (@Ri, i = 0,1) každej banky registrov majú priamu adresu. Ak je napríklad obsah registra R1 aktuálnej banky registrov 15 hodín, potom inštrukcia MOV A, @ R1 vykoná rovnakú akciu ako vyššie uvedená inštrukcia MOV A, 15 hodín - načíta obsah pamäťovej bunky DSEG s adresou 15h do akumulátora. Inštrukcia MOV A, @ R1 je však jednobajtová, ale čo je najdôležitejšie, je možné programovo zmeniť adresu zmenou obsahu registra R1.
Relatívne adresovanie... Pri relatívnom adresovaní je priama adresa vytvorená pridaním základnej adresy do poľa adresy príkazu. Obsah počítadla programu sa používa ako základná adresa a pole adresy príkazu je osembitový offset rel (relatívny). Číslo rel je príkazom interpretované ako celé číslo so znamienkom, reprezentované dvoma doplnkami. Rozsah jeho prezentácie je (-128 ... + 127). Pri určovaní čísla rel majte na pamäti, že počítadlo programu ukazuje na nasledujúci príkaz, ktorý sa má vykonať. Relatívne adresovanie je široko používané v príkazoch riadenia prenosu, čo vám umožňuje vytvárať premiestniteľné moduly programu. Riadiace prenosové príkazy s relatívnym adresovaním umožňujú organizovať vetvenie vzhľadom na aktuálnu polohu počítačového programového počítadla v oboch smeroch (-128 ... + 127) bajtov.
V programoch jazykov zostavovania môžete v poli odsadenia určiť štítok, na ktorý sa má skočiť. V dôsledku prekladu assembler vypočíta hodnotu posunu, ak nepresahuje (-128 ... + 127). V opačnom prípade sa zobrazí chybové hlásenie.
Základné adresovanie predstavuje druh relatívneho adresovania. Priama adresa je v tomto prípade vytvorená pridaním adresy uvedenej v príkaze k obsahu základného registra, ktorý ukladá základnú adresu. Funkciou základného registra v rade MCS-51 je register dátového ukazovateľa DPTR alebo počítačový programový čítač. Tento typ adresovania je obzvlášť užitočný pri spracovaní tabuliek a dátových polí. V pokynoch MOVC A, @ A + DPTR a MOVC A, @ A + PC je 16-bitová adresa dopredu vytvorená ako súčet obsahu DPTR a A alebo PC a A.
Adresovanie stránky... Keď sa používa stránkovanie, pamäť je rozdelená na sériu strán rovnakej dĺžky. Stránky sú adresované samostatným registrom stránok a bunky pamäte na stránke sú adresované adresou uvedenou v príkaze. Priama adresa je vytvorená zreťazením (pripojením) adresy stránok a adresy pamäťovej bunky v rámci stránky. V inštrukcii MOVX A, @ Ri port P2 (vysoký bajt adresy) plní funkciu registra stránok a obsah registra Ri (nízky bajt adresy) nastavuje adresu v rámci stránky. V tomto prípade je pamäť rozdelená na 256 stránok po 256 buniek v každom z nich.
Adresovanie zásobníka sa používa v neadresovateľných príkazoch a je kombináciou metód automatického prírastku a automatického znižovania, ktoré fungujú na princípe LIFO (L ast I nput - F irst O utput) - „posledný vstup - prvý výstup“. Zásobník sa nachádza v DSEG a rastie v smere zvyšovania adresy. Adresa vrcholu zásobníka je obsiahnutá v ukazovateli zásobníka SP. Keď je do zásobníka zapísaný bajt, najskôr sa zvýši obsah SP a potom sa vykoná zápis na túto adresu. Pri čítaní bajtu zo zásobníka číta najskôr na adrese, na ktorú ukazuje SP, a potom SP zníži. Pri použití zásobníka je potrebné mať na pamäti, že hĺbka zásobníka (maximálny počet pamäťových buniek obsadených zásobníkom) nie je riadená hardvérom. Pri nadmernom náraste zásobníka môžu byť pamäťové bunky, ktoré na to nie sú určené, obsadené stratou informácií v nich. Hardvérový zásobník sa používa na ukladanie návratovej adresy pri obsluhe prerušenia.
2.7.2. Sada príkazov rodiny MCS-51
Systém príkazov je uvedený v tabuľkách A2.1 ... A2.6 dodatku 2. Tabuľky uvádzajú názov príkazu, jeho mnemotechniku, kód binárnej operácie, vplyv vykonávaného príkazu na vlajky C, OV , AC a P, dĺžka príkazu v bajtoch (B) a doba vykonania v strojových cykloch (C), ako aj obsah transformácie vykonanej inštrukciou. Čiarka sa používa ako oddeľovač pre polia adries v príkazoch. Ak chcete zlepšiť čitateľnosť, môžete za čiarku pridať medzery, ak ich používa práve používaný assembler.
Celý súbor príkazov je možné rozdeliť do 5 skupín: operácie prenosu údajov, aritmetické operácie, logické operácie, bitové operácie a operácie riadenia prenosu.
Skupina príkazov pre operácie prenosu dát(tabuľka A2.1) s-
pojme príkazy MOV (prenos dát medzi DSEG a RSEG), MOVC (medzi CSEG a A), MOVX (medzi XSEG a A), prístupy do zásobníka PUSH a POP a dva výmenné príkazy XCH a XCHD. Všetky príkazy na prenos údajov, ktoré prijímajú batériu, nastavujú príznak parity P obsahu batérie a príkazy na priamu adresu, ktoré prijímajú register PSW, menia všetky príznaky. Najobjemnejšou je inštrukcia MOV, ktorá používa štyri metódy adresovania: register direct (A, Rn, DPTR), direct (direct), nepriamy (@Ri), direct (#data, # data16). Druhý operand príkazu je zdroj, prvý je cieľ. Existujú tri spôsoby adresovania (okrem priameho) na označenie cieľa a všetky štyri spôsoby uvedenia zdroja. Trojbajtový priamy, priamy prenos príkazov MOV medzi akýmikoľvek dvoma pamäťovými miestami (DSEG a SFR) vrátane RSEG. Na výmenu s RSEG sú k dispozícii špeciálne dvoj- a jednobajtové formáty:
Špeciálna inštrukcia MOV DPTR # data16 načíta 16-bitový ukazovateľ DPTR s údajmi16.
Inštrukcia MOVC vám umožňuje čítať informácie z pamäte programu CSEG nie do príkazového registra riadiaceho zariadenia, ale do batérie ovládacieho zariadenia. Príkaz používa dve metódy adresovania: založené na DPTR a relatívne k počítaču. V oboch prípadoch je celočíselný posun (index) bez znamienka uložený v akumulátore. Batéria slúži aj ako prijímač výsledku. Príkaz vám umožňuje vykonávať rýchle transkódovanie medzi tabuľkami.
K externej pamäti sa pristupuje pomocou inštrukcie MOVX. Výmenu vykonávajú bajty medzi batériou a externým XSEG. Bunku XSEG je možné adresovať dvoma spôsobmi: nepriamo prostredníctvom 16-bitového ukazovateľa DPTR a nepriamo stránkovať prostredníctvom 8-bitového ukazovateľa Ri, i = 0,1. V druhom prípade sa ako register stránok používa register P2.
Neadresné príkazy PUSH a POP poskytujú prenos dát
medzi DSEG, RSEG a SFR.
Výmenná inštrukcia XCH poskytuje obojsmernú výmenu bytov a inštrukcia XCHD poskytuje najmenej významné tetrady bajtových operandov.
Skupina aritmetických príkazov(tabuľka A2.2) co-
obsahuje inštrukcie na sčítanie ADD, sčítanie s carry ADDC, odčítanie s vypožičaním SUBB, prírastok a úbytok o jeden INC a DEC, sčítaný formát BCD sčítanie, násobenie MUL a delenie DIV. Operácie sa vykonávajú s celými číslami bez znamienka. Pri operáciách sčítania a odčítania je akumulátor prvým operandom a príjemcom výsledku. Na definovanie druhého operandu sa používa priamy register, priame absolútne, priame a nepriame adresovanie. Operácie INC a DEC sa vzťahujú na akumulátor, priamo adresovateľný register alebo priamo alebo nepriamo adresovateľné pamäťové miesto. Operácia INC sa navyše vzťahuje na obsah 16-bitového registra ukazovateľa DPTR.
Operácie násobenia a delenia celého čísla bez znamienka zahŕňajú akumulátor a register B. Pri násobení je 8-bitová hodnota A vynásobená 8-bitovou hodnotou B a 16-bitový výsledok je zapísaný do dvojice BA. V takom prípade register B ukladá hornú časť produktu. Príznak OV sa nastaví, ak je produkt väčší ako 255. Keď je 8-bitová hodnota A delená 8-bitovou hodnotou B, kvocient sa zapíše do A a zvyšok sa zapíše do B. Keď sa urobí pokus. na delenie 0, je nastavený príznak pretečenia OV.
Príkaz DA na opravu desatinných miest akumulátora je umiestnený za príkazom pridať. Termíny musia byť uvedené v kóde BCD. Oprava sa vykonáva štandardným spôsobom.
Skupina príkazov pre logické operácie(tabuľka A2.3 ) obsahuje tri typické operácie: ANL - logické AND, ORL - logické ALEBO, XRL - logické exkluzívne ALEBO. Zdroj prvého operandu
slúži buď akumulátor A, alebo priamo adresovateľná pamäťová bunka. Druhý operand je určený jednou zo štyroch základných metód adresovania. Skupina tiež zahŕňa jednotlivé operácie nad obsahom akumulátora: CLR - číry, CPL - inverzia, ako aj RL, RLC, RR a RRC - operácie cyklických a predĺžených posunov doprava a doľava. Patrí sem aj prevádzka výmeny notebookov v akumulátore SWAP, ktorú je možné interpretovať ako cyklický posun bajtu o štyri číslice.
Skupina bitových operácií(tabuľka A2.6) obsahuje ko-
príkazy SETB - nastavenie bitu na 1, CLR - vynulovanie bitu na 0, CPL - bitová inverzia, ANL a ORL - logické A a logické ALEBO obsah príznaku C a priamo adresovaný bit, MOV - prenos bitov.
IN bitové operácie, príznak C funguje ako booleovský akumulátor. Operandy sú obsah príznaku C alebo priamo adresovateľný bit oblasti BSEG. Operácie ANL a ORL môžu využívať obsah priamo adresovateľného bitu (bit) alebo inverziu obsahu (/ bit).
IN táto skupina zahŕňa aj príkazy na podmienené vetvenie s relatívnymi 8-bitový offset rel. Podmienený skok je možné vykonať tak s bitom set (príkaz JB), ako aj s vymazaním (príkaz JNB). Zvlášť pozoruhodný je príkaz JBC, ktorý keď je bit nastavený, implementuje vetvenie a súčasne vymaže bit na 0.
Ovládajte skupinu príkazov prenosu(tabuľky A2.4 a A2.5) s-
drží bezpodmienečné skokové príkazy AJMP, LJMP, SJMP, JMP, podmienený skok JZ, JNZ, CJNE, volanie ACALL, LCALL, návrat RET, RETI a úpravu pomocou podmieneného skoku DJNZ. Súčasťou je aj prázdny príkaz NOP.
IN Relatívne adresovanie je široko používané v riadiacich prenosových príkazoch, čo vám umožňuje vytvárať premiestniteľné programové moduly. Relatívna adresa je 8-bitový offset rel je podpísaný bajt, ktorý poskytuje skok (–128… +127) bajtov vzhľadom na aktuálnu polohu počítača. Na skok na akékoľvek iné miesto v 64K adresnom priestore je možné použiť buď priamu adresu addr16 alebo nepriamu adresu @ A + DPTR. V druhom prípade je obsah A interpretovaný ako celé číslo bez znamienka. Krátky variant addr11 s priamym adresovaním na aktuálnej stránke 2 kB bol zavedený kvôli kompatibilite s rodinou MCS-48.
Všetky tieto typy adresovania sa používajú v skokových pokynoch. V príkazoch na volanie sa používajú iba metódy priameho addr16 a intrapage addr11. Všetky podmienené príkazy používajú iba relatívne adresovanie.
Keď mikrokontrolér rozpozná požiadavku na prerušenie, vygeneruje inštrukciu LCALL addr16, ktorá automaticky zaistí, že návratová adresa je uložená v zásobníku. Informácie o stave programu (obsah registra PSW) sa automaticky neukladajú. Kde
Mikrokontrolérová architektúra
Pochopenie architektúry mikrokontrolérov je kľúčové pri učení sa programovacích jazykov, ako je napríklad montáž. Štruktúra assembleru, formát jeho pokynov, adresovanie operandov atď. Sú úplne určené architektúrou. Cieľom štúdia architektúry je:
· Identifikácia súboru registrov dostupných na programovanie, ich funkčného účelu a štruktúry;
· Pochopenie organizácie pamäte s náhodným prístupom a poradia jej použitia;
· Znalosť dátových typov;
· Štúdium formátu strojových inštrukcií;
· Objasnenie organizácie spracovania prerušenia.
Architektúra rodiny MCS -51 je do značnej miery predurčená jej účelom - výstavbou kompaktných a lacných digitálnych zariadení. Všetky funkcie MK sú implementované pomocou jedného mikroobvodu. Rodina MCS-51 obsahuje celý rad mikroobvodov od najjednoduchších mikrokontrolérov po najzložitejšie. Mikrokontroléry radu MCS-51 vám umožňujú vykonávať obe riadiace úlohy pre rôzne zariadenia a implementovať jednotlivé uzly analógového obvodu. Všetky mikroobvody tejto rodiny pracujú s rovnakým príkazovým systémom, väčšina z nich je vykonaná v rovnakých balíkoch s rovnakým vývodom (číslovanie pinov pre balík). To umožňuje použitie mikroobvodov od rôznych výrobcov (napríklad Intel, Dallas, Atmel, Philips atď.) Pre vyvinuté zariadenie bez zmeny schémy zapojenia zariadenia a programu.
MCS-51 je založený na architektúre Harvard, kde sú oddelené programové pamäte a dátové adresné priestory.
Blokový diagram ovládača je znázornený na obrázku 2.3 a pozostáva z nasledujúcich hlavných funkčných jednotiek: riadiaca jednotka, aritmetické logické zariadenie, jednotka časovača / počítadla, sériové rozhranie a prerušenia, programový čítač (príkazový čítač), dátová pamäť a programová pamäť.
Obojsmerná výmena sa vykonáva pomocou internej 8-bitovej dátovej diaľnice. Pozrime sa podrobnejšie na účel každého bloku. Podľa tejto schémy sú postavení takmer všetci zástupcovia rodiny MCS-51. Rôzne mikroobvody tejto rodiny sa líšia iba v účelových registroch (vrátane počtu portov). Súbor inštrukcií všetkých radičov rodiny MCS-51 obsahuje 111 základných inštrukcií vo formáte 1, 2 alebo 3 bajty a pri prechode z jedného mikroobvodu na druhý sa nemení. To poskytuje vynikajúcu prenosnosť programov z jedného mikroobvodu na druhý.
Riadiaca a synchronizačná jednotka(Timing and Control) je navrhnutý tak, aby generoval synchronizačné a riadiace signály, ktoré zaisťujú koordináciu spoločnej prevádzky jednotiek OEVM vo všetkých prípustných režimoch jej prevádzky. Riadiaca jednotka obsahuje:
- zariadenie na tvarovanie časového úseku,
- kombinovaný vstupno-výstupný obvod,
- register príkazov,
- dekodér príkazov.
Vstup a víkend signály riadiacej a synchronizačnej jednotky:
1 PSEN- rozlíšenie pamäte programu;
2 Ale- výstupný signál povolenia zablokovania adresy;
3 PROG- programovací signál;
4 EA- blokovanie práce s vnútornou pamäťou;
5 VPP- programovacie napätie;
6 RST- signál generálneho resetovania.
Časovacie zariadenie je potrebné na synchronizáciu postupnosti stavov CPU, ktoré tvoria strojový cyklus, ako aj na správnu činnosť všetkých vnútorných západiek a výstupných vyrovnávacích pamätí portov. Strojový cyklus pozostáva zo šiestich po sebe nasledujúcich stavov (stavov) od S1 do S6, z ktorých každý je ďalej rozdelený do dvoch fáz:
fáza 1 (fáza 1 - P1) a fáza 2 (fáza 2 - P2). Cyklus stroja teda môže byť definovaný ako postupnosť časových úsekov S1P1, S1P2, S2P1, ...., S6P2. Trvanie fázy sa rovná obdobiu opakovania hodinových impulzov, preto strojový cyklus trvá 12 hodinových periód.
Trvanie vykonania inštrukcie určuje počet strojových cyklov. Takmer všetky pokyny sa vykonávajú v jednom alebo dvoch strojových cykloch, s výnimkou pokynov na násobenie a delenie, ktorých doba vykonania sú štyri strojové cykly. Logika vstupov a výstupov je navrhnutá na príjem a vydávanie signálov, ktoré poskytujú výmenu informácií s externými zariadeniami prostredníctvom vstupno -výstupných portov P0 -P3.
Register príkazov je určený na zaznamenávanie a ukladanie 8-bitového prevádzkového kódu vykonávaného príkazu. Operačný kód sa pomocou dekodéra príkazov a logiky riadenia počítača prevedie na mikroprogram na vykonanie príkazu.
Obr. 2.3. Blokový diagram jednočipového mikrokontroléra Intel 8051
(Rodina MCS-51)
Aritmetická logická jednotka(ALU) je osembitové paralelné zariadenie, ktoré vykonáva aritmetické a logické operácie. ALU pozostáva z:
- holdingové registre -TMP1 a TMP2,
- ROM konštanty,
- sčítačka,
- dodatkový register - register B,
- batéria - ACC,
- register stavu programu programu (register vlajok) - PSW.
Držiace registre TMP1, TMP2- osembitové registre určené na príjem a ukladanie operandov počas trvania operácií s nimi. Tieto registre nie sú programovo prístupné.
ROM konštanty poskytuje generovanie korekčného kódu pre reprezentáciu binárne-desatinných dát, kód masky pre bitové operácie a konštantný kód.
Paralelný osembitový sčítač je obvod kombinovaného typu so sekvenčným prenosom, určený na vykonávanie aritmetických operácií sčítania, odčítania a logických operácií sčítania, násobenia, nerovnakých a identických.
Zaregistrujte sa B.- osembitový register používaný počas operácií násobenia a delenia. Pokiaľ ide o ďalšie pokyny, je možné ho považovať za dodatočný superoperačný register.
Batéria-osembitový register určený na príjem a ukladanie výsledku získaného pri vykonávaní aritmeticko-logických operácií alebo posunových operácií.
Register stavu programu PSW (Programm Status Word) je určený na ukladanie stavového slova vykonávaných príkazov. Pri vykonávaní mnohých príkazov v ALU sa vygeneruje niekoľko operačných znakov (vlajok), ktoré sú zafixované v registri stavového slova programu (PSW). Tabuľka 1 uvádza zoznam vlajok PSW, uvádza ich symbolické názvy a opisuje podmienky ich vzniku.
Prerušenie a sériový blok - UART (univerzálny asynchrónny prijímač / vysielač) je určený na organizáciu vstupno-výstupných sekvenčných informačných tokov a organizáciu systému na prerušenie programu.Prerušenie podľa definície znamená dočasné prerušenie hlavného výpočtového procesu s cieľom vykonať niektoré plánované alebo neplánované akcie spôsobené prevádzkou hardvéru alebo programu.
Tieto akcie môžu mať charakter služby, môžu byť požiadavkou používateľského programu na vykonanie údržby alebo môžu byť reakciou na nenormálne situácie.
- Aritmetické príkazy;
- Logické príkazy;
- Príkazy na prenos údajov;
- Príkazy bitového procesora;
- Rozvetvenie a ovládanie príkazov na prenos.
- Adresovanie registra
- Priame adresovanie
- Nepriame adresovanie registra
- Priame adresovanie
- Nepriame adresovanie registrov súčtom základných a indexových registrov
Označenie, symbol | Vymenovanie |
ALE | Batéria |
Rn | Registre aktuálne zvolenej registračnej banky |
r | Číslo načítaného registra uvedené v príkaze |
priamy | Priamo adresovateľná 8-bitová interná adresa dátovej bunky, ktorou môže byť vnútorná dátová RAM (0-127) alebo SFR bunka (128-255) |
@Rr | Nepriamo adresovateľná 8-bitová bunka vnútornej dátovej pamäte RAM |
údaje8 | 8-bitové priame údaje idúce do CZK |
údajeH | Najvýznamnejšie bity (15-8) priamych 16-bitových údajov |
údaje L. | Najmenej významné bity (7-0) priamych 16-bitových údajov |
addr11 | 11-bitová cieľová adresa |
addrL | Najmenej významné bity cieľovej adresy |
disp8 | 8-bitový offset so znamienkom m |
trocha | Priamo adresovateľný bit, ktorého adresa obsahuje CPC umiestnenú vo vnútornej dátovej RAM alebo SFR |
a15, a14 ... a0 | Bity cieľovej adresy |
(NS) | Obsah prvku X |
((NS)) | Obsah na adrese uloženej v prvku X |
(X) [M] | Výboj M prvku X |
+ - * / A ALEBO XOR / X | Operácie: sčítanie odčítania násobenie delenie logické násobenie (operácia AND) logické sčítanie (operácia ALEBO) modulo 2 sčítanie (exkluzívne ALEBO) inverzia prvku X |
Funkčná mnemotechnika je jedinečne spojená so špecifickými kombináciami metód adresovania a dátových typov. V systéme príkazov je možné celkom 111 takýchto kombinácií. Tabuľka poskytuje zoznam príkazov zoradených podľa abecedy.
Mnemotechnika | Funkcia | Vlajky |
Príkaz ACALL | Absolútne podprogramové volanie | |
PRIDAŤ tím A,<байт-источник> | Dodatok | AC, C, OV |
ADDC tím A,<байт-источник> | Prenášanie | AC, C, OV |
Tím AJMP | Absolútny prechod | |
ANL tím<байт-назначения>, <байт-источникa> | Logické „A“ | |
Tím ANL C,<байт-источникa> | Logické „A“ pre variabilné bity | |
Tím CJNE<байт-назначения>, <байт-источник>, <смещение> | Porovnávajte a skáčte, ak nie ste rovnakí | C. |
Príkaz CLR A. | Reset batérie | |
Príkaz CLR | Trochu sa vyjasňuje | C, bit |
CPL tím A | Inverzia ak umul ora | |
Tím CPL | Bitová inverzia | C, bit |
Tím DA A | Desatinná oprava akumulátora na vloženie | AC, C. |
Tím DEC<байт> | Zníženie | |
Tím DIV AB | Divízia | C, OV |
Tím DJNZ<байт>, <смещение> | Zníženie a prechod, ak nie nula | |
Tím INC<байт> | Prírastok | |
Tím INC DPTR | Prírastok dátového ukazovateľa | |
Tím JB | Skok, ak je nastavený bit | |
Tím JBC | Skočte, ak je bit nastavený, a odstráňte ho | |
Tím JC | Skok, ak je nastavené prenášanie | |
Príkaz JMP @ A + DPTR | Nepriamy prechod | |
Tím JNB | Skočte, ak nie je nastavený bit | |
Tím JNC | Skočte, ak nie je nastavené prenášanie | |
Tím JNZ | Skočte, ak je obsah batérie nenulový | |
Tím JZ | Skočte, ak je obsah akumulátora 0 | |
Príkaz LCALL | Dlhý hovor | |
Tím LJMP | Dlhý prechod | |
Príkaz MOV<байт-назначения>, <байт-источника> | Odoslať bajtovú premennú | |
Príkaz MOV<бит-назначения>, <бит-источника> | Odoslať dátový bit | C. |
Príkaz MOV DPTR, # data16 | Načítať dátový ukazovateľ so 16-bitovou konštantou | |
Príkaz MOVC A, @ A + ( | Odoslať bajt z pamäte programu | |
Príkaz MOVX<байт приемника>, <байт источника> | Odosielanie údajov do externej pamäte (z externej pamäte) | |
Tím MUL AB | Násobenie | C, OV |
Príkaz NOP | Žiadna operácia | PC |
Tím ORL<байт-назначения>, <байт-источникa> | Logické „ALEBO“ pre variabilné bajty | |
Tím ORL C,<бит источникa> | Logické „ALEBO“ pre variabilné bity | C. |
Príkaz POP | Čítanie zo stohu | |
PUSH príkaz | Stohovanie | |
Príkaz RET | Návrat z podprogramu | |
Tím RETI | Návrat z prerušenia | |
RL A tím | Posuňte obsah batérie doľava | |
Tím RLC A. | Posuňte obsah batérie doľava pomocou vlajky na prenášanie | |
Tím RR A | Posuňte obsah batérie doprava | |
Tím RRC A. | Posuňte obsah batérie doprava pomocou vlajky na prenášanie | C. |
Príkaz SETB | Nastav bit | C. |
Tím SJMP<метка> | Krátky skok | |
SUBB A tím,<байт источника> | Odčítanie pôžičkou | AC, C, OV |
SWAP Príkaz | Výmena notebookov vo vnútri batérie | |
Tím XCH A,<байт> | Výmena obsahu batérie za variabilný bajt | |
XCHD tím A, na R1 | Výmena notebooku | |
Príkaz XRL<байт-назначения>, <байт-источникa> | Logické EXKLUZÍVNE ALEBO pre variabilné bajty |
UDC 681,5, 681,325,5 (075,8)
BBK 32,973,202-018,2 i 73
Shcherbina A.N.Výpočtové stroje, systémy a siete. Mikrokontroléry a mikroprocesory v riadiacich systémoch: cheb. príspevok / A.N. Shcherbina, P.A. Nechaev- SPb.: Z polytechniky. Univerzita, 2012.-226 s.
Zodpovedá obsahu štátneho vzdelávacieho štandardu pre oblasti výcviku a odborov v oblasti manažmentu v technických systémoch, elektrickej energii a elektrotechnike a obsahu vzorových učebných osnov pre disciplínu „Počítače, stroje a systémy“.
Na príklade základnej architektúry rodiny mikrokontrolérov MCS-51 od spoločnosti Intel sa uvažuje o základných otázkach logickej organizácie mikroprocesorových systémov. Je popísaná technológia programovania mikrokontrolérov v jazykoch Assembler a SI.
Môže byť užitočný pre študentov a učiteľov vyšších technických inštitúcií, špecialistov na automatizáciu technologických procesov a výrobných zariadení, ako aj pre projektantov mikroprocesorových systémov.
Vyhovuje aj obsahu štátneho vzdelávacieho štandardu odborov „Mikrokontroléry a mikroprocesory v riadiacich systémoch“ a „Elektronické zariadenia automatizácie“ bakalárske, inžinierske a magisterské vzdelávanie v smere 140400 „Elektrická energia a elektrotechnika“.
Dotlačené rozhodnutím Redakčnej a publikačnej rady
Štátna polytechnická univerzita v Petrohrade.
© Shcherbina A. N., Nechaev P. A., 2012
© Štát Petrohrad
Polytechnická univerzita, 2012
ISBN 978-5-7422-3553-8
Úvod .. 7
Kapitola 1. Architektúra rodiny MCS51. 10
1.1 Všeobecné charakteristiky 10
1.2 Blokový diagram 11
1.3 Účel záverov mikrokontroléra 8051 15
1.4 Organizácia pamäte 17
1.4.1 Programová pamäť (ROM) 18
1.4.2 Dátová pamäť (RAM) 19
1.4.3 Registre špeciálnych funkcií. dvadsať
1.4.4 Register vlajok (PSW) 23
1.5 Riadiace a synchronizačné zariadenie 26
1.6 Usporiadanie I / O portov 27
1.6.1 Všeobecné informácie. 27
1.6.2 Alternatívne funkcie. 27
1.7. Časovače / počítadlá pre mikrokontroléry 8051.28
1.7.1. Štruktúra časovačov. 28
1.7.2 Režimy činnosti časovačov a počítadiel. tridsať
1,8. Sériový port 32
1.8.1. Štruktúra sériového portu. 32
1.8.2. Register / stavový register transceiveru SCON .. 34
1.8.3. Register riadenia výkonu PCON .. 36
1.9. Systém prerušenia 37
1.9.1. Prerušiť štruktúru systému. 37
1.9.2 Vykonávanie rutín prerušenia. 40
Kapitola 2. Vlastnosti mikrokontroléra 80C51GB .. 42
2.1 Vlastnosti 42
2.2 I / O porty P0-P5 43
2.2.1 Fungovanie vstupno-výstupných portov. 43
2.2.2 Zápis do portu .. 46
2.3 Vlastnosti systému prerušenia 8XC51GB .. 49
Povoliť / zakázať prerušenia. päťdesiat
Prerušiť riadenie priority. 51
Externé prerušenia. 54
2.3. Uzol ADC 56
2.4. Hardvérový strážny pes 61
2.5. Detekcia zlyhania hodín 63
2.6. Matica programovateľných čítačov RSA 64
2.6.1. Štruktúra PCA .. 64
2.6.2. Register režimu počítadla PCA (CMOD) 66
2.6.3. Riadiaci register počítadla PCA (CON) 67
2.6.4. Porovnať / potvrdiť moduly. 68
2.7. Rozšírený sériový port 76
2.8. Časovače / počítadlá 79
Pinout skupiny mikrokontrolérov 8XC51GB .. 86
Kapitola 3. Programovanie MK 8051GB .. 89
3.1. Programovací model 89
3.2 Dátové typy 93
3.3 Metódy adresovania údajov 93
3.4 Systém príkazov 95
3.4.1 Všeobecné charakteristiky. 95
3.4.2 Typy príkazov. 96
3.4.3 Typy operandov. 97
3.4.4 Príkazy na prenos údajov mikrokontroléra. 98
3.4.5 Príkazy pre aritmetické operácie 8051.101
3.4.6 Príkazy logických operácií mikrokontroléra 8051.104
3.4.7 Príkazy na operácie s bitmi mikrokontroléra 8051.106
3.5 Ladiace programy 111
Kapitola 4. Programovací jazyk ASM-51. 112
4.2 Písanie textu programu 113
4.3 Abeceda jazyka. 114
4.4 Identifikátory. 115
4.5 Čísla 117
4.6 Smernice 118
4.7 Implementácia podprogramov v jazyku ASM51 122
4.7.1 Štruktúra podprogramového postupu v jazyku ASM51. 122
4.7.2 Prenos premenných parametrov do podprogramu. 123
4.7.3 Implementácia podprogramových funkcií v jazyku ASM51. 123
4.7.4 Implementácia rutín spracovania prerušení v jazyku ASM51. 124
4.8 Štruktúrované programovanie v montážnom jazyku. 125
4.9 Vlastnosti vysielania viacmodulových programov
4.10 Použitie segmentov 128
4.10.1 Rozdelenie pamäte MK na segmenty .. 128
4.10.2 Absolútne pamäťové segmenty. 129
4.10.2 Premiestniteľné pamäťové segmenty. 131
Kapitola 5. Programovací jazyk С-51. 134
5.1 Všeobecné charakteristiky jazyka 134
5.3 Štruktúra programu С-51 136
5.3. Prvky programovacieho jazyka C-51 138
5.3.1. Symboly .. 138
5.3.2. Lexikálne jednotky, oddeľovače a používanie medzier. 141
5.3.3 Identifikátory .. 142
5.3.4 Kľúčové slová. 143
5.3.5 Konštanty .. 143
5.4. Výrazy v jazykových operátoroch 146
programovanie C-51 146
5.5. Priority pre operácie 148
5.6. Prevádzkovatelia programovacieho jazyka C-51 149
5.6.1. Operátori vyhlásenia. 150
5.6.2 Spustiteľné operátory .. 150
5.6.3 Operátor priradenia. 151
5.6.4 Podmienený operátor. 151
5.6.5 Štruktúrovaný operátor (). 152
5.6.6 Operátor slučky pre. 152
5.6.7 Operátor slučky s kontrolou stavu až po telo slučky while. 153
5.6.8 Operátor slučky s kontrolou stavu za telom slučky urobí pričom. 154
5.6.9 Prestávka obsluhy. 155
5.6.10 Operátor pokračuje. 155
5.6.11 Prepínač obsluhy podľa výberu. 155
5.6.12 Prevádzkovateľ bezpodmienečnej pobočky. 157
5.6.13 Výraz operátora. 158
5.6.14 Prevádzkovateľ návratu z podprogramového návratu. 158
5.6.15 Prázdne vyhlásenie. 158
5.7. Deklarácia premenných v programovacom jazyku C-51. 159
5.7.1. Variabilné vyhlásenie. 159
5.7.3 Celočíselné dátové typy. 161
5.7.4 Čísla s pohyblivou rádovou čiarkou. 162
5.7.5 Premenné typu enumerácie. 162
5.7.6. Deklarácia polí v programovacom jazyku C-51. 164
5.7.7. Štruktúry .. 165
5.7.8. Kombinácie (zmesi) 166
5.8. Použitie ukazovateľov v C-51 167
5.8.1. Vyhlásenie ukazovateľov. 167
5.8.2. Netypové ukazovatele. 168
5.8.3. Ukazovatele závislé od pamäte. 169
5.9. Deklarácia nových typov premenných 169
5.10. Inicializácia údajov 170
5.11. Použitie podprogramov v programovacom jazyku C-51. 170
5.11.1. Definovanie podprogramov. 171
5.11.2. Parametre podprogramov. 173
5.11.3. Predbežná deklarácia podprogramov. 174
5.11.4 Vyvolávanie podprogramov .. 176
5.11.5 Rekurzívne volanie podprogramov. 176
5.11.6 Rutiny spracovania prerušenia. 177
5.11.7 Rozsahy premenných a podprogramov. 178
5.12. Multimodálne programy 179
Kapitola 6. Príprava programov v integrovanom vývojovom prostredí Keil μVision2. 182
6.1 Vytvorenie projektu v jazyku ASM-51 182
6.2 Príklad vytvorenia projektu v jazyku C pre školiaceho kontrolóra v integrovanom vývojovom prostredí Keil μVision2 188
Kapitola 7. Popis ovládača výcviku .. 199
7.1. Štruktúra ovládača 199
7.2. Adresný priestor 200
7.2.1. Vyhradenie pamäte. 200
7.2.2 Externá pamäť. 201
7.2.3. Interná dátová pamäť. 202
7.3. Mapovanie I / O portov 202
7.4. Sériový port ……………………………… ... 203
7.5. Práca s LCD 205
7.6. Panely ovládačov ………………………………………………… 213
DODATOK P2ŠTRUKTÚRA LABORATÓRNEJ SPRÁVY …… ..217
Príloha A3 Kódy pokynov k stroju. 217
Referencie ... 224
Úvod
Pri vývoji špecialít súvisiacich s automatizáciou technologických procesov a výroby je štúdium mikrokontrolérov jednou z dôležitých sekcií.
Vo svete neustále prebieha vývoj a vzniká stále viac 16- a 32-bitových mikrokontrolérov a mikroprocesorov, ale najväčší podiel na svetovom trhu s mikroprocesormi stále patrí 8-bitovým zariadeniam. Podľa všetkých predpovedí analytických spoločností na najbližšie obdobie si vedúce postavenie 8-bitových mikrokontrolérov na svetovom trhu zachová.
V súčasnosti je rodina MCS-51 spomedzi všetkých 8-bitových mikrokontrolérov nepochybným lídrom v počte odrôd a v počte spoločností, ktoré vyrábajú jej modifikácie. Názov dostal od prvého zástupcu tejto rodiny - mikrokontroléra 8051. Úspešná sada periférnych zariadení, flexibilný výber externej alebo internej programovej pamäte a rozumná cena zabezpečili tomuto mikrokontroléru úspech na trhu.
Výhody rodiny MCS-51:
· Architektúra, ktorá je de facto štandardom;
· Mimoriadna šírka rodiny a rozmanitosť možností;
· Dostupnosť vysokovýkonných a rozšírených verzií procesorov;
· Značný počet voľne dostupných softvérových a hardvérových vývojov;
· Jednoduché hardvérové programovanie vrátane obvodového programovania;
· Nízke náklady a dostupnosť základných čipov;
Dostupnosť špecializovaných verzií ovládačov pre špeciálne podmienky použitia
· Dostupnosť verzií ovládačov so zníženou úrovňou elektromagnetického rušenia;
· Široko známy medzi vývojármi staršej generácie, vo svete aj v krajinách SNŠ;
· Podpora architektúry poprednými svetovými vzdelávacími inštitúciami.
A nakoniec, hlavná výhoda: po zvládnutí základného čipu rodiny môžete ľahko začať pracovať s takými počítačovými „príšerami“, akými sú mikrokontroléry Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.
Rodina MCS-51 obsahuje celý rad mikroobvodov od najjednoduchších mikrokontrolérov po najzložitejšie. Dnes existuje viac ako 200 modifikácií rodiny mikrokontrolérov 8051, ktoré vyrába takmer 20 spoločností. Každý rok sa objavuje stále viac variantov zástupcov tejto rodiny.
Hlavné smery vývoja sú:
· Zvýšenie výkonu (zvýšenie taktovacej frekvencie a redizajn architektúry);
· Zníženie napájacieho napätia a spotreby energie;
· Zvýšenie množstva pamäte RAM a FLASH na čipe s možnosťou programovania v obvode;
· Zavádzanie komplexných zariadení, ako sú systémy riadenia pohonov, rozhrania CAN a USB atď. Do periférie mikrokontroléra.
Mikrokontroléry radu MCS-51 vám umožňujú vykonávať obe riadiace úlohy pre rôzne zariadenia a implementovať jednotlivé uzly analógového obvodu. Všetky mikroobvody tejto rodiny pracujú s rovnakou inštrukčnou sadou. Väčšina z nich je vyrobená v rovnakých prípadoch s rovnakým vývodom (číslovanie nôh pre puzdro). To umožňuje použiť pre vyvinuté zariadenie mikroobvody od rôznych výrobcov bez zmeny schémy zapojenia zariadenia a programu.
Hlavnými výrobcami odrôd 51. rodiny na svete sú Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems a množstvo ďalších.
Charakteristiky analógov mikrokontrolérov radu MCS-51 (Intel 8XC51FA, 8XC51GB, 80C152) s rozšírenými schopnosťami sú uvedené v tabuľke. V 1.
Tabuľka B.1
RAM | ROM | PCA | ADC | WDT | T / C | Po pôrode Kanály | Zvláštnosti | |
Atmel: AT89C2051 | ||||||||
- | - | - | - | UART | Flash 2 Kb | |||
AT89C4051 | - | - | - | - | UART | Flash 4Kb | ||
AT89S4D12 | 128 tis | - | - | - | UART, SPI | Flash 4Kb | ||
Polovodič DALLAS: DS5000FP | ||||||||
- | - | - | + | UART | Zavádzač bootstrapu | |||
DS5001FP | - | - | - | + | UART | Zavádzač bootstrapu | ||
DS8xC520 | 16K | - | - | + | 2xUART | 2 DPTR | ||
SIEMENS: C505C | ||||||||
16K | - | + | + | UART, KAN | 8 DPTR | |||
C515C | 64 tis | - | + | + | UART + SSC + CAN | 4 PWM, 8 DPTR | ||
Philips: * 89C51RA + | ||||||||
- | + | - | + | UART | 2 DPTR, 4 lv. prerušenie, vyradenie, Flash 8K | |||
P51XAG1x | 8K | - | - | + | 2 UART | |||
Intel: 8xC51RA | ||||||||
8K | - | + | + | UART | 4 úrovne IRQ, vyradenie | |||
8XC196KC | 64 tis | 16K | - | + | - | UART | 3 PWM | |
80C196KB | 64 tis | 8K | - | + | - | UART | PWM |
Kapitola 1. Architektúra rodiny MCS51
Rodina 8-bitových jednočipových mikrokontrolérov MCS-51 si vďaka dobre navrhnutej architektúre získala veľkú obľubu medzi dizajnérmi mikroprocesorových riadiacich systémov. Architektúra mikrokontroléra je zbierka interných a externých hardvérových zdrojov prístupných k softvéru a sada inštrukcií. Architektúra rodiny MCS -51 je do značnej miery predurčená jej účelom - výstavbou kompaktných a lacných digitálnych zariadení. Mikrokontroléry, ktoré vykonávajú všetky funkcie mikropočítača pomocou jedného mikroobvodu, sa nazývajú jednočipové počítače (OEVM).
Spoločnosť Intel vydala asi 50 modelov založených na operačnom jadre mikrokontroléra Intel 8051. V rovnakom čase mnoho ďalších firiem, napríklad Atmel, Philips, začalo vyrábať vlastné mikrokontroléry vyvinuté v štandarde MCS-51.
Všeobecné charakteristiky
Hlavné charakteristiky rodiny:
· 8-bitová centrálna procesorová jednotka (CPU), zameraná na ovládanie výkonných zariadení;
· CPU má vstavaný obvod na 8-bitové násobenie hardvéru a delenie čísel;
· Prítomnosť veľkého počtu operácií na prácu s priamo adresovateľnými bitmi v inštrukčnom súbore umožňuje hovoriť o procesore na prácu s bitovými dátami (booleovský procesor);
· Interná (umiestnená na čipe) programová pamäť maskovaného alebo preprogramovaného typu, ktorá má pre rôzne kryštály objem 4 až 32 Kb, v niektorých verziách absentuje;
· Najmenej 128 bajtov rezidentnej dátovej pamäte RAM, ktorá sa používa na organizáciu, registráciu bánk, ukladanie a ukladanie používateľských údajov;
· Najmenej 32 obojsmerných liniek rozhrania (portov), individuálne nakonfigurovaných na vstup alebo výstup informácií;
· Dva 16-bitové viacrežimové čítače / časovače používané na počítanie externých udalostí, organizovanie časových oneskorení a taktovanie komunikačného portu;
· Obojsmerný duplexný asynchrónny transceiver (UART), navrhnutý tak, aby organizoval komunikačné kanály medzi mikrokontrolérom a externými zariadeniami so širokým rozsahom rýchlostí prenosu informácií. Existujú nástroje na hardvérovú a softvérovú integráciu mikrokontrolérov do pripojeného systému;
· Dvojúrovňový prioritný prerušovací systém podporujúci najmenej 5 vektorov prerušení zo 4 interných a 2 externých zdrojov udalostí;
· Vstavaný generátor hodín.
Štrukturálna schéma
Blokový diagram ovládača je znázornený na obrázku 1.1 a pozostáva z nasledujúcich hlavných funkčných jednotiek: riadiaca jednotka, aritmetická logická jednotka, jednotka časovača / počítadla, jednotka sériového rozhrania a prerušenia, počítadlo programov, pamäť údajov a programová pamäť. Obojsmerná výmena sa vykonáva pomocou internej 8-bitovej dátovej diaľnice. Podľa tejto schémy sú postavení takmer všetci zástupcovia rodiny MCS-51. Rôzne mikroobvody tejto rodiny sa líšia iba v účelových registroch (vrátane počtu portov).
Časovacia a riadiaca jednotka- navrhnuté tak, aby generovalo synchronizačné a riadiace signály, ktoré zaisťujú koordináciu spoločnej prevádzky jednotiek OEVM vo všetkých prípustných režimoch jej prevádzky. Riadiaca jednotka obsahuje:
zariadenie na vytváranie časových intervalov;
Logika I / O;
register príkazov;
register kontroly spotreby elektrickej energie;
dekodér príkazov, logika riadenia počítača.
Ryža. 1.1. Bloková schéma ovládača I8051.
Zariadenie na tvarovanie časového úseku je určený na vytváranie a vydávanie vnútorných synchronizačných signálov fáz, hodín a cyklov. Trvanie vykonania inštrukcie určuje počet strojových cyklov. Takmer všetky príkazy OEVM sa vykonávajú v jednom alebo dvoch strojových cykloch, s výnimkou príkazov pre násobenie a delenie, ktorých doba vykonania sú štyri strojové cykly. Označme frekvenciu hlavného oscilátora pomocou F g. Trvanie cyklu stroja je 12 / F g alebo 12 periód signálu hlavného oscilátora. Logika vstupov a výstupov je navrhnutá na príjem a vydávanie signálov, ktoré poskytujú výmenu informácií s externými zariadeniami prostredníctvom vstupno -výstupných portov P0 -P3.
Register príkazov je určený na zaznamenávanie a ukladanie 8-bitového prevádzkového kódu vykonávaného príkazu. Operačný kód sa pomocou dekodéra príkazov a logiky riadenia počítača prevedie na mikroprogram na vykonanie príkazu.
Register kontroly spotreby (PCON) umožňuje zastaviť mikrokontrolér, aby sa znížila spotreba energie a znížila úroveň hluku z mikrokontroléra. Ďalšie zníženie spotreby energie a zníženie hluku je možné dosiahnuť zastavením hlavného oscilátora mikrokontroléra. To sa dá dosiahnuť trochou preklopenia v registri kontroly spotreby PCON. Pre n-MOS (séria 1816 alebo cudzie integrované obvody bez písmena „c“ uprostred) obsahuje register riadenia spotreby PCON iba jeden bit na riadenie prenosovej rýchlosti sériového portu SMOD a neexistujú žiadne bity riadenia napájania.
Aritmetická logická jednotka (ALU) je paralelné osembitové zariadenie, ktoré vykonáva aritmetické a logické operácie. ALU pozostáva z:
akumulátorové registre, prídržné registre TMP1 a TMP2;
ROM konštánt;
sčítač;
dodatočný register (register B);
batéria (ACC);
register stavu programu (PSW).
Registrovať akumulátor a držiace registre- osembitové registre určené na príjem a ukladanie operandov počas trvania operácií s nimi. Tieto registre nie sú programovo prístupné.
ROM konštanty poskytuje generovanie korekčného kódu pre reprezentáciu binárne-desatinných dát, kód masky pre bitové operácie a konštantný kód.
Paralelný osembitový sčítač je obvod kombinovaného typu so sekvenčným prenosom, určený na vykonávanie aritmetických operácií sčítania, odčítania a logických operácií sčítania, násobenia, nerovnakých a identických.
Zaregistrujte sa B.- osembitový register používaný počas operácií násobenia a delenia. Pokiaľ ide o ďalšie pokyny, je možné ho považovať za dodatočný superoperačný register.
Batéria-osembitový register určený na príjem a ukladanie výsledku získaného pri vykonávaní aritmeticko-logických operácií alebo posunových operácií
Sériové rozhranie a jednotka prerušenia (PIP) je určený na organizáciu vstupno-výstupných sekvenčných informačných tokov a organizáciu systému na prerušenie programu. Blok obsahuje:
Vyrovnávacia pamäť PIP;
logika riadenia;
kontrolný register;
vyrovnávacia pamäť vysielača;
vyrovnávacia pamäť prijímača;
transceiver sériového portu;
register priority prerušenia;
register umožňujúci prerušenie;
logika spracovania príznaku prerušenia a obvod generovania vektorov.
Počítadlo programov je navrhnutý tak, aby tvoril aktuálnu 16-bitovú adresu vnútornej programovej pamäte a 8/16-bitovú adresu externej programovej pamäte. Počítadlo inštrukcií obsahuje 16-bitovú vyrovnávaciu pamäť PC, register PC a inkrementálny obvod (zvýšenie obsahu o 1).
Dátová pamäť (RAM) je určený na dočasné uloženie informácií používaných v procese vykonávania programu.
Porty P0, P1, P2, P3 sú kvázi-obojsmerné vstupno-výstupné porty a sú navrhnuté tak, aby zaisťovali výmenu informácií medzi počítačom a externými zariadeniami a tvorili 32 vstupno-výstupných liniek.
Register stavu programu (PSW) určené na ukladanie informácií o stave ALU počas vykonávania programu.
Programová pamäť (EPROM) je určený na ukladanie programov a je pamäťou iba na čítanie (ROM). Rôzne mikroobvody používajú masku, UV-vymazateľné alebo FLASH ROM.
Register ukazovateľa údajov (DPTR) je určený na ukladanie 16 - bitovej adresy externej dátovej pamäte.
Ukazovateľ zásobníka (SP) je osembitový register určený na organizovanie špeciálnej oblasti dátovej pamäte (zásobníka), do ktorej je možné dočasne uložiť akúkoľvek pamäťovú bunku.
1.3 Obsadenie pinov mikrokontroléra 8051(obr. 1.2)
· U ss - potenciál spoločného vodiča („uzemnenie“);
· U cc - hlavné napájacie napätie +5 V;
· X1, X2 - vodiče na pripojenie kremenného rezonátora;
RST - vstup generálneho resetovania mikrokontroléra;
· PSEN - povolenie externej pamäte programu, vydané iba pri prístupe k externej ROM;
· ALE - strobovanie adresy externej pamäte;
· ЕА - deaktivovať vnútornú pamäť programu; úroveň 0 na tomto vstupe núti mikrokontrolér vykonávať program iba z externej ROM; ignorovanie interného (ak je k dispozícii);
Ryža. 1.2. Obsadenie pinov 8051.
· P1-osembitový kvázi-obojsmerný vstupno-výstupný port, každý bit portu je možné naprogramovať na vstup aj výstup informácií bez ohľadu na stav ostatných bitov;
P2-osembitový kvázi obojsmerný port, podobný P1, kolíky tohto portu slúžia na vydávanie informácií o adrese pri prístupe k externému programu alebo dátovej pamäti (ak ide o 16-bitové adresovanie). Okrem toho sa kolíky portu používajú počas programovania na vkladanie bitov vyššieho rádu adresy do mikrokontroléra;
РЗ-osembitový kvázi-obojsmerný port, podobný P1, kolíky tohto portu môžu vykonávať množstvo alternatívnych funkcií, ktoré sa používajú počas činnosti časovačov, sériového vstupno-výstupného portu, radiča prerušenia a externého programu a dátová pamäť;
· P0-multiplexovaný osembitový obojsmerný port informačného vstupu a výstupu, cez tento port v rôznych časoch sa vydáva bajt adresy a údajov nízkeho rádu.
Organizácia pamäte
Celá séria MCS-51 má harvardskú architektúru, to znamená oddelené adresné priestory pre programovú a dátovú pamäť. Štruktúra pamäte je znázornená na obr. 1.3.
Množstvo vnútornej (rezidentnej) programovej pamäte (ROM, EPROM alebo OTP ROM) umiestnenej na čipe v závislosti od typu mikroobvodu môže byť 0 (bez ROM), 4K (základný kryštál), 8 kB, 16 kB alebo 32 kB. V prípade potreby môže užívateľ rozšíriť programovú pamäť inštaláciou externej pamäte ROM. Prístup k internej alebo externej ROM je určený hodnotou signálu na pine EA (externý prístup):
EA = V cc (napájacie napätie) - prístup k internej ROM;
EA = V ss (potenciál zeme) - prístup k externej ROM.
Pri kryštáloch bez ROM (bez ROM) musí byť kolík EA trvale pripojený k V ss.
Ryža. 1.3. Organizácia pamäte rodiny MCS-51
Strobo čítania externej ROM - (Program Store Enable) je generované pri prístupe k externej pamäti programu a je neaktívne počas prístupu k ROM umiestnenej na čipe. Oblasť dolných adries programovej pamäte používa prerušovací systém. Architektúra základného čipu 8051 poskytuje podporu pre päť zdrojov prerušenia:
· Dve externé prerušenia;
· Dve prerušenia z časovačov;
· Prerušenie zo sériového portu.
Na obr. 1.4 ukazuje mapu spodnej oblasti programovej pamäte.
Ryža. 1.4. Nižšia mapa pamäte programu
Programová pamäť (ROM)
V mikrokontroléroch radu 8051 sú programová pamäť a dátová pamäť nezávislými a nezávislými zariadeniami, ktoré sú adresované rôznymi príkazmi a riadiacimi signálmi.
Vstavaná programová pamäť umiestnená na čipe mikrokontroléra 8051 má 4 KB (v rodine až 32). Pri prístupe k externej programovej pamäti všetky mikrokontroléry z rodiny 8051 vždy používajú 16-bitovú adresu, ktorá im poskytuje prístup k 64 KB ROM. Mikrokontrolér vstupuje do pamäte programu pri čítaní operačného kódu a operandov (pomocou počítadla inštrukcií PC), ako aj pri vykonávaní pokynov na kopírovanie bajtu z pamäte programu do batérie. Keď sa vykonávajú príkazy kopírovania údajov, adresovanie bunky programovej pamäte, z ktorej sa budú údaje čítať, je možné vykonať pomocou počítačového počítadla aj špeciálneho dvojbajtového registra ukazovateľov údajov DPTR.
Dátová pamäť (RAM)
Dátová pamäť na čipe je 128 bajtov. Externá dátová pamäť môže mať až 64 kB. Prvých 32 bajtov je usporiadaných do štyroch bánk univerzálnych registrov, označených ako banka 0 - banka 3. Každá z nich pozostáva z ôsmich registrov R0 - R7. Program je kedykoľvek k dispozícii s adresovaním registrov iba jednou bankou registrov, ktorých počet je obsiahnutý v treťom a štvrtom bite stavového slova programu PSW.
Adresy bitových oblastí pamäte mikrokontroléra 8051
Tabuľka 1.1
Bajtová adresa (hexadecimálna) | Bitové adresy po bitových | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
2F | 7F | 7E | 7D | 7C | 7B | 7A | ||
2E | ||||||||
2D | 6F | 6E | 6D | 6C | 6B | 6A | ||
2C | ||||||||
2B | 5F | 5E | 5D | 5C | 5B | 5A | ||
2A | ||||||||
4F | 4E | 4D | 4C | 4B | 4A | |||
3F | 3E | 3D | 3C | 3B | 3A | |||
2F | 2E | 2D | 2C | 2B | 2A | |||
1F | 1E | 1D | 1C | 1B | 1A | |||
0F | 0E | 0D | 0C | 0B | 0A | |||
20 hod |
Zostávajúci priestor adries môže vývojár nakonfigurovať podľa vlastného uváženia: môže sa prispôsobiť oblasti zásobníka, systému a používateľských údajov. K bunkám dátovej pamäte je možné pristupovať dvoma spôsobmi. Prvým spôsobom je priame adresovanie pamäťovej bunky. V tomto prípade je adresa bunky operandom zodpovedajúcej inštrukcie. Druhou metódou je nepriame adresovanie pomocou registrov ukazovateľa R0 alebo R1: pred vykonaním zodpovedajúceho príkazu musí byť do jedného z nich zadaná adresa bunky, ktorej sa má adresovať.
Na prístup k externej dátovej pamäti sa používa iba nepriame adresovanie pomocou registrov R0 a R1 alebo pomocou 16-bitového registra ukazovateľa DPTR.
Súčasťou dátovej pamäte je bitová oblasť, v ktorej je možné pomocou špeciálnych bitových inštrukcií adresovať každý bit pamäťových buniek. Adresa priamo adresovateľných bitov môže byť tiež zapísaná ako (Bajtová adresa). (Bit). Korešpondenciu týchto dvoch spôsobov adresovania je možné určiť z tabuľky. 1.1.
Architektúra rodiny MCS -51 je do značnej miery predurčená jej účelom - stavbou kompaktný a lacné digitálne zariadenia. Všetky funkcie mikropočítača sú implementované pomocou jedného mikroobvodu. Rodina MCS-51 obsahuje celý rad mikroobvodov od najjednoduchších mikrokontrolérov po najzložitejšie. Mikrokontroléry radu MCS-51 vám umožňujú vykonávať obe riadiace úlohy pre rôzne zariadenia a implementovať jednotlivé uzly analógového obvodu. Všetky mikroobvody tejto rodiny fungujú s rovnakým príkazovým systémom, väčšina z nich sa vykonáva v rovnakých prípadoch s zodpovedajúci pinout(číslovanie nôh pre telo). To umožňuje pre vyvinuté zariadenie použiť mikroobvody od rôznych výrobcov (napríklad Intel, Dallas, Atmel, Philips atď.). bez zmeny schematického diagramu zariadenia a programu.
Obrázok 1. Blokový diagram ovládača K1830BE751
Blokový diagram ovládača je znázornený na obrázku 1 a pozostáva z nasledujúcich hlavných funkčných jednotiek: riadiaca jednotka, aritmetická logická jednotka, jednotka časovača / počítadla, jednotka sériového rozhrania a prerušenia, počítadlo programov, pamäť údajov a programová pamäť. Obojsmerná výmena sa vykonáva pomocou internej 8-bitovej dátovej diaľnice. Pozrime sa podrobnejšie na účel každého bloku. Podľa tejto schémy sú postavení takmer všetci zástupcovia rodiny MCS-51.... Rôzne mikroobvody tejto rodiny sa líšia iba v účelových registroch (vrátane počtu portov). Veliaci systém všetky ovládače rodiny MCS-51 obsahuje 111 základných inštrukcií s formátom 1, 2 alebo 3 bajtov a pri prechode z jedného mikroobvodu na druhý sa nemení. To poskytuje vynikajúcu prenosnosť programov z jedného mikroobvodu na druhý.
Riadiaca a synchronizačná jednotka
Časovacia a riadiaca jednotka je navrhnutá tak, aby generovala synchronizačné a riadiace signály, ktoré zaisťujú koordináciu spoločnej činnosti jednotiek OEVM vo všetkých prípustných režimoch jej prevádzky. Riadiaca jednotka obsahuje:
- zariadenie na tvarovanie časového úseku,
- I / O logika,
- register príkazov,
- register kontroly spotreby elektrickej energie,
- dekodér príkazov, logika riadenia počítača.
Zariadenie na tvarovanie časového úseku je určený na vytváranie a vydávanie vnútorných synchronizačných signálov fáz, hodín a cyklov. Trvanie vykonania inštrukcie určuje počet strojových cyklov. Takmer všetky príkazy OEVM sa vykonávajú v jednom alebo dvoch strojových cykloch, s výnimkou príkazov pre násobenie a delenie, ktorých doba vykonania sú štyri strojové cykly. Označme frekvenciu hlavného oscilátora pomocou F g. Potom je trvanie cyklu stroja rovné 12 / F g alebo 12 periód signálu hlavného oscilátora. Logika vstupov a výstupov je navrhnutá na príjem a vydávanie signálov, ktoré poskytujú výmenu informácií s externými zariadeniami prostredníctvom vstupno -výstupných portov P0 -P3.
Register príkazov je určený na zaznamenávanie a ukladanie 8-bitového prevádzkového kódu vykonávaného príkazu. Operačný kód sa pomocou príkazov a logiky riadenia počítača prevedie na mikroprogram na vykonanie príkazu.
Register kontroly spotreby (PCON) vám umožňuje zastaviť činnosť mikrokontroléra, aby sa znížila spotreba energie a znížila úroveň hluku z mikrokontroléra. Ďalšie zníženie spotreby energie a zníženie hluku je možné dosiahnuť zastavením hlavného oscilátora mikrokontroléra. To sa dá dosiahnuť trochou preklopenia v registri kontroly spotreby PCON. Pre n-MOS (séria 1816 alebo cudzie integrované obvody bez písmena „c“ uprostred) obsahuje register riadenia spotreby PCON iba jeden bit na riadenie prenosovej rýchlosti sériového portu SMOD a neexistujú žiadne bity riadenia napájania.
Spolu s článkom „Architektúra mikrokontrolérov MCS-51“ čítame:
http: //site/MCS51/tablms.php
http: //site/MCS51/SysInstr.php
http: //site/MCS51/port.php