Mikrokrmilniki MCS-51: programski model, struktura, ukazi. Mikrokontrolerji MCS-51

Ukazni sistem OMEVM zagotavlja velike zmogljivosti obdelave podatkov, omogoča izvajanje logičnih, aritmetičnih operacij ter nadzor v realnem času. Izvedena bitna, tetradna (4 bita), bajtna (8 bitov) in 16-bitna obdelava podatkov.

Družina LSI MCS-51 - 8-bitni OMEVM: ROM, RAM, registri za posebne namene, ALU in zunanja vodila imajo organizacijo bajtov. Dvobajtne podatke uporabljata samo kazalni register (DPTR) in programski števec (PC). Opozoriti je treba, da se kazalni register podatkov lahko uporablja kot dvobajtni register DPTR ali kot dva enobajtna registra za posebne namene DPH in DPL. Programski števec se vedno uporablja kot dvobajtni register.

Nabor ukazov OMEVM ima 42 mnemonik ukazov za določanje 33 funkcij tega sistema.

Sintaksa večine ukazov zbirnega jezika je sestavljena iz mnemonike funkcije, ki ji sledijo operandi, ki določajo metode naslavljanja in tipe podatkov. Različne tipe podatkov ali načine naslavljanja določajo nastavljeni operandi, ne pa spremembe v mnemoničnem zapisu.

Sistem ukazov lahko pogojno razdelimo na pet skupin:

Obstajajo naslednje vrste naslavljanja izvornih operandov:

  • Posredno naslavljanje registrov z vsoto baznih in indeksnih registrov

Tabela oznak in simbolov, ki se uporabljajo v ukaznem sistemu

Oznaka, simbol Namen
A Baterija
Rn Registri trenutno izbrane registrske banke
r Številka naloženega registra, podana v ukazu
neposredno Neposredno naslovljiv 8-bitni naslov notranje podatkovne lokacije, ki je lahko notranja podatkovna lokacija RAM (0-127) ali SFR (128-255)
@rr Posredno naslovljiva 8-bitna notranja podatkovna lokacija RAM
podatki8 8-bitni takojšnji podatki vključeni v CPC
podatkiH MSB (15-8) takojšnjih 16-bitnih podatkov
podatkiL Nizki biti (7-0) takojšnjih 16-bitnih podatkov
naslov11 11-bitni ciljni naslov
naslovL Najmanj pomembni deli ciljnega naslova
disp8 8-bitni predznačeni offset bajt
bit Neposredno naslovljiv bit, katerega naslov vsebuje CPC, ki se nahaja v notranjem podatkovnem RAM-u ali SFR
a15, a14...a0 Biti ciljnega naslova
(X) Vsebina elementa X
((X)) Vsebina na naslovu, shranjenem v elementu X
(X)[M] Izpust M element X

+
-
*
IN
ALI
XOR
/X
Operacije:
dodatki
odštevanje
množenje
delitev
logično množenje (operacija IN)
logično seštevanje (operacija OR)
dodatek modul 2 (XOR)
inverzija elementa X

Funkcijska mnemonika je edinstveno povezana s posebnimi kombinacijami metod naslavljanja in tipov podatkov. Skupno je v sistemu poveljevanja možnih 111 takih kombinacij. Tabela prikazuje seznam ukazov, razvrščenih po abecedi.

Mnemotehnika funkcija Zastave
Ekipa ACALL Absolutni klic podprograma
Dodatek AC, C, OV
Dodatek s prenašanjem AC, C, OV
Ekipa AJMP Absolutni prehod
Logika "IN"
Logični "IN" za spremenljive bite C
Primerjajte in skočite, če ni enako C
Ekipa CLR A Ponastavitev baterije
ekipa CLR Ponastavi bit C, bit
CPL ekipa A Inverzija baterije
Ekipa CPL Bitna inverzija C, bit
Ekipa DA A Akumulatorski decimalni popravek za seštevanje AC, C
Ekipa DEC<байт> Zmanjšaj
Ekipa DIV AB Delitev C, OV
Ekipa DJNZ<байт>, <смещение> Zmanjšaj in preskoči, če ni nič
Ekipa I.N.C.<байт> Prirastek
Ekipa INC DPTR Povečanje podatkovnega kazalca
Ekipa J.B. , Skoči, če je bit nastavljen
Ekipa JBC , Razvejajte, če je bit nastavljen, in ponastavite ta bit
Ekipa J.C. Skok, če je nošenje nastavljeno
Ukaz JMP @A+DPTR Posredni prehod
Ekipa JNB , Skoči, če bit ni nastavljen
Ekipa JNC Skoči, če prenos ni nastavljen
Ekipa JNZ Skoči, če vsebina akumulatorja ni enaka nič
Ekipa JZ Skoči, če je vsebina akumulatorja 0
Ekipa LCALL dolg klic
Ekipa LJMP dolg prehod
Posreduj spremenljivko
Pošlji podatkovni bit C
Ukaz MOV DPTR,#podatki16 Kazalec podatkov naloži s 16-bitno konstanto
Navodilo MOVC A,@A+( ) Premakni bajt iz programskega pomnilnika
Pošlji podatke v zunanji pomnilnik (iz zunanjega pomnilnika).

NAČRT PREDAVANJA

1. Uvod

2. Aritmetična in logična navodila

3. Ukazi za prenos podatkov

4. Logične operacije

5. Navodila za skok

1. Uvod

Komandni sistem MCS-51 podpira en niz navodil, ki je zasnovan za izvajanje 8-bitnih algoritmov za krmiljenje aktuatorjev. Možno je uporabiti hitre metode naslavljanja notranjega RAM-a z izvajanjem bitnih operacij na majhnih podatkovnih strukturah. Obstaja obsežen sistem za naslavljanje enobitnih spremenljivk kot neodvisnega podatkovnega tipa, ki omogoča uporabo posameznih bitov v logičnih in krmilnih ukazih Boolove algebre.

Načini naslavljanja : komplet navodil MCS-51 podpira naslednje načine naslavljanja. Neposredno naslavljanje: Operand je določen z 8-bitnim naslovom v navodilu. Neposredno naslavljanje se uporablja samo za spodnjo polovico notranjega podatkovnega pomnilnika in registrov SFR. posredno naslavljanje: Navodilo naslovi register, ki vsebuje naslov operanda. Ta vrsta naslavljanja se uporablja za zunanji in notranji RAM. Registre je mogoče uporabiti za določanje 8-bitnih naslovov R0 in R1 izbrana registrska banka ali kazalec sklada SP. Za 16-bitno naslavljanje se uporablja samo register podatkovnega kazalca. DPTR.

Navodila za registracijo : registri R0–R7 trenutno banko registra je mogoče nasloviti prek posebnih navodil, ki vsebujejo 3-bitno polje, ki označuje številko registra v samem navodilu. V tem primeru v ukazu ni ustreznega naslovnega polja. Operacije z uporabo posebnih registrov: nekatera navodila uporabljajo posamezne registre (na primer operacije akumulatorja, DPTR itd.). V tem primeru naslov operanda v navodilu sploh ni določen. Vnaprej je določena z operacijsko kodo.

Takojšnje konstante : konstanta je lahko neposredno v ukazu za operacijsko kodo.

Indeksno naslavljanje : Indeksirano naslavljanje se lahko uporablja samo za dostop do programskega pomnilnika in samo v načinu branja. V tem načinu se pregledujejo tabele v programskem pomnilniku. 16-bitni register ( DPTR ali programski števec) označuje osnovni naslov želene tabele, akumulator pa označuje vstopno točko vanjo.

Nabor ukazovima 42 mnemonik ukazov za določanje 33 funkcij tega sistema. Sintaksa večine ukazov zbirnega jezika je sestavljena iz mnemonike funkcije, ki ji sledijo operandi, ki določajo metode naslavljanja in tipe podatkov. Različne tipe podatkov ali načine naslavljanja določajo nastavljeni operandi, ne pa spremembe v mnemoničnem zapisu.

Sistem ukazov lahko pogojno razdelimo na pet skupin: aritmetični ukazi; logični ukazi; ukazi za prenos podatkov; navodila bitnega procesorja; ukazi za razvejanje in prenos. Spodaj so navedene oznake in simboli, ki se uporabljajo v ukaznem sistemu.

Tabela. Oznake in simboli, ki se uporabljajo v ukaznem sistemu

Oznaka, simbol

Namen

Baterija

Registri trenutno izbrane registrske banke

Številka naloženega registra, podana v ukazu

neposredno

Neposredno naslovljiv 8-bitni naslov notranje podatkovne lokacije, ki je lahko notranja podatkovna lokacija RAM (0-127) ali poseben funkcijski register SFR (128-255)

Posredno naslovljiva 8-bitna notranja podatkovna lokacija RAM

8-bitni takojšnje podatki, vključeni v šifro operacije (COP)

podatkiH

MSB (15-8) takojšnjih 16-bitnih podatkov

podatkiL

Nizki biti (7-0) takojšnjih 16-bitnih podatkov

11-bitni ciljni naslov

naslovL

Najmanj pomembni deli ciljnega naslova

8-bitni predznačeni offset bajt

Neposredno naslovljiv bit, katerega naslov vsebuje CPC, ki se nahaja v notranjem podatkovnem RAM-u ali posebnem funkcijskem registru SFR

a15, a14...a0

Biti ciljnega naslova

Vsebina elementa X

Vsebina na naslovu, shranjenem v elementu X

Izpust M element X


+

*
IN
ALI
XOR
/X

Operacije:
dodatki
odštevanje
množenje
delitev
logično množenje (operacija IN)
logično seštevanje (operacija OR)
dodatek modul 2 (XOR)
inverzija elementa X

Funkcijska mnemonika je edinstveno povezana s posebnimi kombinacijami metod naslavljanja in tipov podatkov. Skupno je v sistemu poveljevanja možnih 111 takih kombinacij.

2. Aritmetična in logična navodila

Kako primer aritmetični ukaz, lahko operacijo dodajanja izvedete z enim od naslednjih ukazov.

DODAJA,7 F 16 - vsebini registra A dodamo številko 7 F 16 in shranite rezultat v register A;

DODAJA,@ R0 - vsebini registra A dodati številko, katere naslov (@ – komercialni pri ) je shranjen v registru R 0 (posredno naslavljanje) in shrani rezultat v register A;

DODAJ A,R7- dodati vsebini registra A vsebino registra R 7 in rezultat shranimo v register A;

DODAJ A, #127- vsebini registra A dodajte številko, katere naslov pomnilniške celice je 127 ( # - simbol številke) in rezultat shranite v register T- ponovno A.

Vsa aritmetična navodila se izvedejo v enem strojnem ciklu razen ukaza INC DPTR(odmik podatkovnega kazalca DPTR na naslednji bajt), kar zahteva dva strojna cikla, pa tudi operacije množenja in deljenja, izvedene v 4 strojnih ciklih. Vsak bajt v notranjem podatkovnem pomnilniku je mogoče povečati ali zmanjšati brez uporabe akumulatorja.

Navodilo MUL AB izvede množenje (množenje) podatkov v akumulatorju s podatki v registru B, pri čemer zmnožek postavi v registra A (spodnja polovica) in B (višja polovica).

Navodilo DIV AB deli (deli) vsebino akumulatorja z vrednostjo v registru B, ostanek ostane v B, količnik pa v akumulatorju.

Navodilo DA A zasnovan za binarno-decimalne aritmetične operacije (aritmetične operacije na številih, predstavljenih v binarno-decimalni kodi). Binarno datoteko ne pretvori v binarno decimalno, vendar zagotovi pravilen rezultat samo pri seštevanju dveh BCD številk.

Primer logični ukaz: operacijo logičnega IN lahko izvedete z enim od naslednjih ukazov:

ANLA,7 F 16 - logično množenje vsebine registra A s številom 7 F 16 in rezultat se shrani v register A;

ANLA,@ R1 - logično množenje vsebine registra A s številko, katere naslov je shranjen v registru R 1 (posredno naslavljanje) in shranite rezultat v register A;

ANL A,R6- logično množenje vsebine registra A z vsebino registra R 6 in shrani rezultat v register A;

ANL A,#53 - logično množenje vsebine registra A s številom, katerega naslov pomnilniške celice je 53 16, in rezultat shrani v register A.

Vse logične operacije na vsebini akumulatorja se izvedejo v enem strojnem ciklu, ostale pa v dveh. Logične operacije se lahko izvajajo na katerem koli od spodnjih 128 bajtov notranjega podatkovnega pomnilnika ali na katerem koli registru SFR (registri posebnih funkcij) v načinu neposrednega naslavljanja brez uporabe baterije.

Operacije vrtenja RL A, RLC A itd. premaknejo vsebino akumulatorja za en bit v desno ali levo. V primeru cikličnega premika v levo se najmanj pomemben bit premakne na najpomembnejši položaj. V primeru desnega cikličnega premika se zgodi nasprotno.

Delovanje ZAMENJAVA A izvaja izmenjavo mlajših in višjih tetrad v akumulatorju.

3. Ukazi za prenos podatkov

Ekipa MOV dest,src omogoča prenos podatkov med notranjimi celicami RAM ali območjem registra posebnih funkcij SFR brez uporabe baterije. V tem primeru se lahko delo z zgornjo polovico notranjega RAM-a izvaja le v načinu posrednega naslavljanja in dostop do registrov SFR– samo v načinu neposrednega naslavljanja.

V vseh mikrovezjih MCS-51 sklad je postavljen neposredno v podatkovni rezidenčni pomnilnik in raste navzgor. Navodilo POTISNI najprej poveča vrednost v registru kazalca sklada SP, in nato potisne bajte podatkov na sklad. Ekipe POTISNI in POP se uporabljajo samo v načinu neposrednega naslavljanja (pri zapisovanju ali obnavljanju bajta), vendar je sklad vedno na voljo pri posrednem naslavljanju prek registra SP. Tako lahko sklad uporablja tudi zgornjih 128 bajtov podatkovnega pomnilnika. Enaki premisleki preprečujejo uporabo navodil sklada za naslavljanje registrov. SFR.

Navodila za prenos podatkov vključujejo 16-bitni prenos MOV DPTR,#podatki16, ki se uporablja za inicializacijo registra podatkovnega kazalca DPTR pri pregledovanju tabel v programskem pomnilniku ali za dostop do zunanjega podatkovnega pomnilnika.

Delovanje XCH A,bajt uporablja se za izmenjavo podatkov med akumulatorjem in naslovljenim bajtom. Ekipa XCHD A,@Ri podoben prejšnjemu, vendar le za nižje tetrade, ki sodelujejo pri izmenjavi operandov.

Za dostop do zunanjega podatkovnega pomnilnika se uporablja samo posredno naslavljanje. V primeru enobajtnih naslovov se uporabljajo registri R0 oz R1 trenutno registrsko banko, pri 16-bitnih pa register podatkovnega kazalca DPTR. Pri kateri koli metodi dostopa do zunanjega podatkovnega pomnilnika ima baterija vlogo vira ali sprejemnika informacij.

Za dostop do tabel v programskem pomnilniku se uporabljajo naslednji ukazi:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Vsebina ustreznega registra podatkovnega kazalca se uporablja kot osnovni naslov tabele. DPTR oz PC(programski števec), odmik pa je vzet iz A. Ta navodila se uporabljajo izključno za branje podatkov iz programskega pomnilnika, ne za pisanje vanj.

4. Logične operacije

Mikrovezja MCS-51 vsebujejo logični procesor. Notranji RAM ima 128 neposredno naslovljivih bitov. Prostor registra posebnih funkcij SFR lahko podpira tudi do 128 bitna polja. Bitna navodila izvajajo pogojne skoke, prenose, ponastavitve, inverzije ter operacije IN in ALI. Vsi navedeni biti so na voljo v načinu neposrednega naslavljanja.

Nosi bit CF v posebnem funkcijskem registru "program status word PSW' se uporablja kot enobitni Boolov akumulator procesorja.

5. Navodila za skok

Naslovi operacij skoka so v zbirnem jeziku označeni z oznako ali realno vrednostjo v pomnilniškem prostoru programa. Pogojni naslovi veje so sestavljeni v relativni odmik - bajt znaka, dodan programskemu števcu PCče je prehodni pogoj izpolnjen. Meje takih skokov ležijo med minus 128 in 127 glede na prvi bajt, ki sledi navodilu. V registru posebne funkcije "program status word PSW» ničelne zastavice ni, torej navodila JZ in JNZ preverite pogoj "enako nič" kot testiranje podatkov v akumulatorju.

Obstajajo tri vrste brezpogojnih navodil za vejo: SJMP, LJMP in AJMP– ciljni naslovi, ki se razlikujejo po formatu. Navodilo SJMP kodira naslov kot relativni odmik in zavzema dva bajta. Razdalja skoka je omejena na obseg od minus 128 do 127 bajtov glede na navodilo, ki sledi SJMP.

V navodilih LJMP ciljni naslov se uporablja kot 16-bitna konstanta. Ukaz je dolg tri bajte. Ciljni naslov se lahko nahaja kjer koli v programskem pomnilniku.

Ekipa AJMP uporablja 11-bitno naslovno konstanto. Ukaz je sestavljen iz dveh bajtov. Ko se ta ukaz izvede, se spodnjih 11 bitov števca naslovov nadomesti z 11-bitnim naslovom iz ukaza. Pet najpomembnejših bitov programskega števca PC ostani nespremenjen. Tako je mogoče narediti skok znotraj 2K-bajtnega bloka, ki vsebuje navodilo, ki sledi navodilu AJMP.

Obstajata dve vrsti navodil za klic podprograma: LCALL in KLIC. Navodilo LCALL uporablja 16-bitni naslov klicanega podprograma. V tem primeru se lahko podprogram nahaja kjerkoli v pomnilniku programa. Navodilo KLIC uporablja 11-bitni naslov podprograma. V tem primeru se mora klicani podprogram nahajati v istem 2K-bajtnem bloku z navodili, ki sledijo KLIC. Obe različici ukaza potisneta naslov naslednjega ukaza na sklad in ga naložita v programski števec. PC ustrezno novo vrednost.

Podprogram se konča z navodilom RET, ki vam omogoča, da se po ukazu vrnete na navodilo POKLIČITE. To navodilo odstrani povratni naslov iz sklada in ga naloži v programski števec. PC . Navodilo RETI uporablja se za vrnitev iz prekinitvenih rutin. Edina razlika RETI od RET je to RETI Obvesti sistem, da je obdelava prekinitve končana. Če v času izvršitve RETI drugih prekinitev ni, je identična RET.

Navodilo DJNZ zasnovan za nadzor cikla. Za zagon zanke n ko morate v števec naložiti bajte z vrednostjo n in zaprite telo zanke z ukazom DJNZ, ki označuje začetek cikla.

Ekipa CJNE primerja svoja dva operanda kot nepredznačena cela števila in skoči na naslov, ki je v njem naveden, če primerjana operanda nista enaka. Če je prvi operand manjši od drugega, potem je prenosni bit CF nastavite na "1".

Vsa navodila v sestavljeni obliki zasedajo 1, 2 ali 3 bajte.

Intel je začetnik družinske arhitekture MCS-51, ki je dobila ime po prvem predstavniku te družine - mikrokrmilniku 8051, izdanem leta 1980 na osnovi tehnologije n-MOS. Dober nabor perifernih naprav, prilagodljiva izbira zunanjega ali notranjega programskega pomnilnika in dostopna cena so poskrbeli za uspeh tega mikrokrmilnika na trgu. S tehnološkega vidika je bil mikrokrmilnik 8051 za svoj čas zelo kompleksen izdelek - v kristalu je bilo uporabljenih 128 tisoč tranzistorjev, kar je bilo 4-kratno število tranzistorjev v 16-bitnem mikroprocesorju 8086. Ta mikrokrmilnik ostaja jedro družine MCS-51 do danes.

Glavni elementi osnovne arhitekture družine (arhitektura mikrokontrolerjev 8051) so:

8-bitni ALU;

4 banke registrov, po 8 v vsaki;

Notranji (rezidenčni) programski pomnilnik 4 KB, tipa ROM ali EPROM (8751);

Notranji (rezidenčni) podatkovni pomnilnik 128 bajtov;

21 posebnih funkcijskih registrov;

Boolov procesor;

Dva 16-bitna časovnika/števca;

Krmilnik serijskih vrat (UART);

Krmilnik prekinitev z dvema nivojema prioritete;

Štiri 8-bitna V/I vrata, od katerih se dva uporabljata kot naslovno/podatkovno vodilo za dostop do zunanjega programskega in podatkovnega pomnilnika;

Vgrajen taktni generator.

Nato je bil izdan mikrokrmilnik 8052, ki je vseboval povečano količino rezidenčnega programskega in podatkovnega pomnilnika, uvedenega s tretjim časovnikom in ustrezno razširjenim krmilnikom prekinitev.

Naslednji temeljni korak v razvoju MCS-51 je bil prenos proizvodne tehnologije na CMOS (modifikacija 8xC51). To je omogočilo implementacijo načinov Idl (mirovanje) in Power Down (nizka poraba), ki zagotavljata močno zmanjšanje porabe energije kristala in odprla pot za uporabo mikrokrmilnika v hlapljivih aplikacijah, npr. avtonomne naprave na baterije.

In zadnja pomembna faza v razvoju MK 8051 s strani Intel je bila izdaja mikrokontrolerjev 8xC51FA / FB / FC in 8xC51RA / RB / RC, ki se za kratkost pogosto imenujejo 8xC51Fx in 8xC51Rx. Glavna značilnost te skupine kristalov je prisotnost specializiranega časovnika / števca (PCA). Poleg tega mikrokontrolerji 8xC51Rx dodatno vsebujejo časovnik čuvaj (WDT). Razmislite o arhitekturi in funkcionalnosti PCA podrobneje.

RSA vključuje:

16-bitni časovnik/števec;

Pet 16-bitnih vzorčnih in primerjalnih modulov, od katerih je vsak povezan z drugo linijo vrat V/I mikrokrmilnika.

Časovnik/števec služi vsem petim vzorčnim in primerjalnim modulom, ki jih je mogoče programirati za izvajanje ene od naslednjih funkcij:

16-bitno vzorčenje vrednosti časovnika na pozitivnem robu zunanjega signala;

16-bitno vzorčenje vrednosti časovnika na negativnem robu zunanjega signala;

16-bitno vzorčenje vrednosti časovnika na kateremkoli robu zunanjega signala;

16-bitni programabilni časovnik;

16-bitna hitra izhodna naprava;

8-bitni PWM.

Implementacija vseh naštetih funkcij poteka v PCA na strojni ravni in ne obremenjuje centralnega procesorja. To vam omogoča, da povečate skupno prepustnost, izboljšate natančnost meritev in obdelavo signalov ter zmanjšate odzivni čas mikrokrmilnika na zunanje dogodke, kar je še posebej pomembno za sisteme v realnem času. Izkazalo se je, da je PCA, implementiran v 8xC51Fx (8xC51Rx), tako

Imenovanje

maks. frekvenca (MHz)

ROM/EPROM (bajt)

števci

Na srečo je arhitektura teh mikrokrmilnikov postala industrijski standard, sam PCA pa je bil večkrat reproduciran v različnih modifikacijah MK 8051.

Nekatere značilnosti številnih mikrokontrolerjev MCS-51 proizvajalca Intel so podane v tabeli 1.1.

Sprva sta bila ozka grla arhitekture MCS-51 8-bitna baterijska ALU in razmeroma počasno izvajanje ukazov (12 zank je potrebnih za izvajanje najhitrejših ukazov).

Tabela 1.1

I/O

ADC vhodi x števk

periferija,

posebnosti

U hišni ljubljenček. (IN)

Možnost nizke napetosti

4 ravni IRQ, izhodna ura

4 ravni IRQ, izhodna ura

Nizkonapetostna različica 8xC51Fx

4 ravni IRQ, izhodna ura

4 ravni IRQ, izhodna ura

4 ravni IRQ, izhodna ura

frekvenca ure (MC sinhronizacijska frekvenca)). To je omejilo uporabo družinskih mikrokontrolerjev v aplikacijah, ki zahtevajo večjo zmogljivost in kompleksne izračune (16- in 32-bitni). Vprašanje temeljite posodobitve arhitekture MCS-51 je postalo nujno. Problem modernizacije je bil zapleten zaradi dejstva, da je bilo do začetka 90. let na področju programske in strojne opreme družine MCS-51 že ustvarjenih veliko dogodkov, v zvezi s katerimi je bila ena glavnih nalog oblikovanja Nova arhitektura je bila za izvajanje združljivosti strojne in programske opreme z razvojem, ki temelji na MCS -51.

Za rešitev tega problema je bila ustanovljena skupna skupina strokovnjakov iz Intel in Philips, vendar sta se poti teh dveh podjetij pozneje razšli. Posledično sta se leta 1995 pojavili dve bistveno različni družini: Intelov MCS-251/151 in Philipsov MCS-51XA (glej pododdelek 1.2).

Ključne značilnosti arhitekture MCS-251:

24-bitni linearni naslovni prostor, naslavljanje do 16 MB pomnilnika;

Arhitektura registra, ki omogoča, da se registri imenujejo bajti, besede in dvojne besede;

Način naslavljanja strani za hitrejše pridobivanje ukazov iz zunanjega programskega pomnilnika;

Čakalna vrsta navodil;

Razširjen nabor navodil, vključno s 16-bitnimi aritmetičnimi in logičnimi operacijami;

Razširjen naslovni prostor sklada (do 64 KB);

Izvedba najhitrejšega ukaza v 2 ciklih.

Nabor navodil MCS-251 vključuje dva nabora navodil – prvi nabor je kopija nabora navodil MCS-51, drugi pa je sestavljen iz razširjenih navodil, ki izkoriščajo arhitekturo MCS-251. Pred uporabo mikrokontrolerja ga je treba konfigurirati, tj. s programatorjem "zapiši" konfiguracijske bite, ki določajo, kateri od nizov ukazov bo postal aktiven po vklopu. Če namestite prvi niz navodil, bo v tem primeru MK družine MCS-251 združljiv z MCS-51 na ravni binarne kode. Ta način se imenuje binarni način. Če prvotno namestite nabor razširjenih navodil (izvorni način), bodo programi, napisani za MCS-51, zahtevali ponovno prevajanje z navzkrižnimi orodji za MCS-251. Source Mode vam omogoča uporabo arhitekture MCS-251 z največjo učinkovitostjo in doseganje najvišje zmogljivosti.

Za uporabnike, ki se osredotočajo na uporabo mikrokrmilnikov MCS-251 kot mehanske zamenjave za MCS-51, Intel izda mikrokrmilnike MCS-151, ki so že programirani v stanju binarnega načina.

Nekatere značilnosti številnih mikrokontrolerjev MCS-251/151 so podane v tabeli 1.1.

Trenutno Intel, usmerjen na trg procesorjev Pentium, omejuje proizvodnjo kristalov MCS-51. Na splošno lahko za določenega razvijalca to ostane neopaženo, razen če uporablja mikrokontrolerje 8xC51GB in 80C152Jx, ki med izdelki drugih podjetij nimajo natančnih analogov. Kot za vse ostale mikrokontrolerje iz družine MCS-51, jih druga podjetja vse večkrat posnemajo.

Osnova mikrokontrolerja (glej sliko 1) je 8-bitna aritmetično logična enota (ALU). Spomin na MK ima harvardsko arhitekturo, tj. logično razdeljen: na programski pomnilnik - PP (notranji ali zunanji), naslovljen s 16-bitnim števcem ukazov (SC) in podatkovni pomnilnik - notranji (Resident data memory - RPD) 128 (oz. 256) bajtov, ter zunanji (External podatkovni pomnilnik – VPD) do 64 KB. Fizično je programski pomnilnik implementiran na ROM (samo branje), podatkovni pomnilnik pa na RAM (podatke je mogoče pisati in brati).

Sprejem in dostava zunanjih signalov poteka prek 4 osem-bitnih vrat Р0..Р3. Pri dostopu do zunanjega programskega pomnilnika (EPM) ali podatkovnega pomnilnika (VPD) se vrata P0 in P2 uporabljajo kot multipleksirano zunanje naslovno/podatkovno vodilo. Linije vrat P3 lahko izvajajo tudi alternativne funkcije (glejte tabelo 1).

16-bitni register DPTR tvori naslov VPD ali osnovni naslov programskega pomnilnika v navodilu za pretvorbo akumulatorja. Register DPTR se lahko uporablja tudi kot dva neodvisna 8-bitna registra (DPL in DPH) za shranjevanje operandov.

8-bitni notranji register ukazov (RK) sprejme kodo ukaza, ki se izvaja; to kodo dekodira krmilno vezje, ki generira krmilne signale (glej sliko 1).

Dostop do posebnih funkcijskih registrov - RSF (SFR - na sliki 1 so obkroženi s črtkano črto) je možen le z uporabo neposrednega bajtnega naslavljanja v območju naslovov od 128 (80h) in več.


Rezidentni podatkovni pomnilnik (RDD) je imel v prvih modelih mikrokontrolerjev družine MCS-51 kapaciteto 128 bajtov. Spodnjih 32 bajtov RPD je tudi splošnih registrov - RON (4 banke po 8 RON). Program se lahko nanaša na enega od 8 RON aktivne banke. Izbira aktivne banke RON-jev se izvede s programiranjem dveh bitov v statusnem registru procesorja - PSW.


Tabela 1 - Razporeditev pinov MCS-51

Pin št. Imenovanje Namen
1..8 P1 8-bitna kvazi-dvosmerna V/I vrata
9 RST

Reset signal (aktivna raven - visoka);

Signal RST ponastavi: PC in večino registrov posebnih funkcij (SFR), onemogoči vse prekinitve in časovnike; izbere banko RON 0; zapiše "vse enote" v vrata P0_P3 in jih pripravi za vnos; zapiše kodo 07H v kazalec sklada (SP);

10..17

8-bitna kvazi-dvosmerna V/I vrata; po zapisu v ustrezen bit "1" - izvaja dodatne (alternativne) funkcije:

Vhod serijskih vrat - RxD;

Izhod serijskih vrat - TxD;

Zunanji prekinitveni vhod 0 - ~INT0;

Zunanji prekinitveni vhod 1 - ~INT1;

Vhod časovnika/števca 0 - T0;

Vhod časovnika/števca 1 - T1;

Stroboskopski izhod. signal pri pisanju v VPD - ~ WR;

Stroboskopski izhod. signal pri branju iz VPD - ~ RD;

18, 19 X1, X2 Zaključki za priključitev kvarčnega resonatorja ali LC vezja;
20 GND Splošni zaključek;
21..28 P2 8-bitna kvazi-dvosmerna V/I vrata; ali izhodni naslov A v načinu zunanjega pomnilnika (VPP ali VPD);
29 PME Utrip branja zunanjega programskega pomnilnika, ki se pojavi samo pri dostopu do zunanjega ROM-a;
30 ALE Utrip naslova zunanjega pomnilnika (VPP ali VPD);
31 EA Če onemogočite RPP, raven "0" na tem vhodu preklopi MK na izbiro ukazov samo s piste ;
39..32 P0 8-bitna dvosmerna V/I vrata; pri dostopu do zunanjega pomnilnika izda naslove A (ki se zapišejo v zunanji register s signalom ALE), nato pa sinhrono izmenja bajt s signalom ~PME (za ukaze) ali ~WR,~RD (za podatke v VPD) , pri dostopu do zunanjega pomnilnika se vse enote zapišejo v register vrat P0 in uničijo tam shranjene informacije;
40 Ucc Izhod napajalne napetosti

Preklapljanje bank RON-jev poenostavlja izvajanje podprogramov in obravnavanje prekinitev, ker. pri klicu podprograma vsebine RON-jev glavnega programa ni treba prenesti v sklad (dovolj je, da greste v drugo aktivno banko RON v podprogramu).

Dostop do RPD je mogoč s posrednim ali neposrednim bajtnim naslavljanjem (direktno bajtno naslavljanje omogoča dostop le do prvih 128 bajtov RPD).

Razširjeno področje RPD (za mikrokrmilnike družine MCS-52 in naslednjih družin) od naslova 128 (80h) do 255 (FFh) je mogoče nasloviti samo z metodo posrednega naslavljanja.

Tabela 2 - Registri blokov posebnih funkcij (s f r)

Mnemo koda Ime
0E0h *AKC Baterija
0F0h *B Registrirajte baterijski ekspander
0D0h *PSW Beseda stanja procesorja
0B0h *P3 Vrata 3
0A0h *P2 Vrata 2
90h *P1 Vrata 1
80h *P0 Vrata 0
0B8h * IP Register prioritete prekinitev
0A8h *IE Register prekinitvene maske
99h SBUF Medpomnilnik serijskega oddajnika
98h * SCON Nadzor serijskih vrat/Statusni register
89h TMOD Register načina časovnika/števca
88h * TCON Časovnik/kontrola števca/register stanja
8Dh TH1 Časovnik 1 (visoki bajt)
8bh TL1 Časovnik 1 (nizki bajt)
8ch TH0 Časovnik 0 (visoki bajt)
8ah TL0 Časovnik 0 (nizki bajt)
83h DPH Register podatkovnega kazalca (DPTR) (visoki bajt)
82h DPL Register podatkovnega kazalca (DPTR) (nizki bajt)
81h SP Register kazalca sklada
87h PCON Register nadzora moči povpraševanja

2. MODEL PROGRAMSKE OPREME MCS–51


VRSTE UKAZOV MCS–51

Skoraj polovica ukazov se izvede v 1 strojnem ciklu (MC). Pri frekvenci kristalnega oscilatorja 12 MHz je čas izvajanja takega ukaza 1 μs. Preostali ukazi se izvedejo v 2 strojnih ciklih, tj. za 2 ms. Samo navodila za množenje (MUL) in deljenje (DIV) se izvajajo v 4 strojnih ciklih.

Med enim strojnim ciklom obstajata dva dostopa do programskega pomnilnika (notranji ali zunanji) za branje dveh bajtov ukaza ali en dostop do zunanjega podatkovnega pomnilnika (EDM).

3. METODE (METODE) NASLOVANJA MCS–51

1. NASLAVLJANJE REGISTRA - 8-bitni operand se nahaja v RON izbrane (aktivne) banke registrov;

2 DIREKTNO NASLOVALJANJE (označeno z znakom - #) - operand se nahaja v drugem (in za 16-bitni operand tudi v tretjem) bajtu ukaza;

3 POSREDNO NASLAVLJANJE (označeno z znakom - @) - operand se nahaja v podatkovnem pomnilniku (RPD ali VPD), naslov pomnilniške celice pa je v enem od RON-jev posrednega naslavljanja (R0 ali R1); v ukazih PUSH in POP je naslov vsebovan v kazalcu sklada SP; register DPTR lahko vsebuje naslov VPD do 64K;

4 NEPOSREDNO NASLOVALJANJE BAJTOV – (dir) – uporablja se za dostop do celic RPD (naslovi 00h…7Fh) in posebnih funkcijskih registrov SFR (naslovi 80h…0FFh);

5 DIREKTNO NASLAVLJANJE BITOV - (bit) - se uporablja za dostop do ločeno naslovljivih 128 bitov, ki se nahajajo v celicah RPD na naslovih 20H ... 2FH in do ločeno naslovljivih bitov posebnih funkcijskih registrov (glej tabelo 3 in model programa);

6 POSREDNO INDEKSNO NASLAVLJANJE (označeno z znakom @) - poenostavi pregledovanje tabel v programskem pomnilniku, naslov PP je določen z vsoto osnovnega registra (PC ali DPTR) in indeksnega registra (baterija);

7 IMPLICITNO (VGRAJENO) NASLAVLJANJE - ukazna koda vsebuje implicitno (privzeto) referenco na enega od operandov (najpogosteje na akumulator).

4. FORMAT STATUSNE BESEDE PROCESORJA (PSW).

C - Zastavica za prenos (CARY) ali izposojo, deluje tudi kot "boolov akumulator" v bitnih ukazih;

AC – pomožna (dodatna) zastavica za prenos – nastavljena na "1", če je imel ukaz za dodajanje (ADD, ADDC) prenos iz tetrade nizkega reda v višji red (tj. iz 3. bita v 4. bit);

F0 - uporabniška zastavica - programsko nastavljena, ponastavljena in preverjena;

RS1 RS0 Banka Naslov (dir)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 – Izbira registrske banke:

OV - zastavica aritmetične prekoračitve; njegova vrednost je določena z operacijo XOR vhodnih in izhodnih prenosnih signalov najpomembnejšega bita ALU; ena sama vrednost te zastavice označuje, da je rezultat aritmetične operacije v kodi komplementa dveh izven območja: –128…+127; pri izvedbi operacije deljenja se zastavica OV ponastavi, v primeru deljenja z ničlo pa se nastavi; pri množenju se zastavica OV nastavi, če je rezultat večji od 255 (0FFH);

Bit PSW - Rezerviran, vsebuje sprožilec, na voljo za pisanje ali branje;

P - zastavica paritete - je dodatek števila posameznih bitov v akumulatorju k sodemu številu; tvori kombinacijsko vezje (programsko na voljo samo za branje).

Mikrokontrolerji MCS-51 nimajo oznake "Z". Toda v navodilih za pogojni skok (JZ, JNZ) kombinacijsko vezje preveri trenutno (ničelno ali neničelno) vsebino akumulatorja.

Vse ukaze prenosov in izmenjave operandov je mogoče izvesti prek akumulatorja (glej sliko 3). Poleg tega se lahko prenosi iz/v zunanji pomnilnik (programski pomnilnik ali podatkovni pomnilnik) izvajajo samo prek baterije.

Večino prenosov lahko izvedete tudi prek bajta za posredovanje (dir). Obstajajo celo prenosi dir-to-dir (glejte sliko 3).

Manjkajoči prenosi iz RON v RON se lahko izvedejo kot prenosi iz RON v direkt bajta (glede na to, da se RON nahajajo v začetnem območju rezidentnega podatkovnega pomnilnika, katerega celice je mogoče nasloviti kot dir).

Ukazi za izmenjavo XCH vam omogočajo pošiljanje bajtov brez uničenja obeh operandov.

Aritmetični ukazi se izvajajo samo v akumulatorju. Zato je treba prvi operand najprej postaviti v akumulator in nato dodati ali odšteti drugi operand. Rezultat se shrani v akumulator.


Ukaz za odštevanje SUBB se izvede samo z izposojo (tj. od rezultata se odšteje tudi zastavica Cary). Zato je treba za izvedbo ukaza odštevanja brez izposoje najprej izvesti ukaz Clear Flag C (CLRC).

Navodilo za množenje enobajtnih operandov - MULAB - postavi dvobajtni (16-bitni) rezultat: nizki bajt je v akumulatorju, visoki bajt je v registru B.

Rezultat izvedbe ukaza za deljenje enobajtnih operandov - DIVAB - se postavi: količnik - akumulator, ostanek - v register B.

Aritmetično navodilo INC izbranemu operandu doda eno. Aritmetično navodilo DEC odšteje eno od izbranega operanda. Navodilo Accumulator Decimal Correction (DAA) vam pomaga dodati binarno kodirana decimalna (BCD) števila, ne da bi jih pretvorili v šestnajstiško (hex) obliko. Izvorni operandi morajo biti v formatu BCD, tj. v vsaki tetradi enega bajta so samo števila od 0 do 9 (šestnajstiških števil ne more biti: A, B, C, D, E, F). Zato lahko en bajt vsebuje številke od 00 do 99 za pakirane številke BCD ali številke od 0 do 9 za nepakirane številke BCD.

Ukaz DA A - decimalni popravek izvede dejanja nad vsebino akumulatorja po dodajanju števil BCD v procesorju (števila so bila dodana v skladu z zakoni šestnajstiške aritmetike) na naslednji način (glej primer):

· če je vsebina tetrade nizkega reda akumulatorja večja od 9 ali je nastavljena pomožna prenosna zastavica (AC = 1), se vsebini akumulatorja doda 6 (tj. manjkajočih šest števk v hex format);

· če je po tem vsebina višjega reda akumulatorja večja od 9 ali je nastavljena zastavica C, se številka 6 doda višjemu redu akumulatorja.

Ukaz decimalne korekcije DA A se ne uporablja za ukazom prirastka (INC), ker ukaz prirastka ne vpliva (spreminja) na zastavici C in AC.

Logični ukazi:

Logični "IN" - ANL,

Logični "ALI" - ORL,

Logični ukaz XOR - XRL - se izvaja v akumulatorju (kot tudi aritmetika), možno pa je izvajanje logičnih ukazov tudi v neposrednem naslovnem bajtu (dir). V tem primeru je lahko drugi operand:

v bateriji oz

Takojšnji operand v navodilu.

Navodila za vrtenje (RR A, RL A) in navodila za vrtenje prek zastavice CARY (RRC A, RLC A) zasukajo vsebino akumulatorja za 1 bit. Bitni operandi se pošiljajo samo prek zastavice C.

Stanje prekinitvenega sistema se vpraša na koncu vsakega strojnega cikla v fazi S5P2, z izjemo ukazov RETI in vseh navodil, ki dostopajo do registrov IE in IP. Potrebuje 38 do 86 obdobij frekvence fOSC od trenutka, ko je zahteva za prekinitev predana servisiranju prekinitve, odvisno od faze zahteve in števila strojnih ciklov ukaza, med katerim je bila zahteva prejeta.

Ko je prekinitev implementirana v strojni opremi, se izvede ukaz LCALL addr16, ki poskrbi, da se trenutno stanje programskega števca shrani na sklad (zapomni si povratni naslov) in skoči na začetni naslov addr16 ustrezne storitvene procedure. Vsak vir zahteve za prekinitev ima svojo lastno povezavo

začetni naslov (prekinitveni vektor):

Zunanja prekinitev INT0.

Prekinitev časovnika/števca TC0.

Zunanja prekinitev INT1.

Prekinitev časovnika/števca TC1.

Prekinitev serijskih vrat.

2.7. Metode naslavljanja in ukazni sistem družine MCS-51

Ukazni sistem družine MCS-51 je osredotočen na organizacijo fleksibilnega vnosa/izhoda podatkov prek univerzalnih vrat P0...P3 in primarne obdelave informacij. Posebna pozornost je namenjena operacijam z biti in prenosu nadzora po njihovi vrednosti. Instrukcije, ki izvajajo takšne operacije, tvorijo veliko skupino in skupaj z ustrezno strojno opremo tvorijo tako imenovani "Boolean procesor" kot del arhitekture MCS-51.

Sistem ukazov programerju omogoča uporabo večine operacij s celotnim naborom metod naslavljanja in strojnih virov, ki so dostopni programski opremi.

2.7.1. Metode naslavljanja

Vsako navodilo pove procesorju operacijo, ki naj se izvede, in metode za dostop do operandov. Koda ukaza ima več polj, ki imajo določen funkcionalni namen. Najpomembnejši polji vsakega ukaza sta koda operacije (COP), ki določa dejanje ukaza, in naslovni del. Polja naslovnega dela vsebujejo informacije o naslovih operandov in rezultatu operacije ter v nekaterih primerih informacije o naslovu naslednjega ukaza.

Če naslov kaže na številko pomnilniške celice, v kateri se operand nahaja ali kjer je vpisan, se imenuje neposredni naslov.

Metode naslavljanja so nabor mehanizmov za dostop do operandov. Nekateri med njimi so preprosti, kar ima za posledico kompakten format navodil in hiter dostop do operanda, vendar imajo omejeno količino razpoložljivih virov. Drugi vam omogočajo, da delujete z vsemi viri, ki so na voljo v sistemu, vendar se izkaže, da je ukaz dolg,

vnos in izvedba porabi veliko časa. Niz metod naslavljanja v vsakem nizu navodil je kompromisna kombinacija znanih mehanizmov naslavljanja, ki so jih izbrali oblikovalci arhitekture na podlagi nabora nalog, ki jih je treba rešiti.

Sledijo glavne metode naslavljanja, ki se uporabljajo v družinskem ukaznem sistemu MCS-51.

Implicitno naslavljanje. Ukaz ne vsebuje eksplicitnih navedb o naslovu operanda, ki sodeluje pri operaciji, ali o naslovu, na katerega je postavljen rezultat operacije, vendar je ta naslov impliciran. V ukazih je akumulator največkrat implicitno naslovljen kot cilj rezultata operacije. Na primer, rezultat seštevanja vsebine akumulatorja (A) in registra R1 trenutne banke podatkov z ukazom ADD A,R1 se zapiše v implicitno naslovljeni akumulator. Celoten podani ukaz zavzema en bajt v pomnilniku, medtem ko naslov samo akumulatorja (8Eh območja SFR) vsebuje en bajt.

Neposredno naslavljanje. V naslovnem polju ukaza vnesite

Ne živi naslov operanda, ampak operand sam. Neposredno naslavljanje je označeno s posebnim znakom # pred številko. Na primer, ukaz MOV A,#15h naloži šestnajstiško število 15 (drugi bajt ukaza) v akumulator. V ukaznem sistemu je neposredno naslavljanje označeno kot #data, kjer je podatek število

(podatki = 00h...FFh).

Neposredno naslavljanje. Polje z naslovom ukaza podaja neposredni naslov podatkovnega pomnilnika, v katerem se operand nahaja ali kjer je zapisan. Na primer, ukaz MOV A,15h naloži vsebino celice DSEG na naslovu 15h v akumulator. Pomnilniška celica je naslovljiva neposredno, akumulator pa implicitno naslovljen. Glede na lokacijo naslovljenega operanda se neposredno naslavljanje deli na neposredno registrsko naslavljanje in absolutno naslavljanje.

Neposredno naslavljanje registra. Polje ukaznega naslova vsebuje neposredni naslov registra trenutne banke registra. V vsaki banki je osem registrov, za naslavljanje pa je potreben tribitni neposredni naslov. V ukazni mnemoniki je naslovljivi register označen z Rn, kjer je n=0...7. Vsa polja ukaza so v enem bajtu. Takšno naslavljanje imenujemo kratko. Na primer MOV R4,R1.

Neposredno absolutno naslavljanje vam omogoča dostop do katere koli celice DSEG in območja SFR. Neposredni naslov v tem primeru zavzame en bajt, ukaz pa dva bajta. V ukaznem sistemu je neposredni naslovni bajt označen z besedo direct (neposredno) (neposredno = 00h ... FFh). Na primer, ukaz MOV 80h,R2 (ali MOV P0,R2) naloži vsebino registra R2 trenutne banke podatkov v vrata P0 (lokacija 80h SFR). Če sta oba operanda neposredno absolutno naslovljiva, postane ukaz tribajtni (npr. MOV 80h,15h).

posredno naslavljanje. Naslovno polje vsebuje naslov pomnilniške lokacije, kjer se nahaja neposredni naslov operanda. V ukaznem sistemu je posredno naslavljanje označeno s posebnim znakom @. premoženje

registra R0 in R1 (@Ri, i = 0,1) vsake registrske banke morata shraniti neposredni naslov. Na primer, če je vsebina registra R1 trenutne banke registra 15h, bo ukaz MOV A,@R1 izvedel isto dejanje kot zgornji ukaz MOV A,15h – naložil bo vsebino pomnilniške lokacije DSEG. z naslovom 15h v akumulator. Vendar je ukaz MOV A, @ R1 enobajten, a kar je najpomembneje, mogoče je programsko spremeniti naslov s spreminjanjem vsebine registra R1.

Relativno naslavljanje. Pri relativnem naslavljanju se neposredni naslov oblikuje z dodajanjem osnovnega naslova naslovnemu polju ukaza. Vsebina programskega števca se uporablja kot osnovni naslov, naslovno polje ukaza pa je osembitni rel (relativni) odmik. Število rel ukaz razlaga kot celo število s predznakom, predstavljeno v komplementu dveh. Njegov razpon predstavitve je (-128...+127). Pri določanju rel številke ne pozabite, da programski števec kaže na naslednji ukaz, ki ga je treba izvesti. Relativno naslavljanje se pogosto uporablja v ukazih za prenos krmiljenja, kar omogoča ustvarjanje premestljivih programskih modulov. Ukazi za prenos nadzora z relativnim naslavljanjem omogočajo razvejanje glede na trenutno pozicijo programskega števca osebnega računalnika v obe smeri za (-128...+127) bajtov.

V programih v zbirnem jeziku lahko polje za odmik uporabite za določitev oznake, na katero želite skočiti. Kot rezultat prevajanja bo asembler izračunal vrednost odmika, če ta ne presega (-128…+127). V nasprotnem primeru bo izdano sporočilo o napaki.

Osnovno naslavljanje predstavlja neke vrste relativno naslavljanje. Direktni naslov se v tem primeru oblikuje tako, da se naslov, naveden v ukazu, doda vsebini osnovnega registra, ki hrani osnovni naslov. Funkcijo baznega registra v družini MCS-51 opravlja register podatkovnega kazalca DPTR ali programski števec osebnega računalnika. Ta vrsta naslavljanja je še posebej uporabna pri obdelavi tabel in podatkovnih nizov. V navodilih MOVC A,@A+DPTR in MOVC A,@A+PC je 16-bitni neposredni naslov oblikovan kot vsota vsebine registrov DPTR in A ali PC in A.

Naslavljanje strani. Pri uporabi naslavljanja strani se pomnilnik razdeli na več strani enake dolžine. Naslavljanje strani se izvede z ločenim registrom strani, pomnilniške celice znotraj strani pa se naslovijo z naslovom, ki ga vsebuje navodilo. Neposredni naslov se oblikuje z veriženjem (pripenjanjem) naslova strani in naslova pomnilniške celice znotraj strani. V ukazu MOVX A,@Ri vrata P2 (visoki bajt naslova) opravljajo funkcijo stranskega registra, vsebina registra Ri (nizki bajt naslova) pa določa naslov znotraj strani. V tem primeru je pomnilnik razdeljen na 256 strani po 256 celic v vsaki od njih.

Naslavljanje sklada uporablja se v ukazih brez naslova in je kombinacija metod naslavljanja s samodejnim povečevanjem in samodejnim zmanjševanjem, ki deluje po principu LIFO (L ast I input - F irst O utput) - "zadnji vstop - prvi ven". Sklad se nahaja v DSEG in raste v smeri naraščanja naslova. Naslov vrha sklada je vsebovan v kazalcu sklada SP. Ko je bajt potisnjen na sklad, se vsebina SP najprej poveča, nato pa se nanj zapiše naslov. Ko berete bajt iz sklada, najprej preberite na naslovu, na katerega kaže SP, nato pa zmanjšajte SP. Pri uporabi sklada ne pozabite, da globine sklada (največjega števila pomnilniških celic, ki jih sklad zaseda) ne nadzoruje strojna oprema. S prekomernim povečanjem sklada se lahko zasedejo pomnilniške celice, ki temu niso namenjene, z izgubo informacij v njih. Sklad strojne opreme se uporablja za shranjevanje povratnega naslova pri servisiranju prekinitve.

2.7.2. Družinski ukazni sistem MCS-51

Sistem ukazov je predstavljen v tabelah A2.1...A2.6 dodatka 2. Tabele prikazujejo ime ukaza, njegovo mnemoniko, kodo binarne operacije, učinek izvedenega ukaza na zastavice C, OV, AC in P, dolžino ukaza v bajtih (B) in čas izvajanja v strojnih ciklih (C) ter vsebino pretvorbe, ki jo izvede navodilo. Vejica se uporablja kot ločilo za naslovna polja v ukazih. Za izboljšanje berljivosti lahko za vejico dodate presledke, če to podpira uporabljeni asembler.

Celoten nabor ukazov lahko razdelimo v 5 skupin: operacije prenosa podatkov, aritmetične operacije, logične operacije, operacije z biti in operacije prenosa krmiljenja.

Skupina ukazov za operacijo prenosa podatkov(Tabela A2.1) so-

vsebuje MOV (prenos podatkov med DSEG in RSEG), MOVC (med CSEG in A), MOVX (med XSEG in A), ukaze za dostop do sklada PUSH in POP ter dva ukaza za izmenjavo XCH in XCHD. Vsa navodila za prenos podatkov, katerih cilj je akumulator, nastavijo paritetno zastavo P vsebine akumulatorja, navodila za neposredno naslavljanje, katerih cilj je register PSW, pa spremenijo vse zastavice. Najbolj zmogljiv je ukaz MOV, ki uporablja štiri metode naslavljanja: direktni register (A, Rn, DPTR), neposredni (neposredni), posredni (@Ri), neposredni (#data, #data16). Drugi operand ukaza je izvor, prvi operand je cilj. Obstajajo trije načini naslavljanja (razen neposrednega) za določanje cilja in vsi štirje za določanje vira. Tribajtni ukaz MOV direct,direct zagotavlja prenos med katerima koli dvema pomnilniškima celicama (DSEG in SFR), vključno z RSEG. Za izmenjavo z RSEG so na voljo posebni dvo- in enobajtni formati:

Posebno navodilo MOV DPTR,#data16 naloži 16-bitni kazalec DPTR z vrednostjo data16.

Ukaz MOVC vam omogoča branje informacij iz programskega pomnilnika CSEG ne v ukazni register krmilne naprave, temveč v akumulator delovne naprave. Ukaz uporablja dva načina naslavljanja: na podlagi DPTR in glede na osebni računalnik. V obeh primerih je nepredznačeni celoštevilski odmik (indeks) shranjen v akumulatorju. Zbiralnik služi tudi kot sprejemnik rezultata. Ukaz omogoča hitro rekodiranje po tabelah.

Do zunanjega pomnilnika se dostopa z ukazom MOVX. Izmenjava poteka po bajtih med akumulatorjem in zunanjim XSEG. Celico XSEG je mogoče nasloviti na dva načina: posredno prek 16-bitnega kazalca DPTR in stransko posredno prek 8-bitnega kazalca Ri, i=0,1. V slednjem primeru je register strani P2.

Nenaslovljena ukaza PUSH in POP zagotavljata prenos podatkov

med DSEG, RSEG in SFR.

Ukaz za izmenjavo XCH zagotavlja dvosmerno izmenjavo bajtov, ukaz XCHD pa nižje tetrade operandov bajtov.

Skupina navodil za računske operacije(Tabela A2.2) so-

vsebuje navodila za dodajanje ADD, prenašanje dodajanja ADDC, izposojanje odštevanja SUBB, povečevanje in zmanjševanje za en INC in DEC, decimalni popravek seštevanja dvojiško kodiranega decimalnega (BCD) pakiranega formata, množenje MUL in deljenje DIV. Operacije se izvajajo na nepredznačenih celih številih. V operacijah seštevanja in odštevanja je akumulator prvi operand in cilj rezultata. Za definiranje drugega operanda se uporabljajo neposredni register, neposredno absolutno, neposredno in posredno naslavljanje. Operaciji INC in DEC veljata za akumulator, neposredno naslovljiv register, neposredno ali posredno naslovljivo pomnilniško lokacijo. Poleg tega se operacija INC nanaša na vsebino 16-bitnega kazalnega registra DPTR.

Množenje celih števil in operacije deljenja brez predznaka vključujejo akumulator in register B. Pri množenju se 8-bitna vrednost A pomnoži z 8-bitno vrednostjo B, 16-bitni rezultat pa se zapiše v par BA. V tem primeru je v registru B shranjen najvišji del izdelka. Zastavica OV je nastavljena, če je zmnožek večji od 255. Ko je 8-bitna vrednost A deljena z 8-bitno vrednostjo B, se količnik zapiše v A, preostanek pa v B. Poskus deljenja z 0 nastavi Zastavica za prelivanje OV.

Ukaz decimalne korekcije akumulatorja DA je postavljen za ukazom seštevanja. Izrazi morajo biti predstavljeni v kodi BCD. Popravek se izvaja na standarden način.

Skupina za logično poučevanje(Tabela A2.3 ) vsebuje tri tipične operacije: ANL - logični IN, ORL - logični ALI, XRL - logični izključujoči ALI. Izvor prvega operanda

je bodisi akumulator A bodisi neposredno naslovljiva pomnilniška celica. Drugi operand je določen z enim od štirih osnovnih načinov naslavljanja. Skupina vključuje tudi posamezne operacije nad vsebino akumulatorja: CLR - počisti, CPL - inverzije, pa tudi RL, RLC, RR in RRC - operacije cikličnih in razširjenih premikov v desno in levo. To vključuje tudi operacijo izmenjave tetrad v akumulatorju SWAP, ki jo lahko interpretiramo kot ciklični premik bajta za štiri bite.

Skupina navodil za delovanje bitov(tabela A2.6) vsebuje ko-

ukazi SETB - nastavite bit na 1, CLR - ponastavite bit na 0, CPL - obrnite bit, ANL in ORL - logični IN in logični ALI vsebine zastavice C in neposredno naslovljenega bita, MOV - posredovanje bitov.

IN Pri bitnih operacijah igra zastavica C vlogo Boolovega akumulatorja. Vsebina zastavice C ali neposredno naslovljivega bita območja BSEG se uporablja kot operanda. V operacijah ANL in ORL lahko uporabite vsebino neposredno naslovljenega bita (bit) ali inverzijo vsebine (/bit).

IN v to skupino sodijo tudi navodila za pogojni skok z relativno 8-bitni odmik rel. Pogojno razvejanje se lahko izvede, ko je bit nastavljen (ukaz JB) ali počiščen (ukaz JNB). Posebej velja izpostaviti navodilo JBC, ki ob nastavitvi bita implementira vejo in hkrati ponastavi bit na 0.

Skupina ukazov za prenos nadzora(Tabeli A2.4 in A2.5)

drži brezpogojna navodila za skok AJMP, LJMP, SJMP, JMP, pogojni skok JZ, JNZ, CJNE, klic ACALL, LCALL, vrnitev RET, RETI in posodobitev s pogojnim skokom DJNZ. Tu je vključen tudi prazen ukaz NOP.

IN Relativno naslavljanje se pogosto uporablja v ukazih za prenos nadzora, da se omogoči ustvarjanje premestljivih programskih modulov. Relativni naslov je 8-bitni odmik rel je predpisani bajt, ki zagotavlja prehod na (-128… +127) bajtov glede na trenutni položaj osebnega računalnika. Neposredni naslov addr16 ali posredni naslov @A+DPTR se lahko uporabi za skok na katero koli drugo točko v naslovnem prostoru 64 KB. V slednjem primeru se vsebina A interpretira kot celo število brez predznaka. Za združljivost z družino MCS-48 je uvedena različica kratkega neposrednega naslavljanja addr11 znotraj trenutne strani 2K.

Vse te vrste naslavljanja se uporabljajo v navodilih za skok. Klicni ukazi uporabljajo samo metode neposrednega naslova addr16 in addr11 na strani. Vsi pogojni ukazi uporabljajo samo relativno naslavljanje.

Ko mikrokrmilnik prepozna zahtevo za prekinitev, izda navodilo LCALL addr16, ki samodejno shrani povratni naslov na sklad. Informacije o stanju programa (vsebina registra PSW) se ne shranijo samodejno. pri čemer



Povezani članki: