Računalniki Windows internet

Mikrokrmilniki MCS-51: model programske opreme, struktura, ukazi. Mikrokrmilniki MCS-51: programski model, struktura, ukazi Mikrokrmilniki družine mcs 51

Osnova mikrokrmilnika (glej sliko 1) je 8-bitna aritmetično logična enota (ALU). Pomnilnik MK ima harvardsko arhitekturo, t.j. logično razdeljen: na programski pomnilnik - PP (notranji ali zunanji), ki ga naslavlja 16-bitni števec ukazov (SC) in podatkovni pomnilnik - notranji (Rezident data memory - RPD) 128 (ali 256) bajtov, kot tudi zunanji (zunanji pomnilnik podatkovni pomnilnik – VPD) do 64 KB. Fizično je programski pomnilnik implementiran na ROM (samo za branje), podatkovni pomnilnik pa na RAM (podatke je mogoče zapisovati in brati).

Sprejem in dostava zunanjih signalov se izvaja preko 4 osembitnih 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. Vrata 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 ukazni register (RK) prejme kodo ukaza, ki se izvaja; to kodo dekodira krmilno vezje, ki generira krmilne signale (glej sliko 1).

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


Rezidenčni podatkovni pomnilnik (RDD) v prvih modelih mikrokrmilnikov družine MCS-51 je imel kapaciteto 128 bajtov. Spodnjih 32 bajtov RPD so tudi registri splošnega namena - RON (4 banke po 8 RON). Program se lahko prijavi na enega od 8 RON aktivne banke. Izbira aktivne banke RON se izvede s programiranjem dveh bitov v registru statusa procesorja - PSW.


Tabela 1 - Dodelitev zatičev MCS-51

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

Signal za ponastavitev (aktivna raven - visoka);

Signal RST se ponastavi: računalnik in večina registrov posebnih funkcij (SFR), ki onemogočajo vse prekinitve in časovnike; izbere RON Bank 0; zapiše "vse" 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 zapisovanju 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;

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

Strobe 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 sklep;
21..28 P2 8-bitna kvazi-dvosmerna V/I vrata; ali izhodni naslov A v načinu zunanjega pomnilnika (VPP ali VPD);
29 PME Strobo branja zunanjega programskega pomnilnika, ki se izda samo ob dostopu do zunanjega ROM-a;
30 ALE Zunanji pomnilniški naslov strobe (VPP ali VPD);
31 EA Če onemogočite RPP, raven "0" na tem vhodu preklopi MK na izbor ukazov samo z vzletno-pristajalne steze ;
39..32 P0 8-bitna dvosmerna V/I vrata; pri dostopu do zunanjega pomnilnika izda naslove A (ki jih signal ALE zapiše v zunanji register), 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, kar uniči tam shranjene informacije;
40 Ucc Izhodna napajalna napetost

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

Dostop do RPD je možen z uporabo posrednega ali neposrednega bajtnega naslavljanja (neposredno bajtno naslavljanje omogoča dostop le do prvih 128 bajtov RPD).

Razširjeno območje RPD (za mikrokrmilnike družine MCS-52 in naslednje družine) od naslova 128 (80h) do 255 (FFh) je mogoče naslavljati samo z uporabo metode posrednega naslavljanja.

Tabela 2 - Bločni registri posebnih funkcij (s f r)

Mnemo koda ime
0E0h *ACC baterija
0F0h *B Registrirajte razširjevalnik baterije
0D0h *PSW Beseda stanja procesorja
0B0h *P3 Pristanišče 3
0A0h *P2 Pristanišče 2
90h * P1 Pristanišče 1
80h *P0 Vrata 0
0B8h * IP Register prednostnih prekinitev
0A8h *IE Register prekinitvene maske
99h SBUF Medpomnilnik serijskega oddajnika
98h * SCON Nadzorni/statusni register serijskih vrat
89h TMOD Register načina časovnika/števca
88h * TCON Register časovnika/števec nadzora/status
8Dh TH1 Časovnik 1 (visoki bajt)
8 bh 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 za nadzor 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 izvedbe takega ukaza 1 μs. Preostali ukazi se izvajajo v 2 strojnih ciklih, t.j. za 2 ms. Samo ukazi množenja (MUL) in deljenja (DIV) se izvajajo v 4 strojnih ciklih.

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

3. METODE (METODE) NASLOVANJA MCS–51

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

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

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

4 DIRECT BYTE ADDRESSING – (dir) – uporablja se za dostop do celic RPD (naslovi 00h…7Fh) in registrov posebnih funkcij SFR (naslovi 80h…0FFh);

5 DIRECT BIT ADDRESSING - (bit) - se uporablja za naslavljanje ločeno naslovljivih 128 bitov, ki se nahajajo v celicah RPD na naslovih 20H ... 2FH in za ločeno naslovljive bite posebnih funkcijskih registrov (glej tabelo 3 in model programa);

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

7 IMPLICITNO (Vgrajeno) NASLOVANJE - koda navodil vsebuje implicitno (privzeto) sklicevanje na enega od operandov (najpogosteje na Akumulator).

4. FORMAT BESEDE STANJA PROCESORJA (PSW).

C - Zastavica za prenašanje (CARY) ali izposojanje, deluje tudi kot "boolov akumulator" v navodilih z bitnim upravljanjem;

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

F0 - uporabniška zastavica - nastavi, ponastavi in ​​preveri s programsko opremo;

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

RS1,RS0 – Izbira banke registracije:

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

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

P - zastavica parnosti - je dodatek števila posameznih bitov v akumulatorju k sodim številu; je sestavljen iz kombinacijskega vezja (programsko na voljo samo za branje).

Mikrokrmilniki MCS-51 nimajo zastave "Z". Toda v navodilih za pogojni skok (JZ, JNZ) kombinacijska vezje preveri trenutno (nič ali nenič) vsebino akumulatorja.

Vse ukaze za prenose in izmenjavo operandov je mogoče izvesti preko 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 je mogoče izvesti tudi s posredovanim bajtom (dir). Obstajajo celo prenosi med dir-to-dir (glej sliko 3).

Manjkajoče prenose iz RON v RON je mogoče izvesti kot prenose iz RON v posredovani bajtni dir (glede na to, da se RON-ji nahajajo v začetnem območju rezidenčnega pomnilnika podatkov, katerega celice je mogoče nasloviti kot dir).

Ukazi za izmenjavo XCH vam omogočajo pošiljanje bajtov, ne da bi uničili oba operanda.

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 za izvedbo ukaza odštevanja brez izposoje potrebno najprej izvesti ukaz Clear Flag C (CLRC).

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

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

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

Ukaz DA A - decimalni popravek izvede dejanja nad vsebino Akumulatorja po dodajanju BCD številk v procesor (številke so bile dodane po zakonih šestnajstiške aritmetike) na naslednji način (glej primer):

· če je vsebina tetrade nižjega reda akumulatorja večja od 9 ali je nastavljena pomožna zastavica za prenašanje (AC = 1), se vsebini akumulatorja doda 6 (to je 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 višjemu redu akumulatorja doda številka 6.

Ukaz za decimalni popravek DA A se ne uporablja po ukazu inkrementa (INC), ker ukaz za inkrement ne vpliva (spreminja) na zastavice C in AC.

Logični ukazi:

Logično "IN" - ANL,

Logično "ALI" - ORL,

Logični ukaz XOR - XRL - se izvaja v Akumulatorju (kot tudi aritmetika), vendar je možno izvajati logične ukaze tudi v bajtu neposrednega naslova (dir). V tem primeru je lahko drugi operand:

v bateriji oz

Neposredni operand v navodilu.

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

Arhitekturo družine MCS-51 v veliki meri določa njen namen - zgradba kompakten in poceni digitalne naprave. Vse funkcije mikroračunalnika se izvajajo z enim mikrovezjem. Družina MCS-51 vključuje celo vrsto mikrovezij od najpreprostejših mikrokrmilnikov do precej zapletenih. Mikrokrmilniki družine MCS-51 vam omogočajo izvajanje tako nalog krmiljenja različnih naprav kot izvajanja posameznih vozlišč analognega vezja. Vsa mikrovezja te družine delujejo z istim ukazni sistem MCS-51, se jih večina izvaja v istih primerih z ujemajoči se zatiči(številčenje nog za primer). To vam omogoča, da za razvito napravo uporabite čipe različnih podjetij - Maxim, Atmel, NXP itd. (catalog..php?page=components_list&id=39"> s.m. Iskanje po parametrih) brez spreminjanja sheme vezja naprave in programa.

Slika 1. Blok shema krmilnika I8751

Blok diagram krmilnika je prikazan na sliki 1 in je sestavljen iz naslednjih glavnih funkcionalnih enot: krmilne enote, aritmetično logične enote, enote časovnika/števca, serijskega vmesnika in prekinitvene enote, programskega števca, pomnilnika podatkov in programski pomnilnik. Dvostranska izmenjava se izvaja po interni 8-bitni podatkovni avtocesti.

Oglejmo si podrobneje namen vsakega bloka. Skoraj vsi predstavniki družine MCS-51 so zgrajeni po tej shemi.. Različna mikrovezja te družine se razlikujejo le po registrih za posebne namene (vključno s številom vrat). Sistem upravljanja vseh krmilnikov družine MCS-51 vsebuje 111 osnovnih ukazov s formatom 1, 2 ali 3 bajtov in se ne spreminja pri prehodu z enega čipa na drugega. To zagotavlja odlično prenosljivost programov z enega čipa na drugega.

Enota za krmiljenje in sinhronizacijo

Krmilna in sinhronizacijska enota (Timing and Control) je zasnovana za generiranje sinhronizacijskih in krmilnih signalov, ki zagotavljajo koordinacijo skupnega delovanja enot OEVM v vseh dovoljenih načinih njenega delovanja. Krmilna enota vključuje:

  • - naprava za oblikovanje časovnih intervalov,
  • - V/I logika,
  • - register navodil,
  • - register upravljanja porabe električne energije,
  • - dekoder ukazov, računalniška krmilna logika.

Naprava za določanje časa je namenjen generiranju in izhodu internih sinhronizacijskih signalov faz, ciklov in ciklov. Število strojnih ciklov določa trajanje izvajanja ukaza. Skoraj vsi ukazi OEVM se izvajajo v enem ali dveh strojnih ciklih, razen navodil za množenje in deljenje, katerih trajanje je štiri strojne cikle. Označimo frekvenco glavnega oscilatorja skozi F g. Potem je trajanje strojnega cikla 12/F g oziroma 12 obdobij signala glavnega oscilatorja. Vhodno-izhodna logika je zasnovana za sprejemanje in izdajanje signalov, ki zagotavljajo izmenjavo informacij z zunanjimi napravami preko vhodnih/izhodnih vrat P0-P3.

Ukazni register je zasnovan za snemanje in shranjevanje 8-bitne operacijske kode ukaza, ki se izvaja. Operacijska koda se s pomočjo ukaznega dekoderja in računalniške krmilne logike pretvori v mikroprogram za izvajanje ukazov.

Register nadzora povpraševanja (PCON) vam omogoča, da ustavite delovanje mikrokrmilnika, da zmanjšate porabo energije in zmanjšate raven motenj mikrokrmilnika. Še večje zmanjšanje porabe energije in zmanjšanje hrupa je mogoče doseči z zaustavitvijo glavnega oscilatorja mikrokrmilnika. To je mogoče doseči s preklapljanjem bitov v registru za upravljanje zahteve PCON. Za možnost proizvodnje n-MOS (serija 1816 ali tuji čipi, ki nimajo črke "c" na sredini imena), register za krmiljenje moči PCON vsebuje samo en bit, ki nadzoruje hitrost prenosa serijskih vrat SMOD, in ni krmilnih bitov za porabo energije.

Aritmetično logična enota (ALU) je vzporedna osem-bitna naprava, ki zagotavlja aritmetične in logične operacije. ALU sestavljajo:

  • - akumulatorski registri, registri za začasno shranjevanje TMP1 in TMP2,
  • - ROM konstante,
  • - seštevek,
  • - dodatni register (register B),
  • - akumulator (ACC),
  • - register statusa programa (PSW).

Registriraj se baterija in hranilne registre- osem-bitni registri, zasnovani za sprejemanje in shranjevanje operandov za čas trajanja operacij na njih. Ti registri niso programsko dostopni.

ROM konstante zagotavlja razvoj popravljalne kode za dvojiško-decimalno predstavitev podatkov, kode maske za bitne operacije in konstantne kode.

Vzporedni 8-bitni seštevalec je kombinirano vezje z zaporednim prenosom, zasnovano za izvajanje aritmetičnih operacij seštevanja, odštevanja in logičnih operacij seštevanja, množenja, nesorazmerja in istovetnosti.

Registriraj se B- osembitni register, ki se uporablja med operacijami množenja in deljenja. Za druga navodila se lahko šteje za dodaten register beležnice.

baterija- osembitni register, zasnovan za sprejemanje in shranjevanje rezultata, pridobljenega pri izvajanju aritmetično-logičnih operacij ali operacij premikanja

Serijski vmesnik in prekinitveni blok (SIP) je zasnovan tako, da organizira vhod-izhod zaporednih informacijskih tokov in organizira sistem prekinitve programa. Blok vključuje:

  1. - medpomnilnik PIP,
  2. - krmilna logika,
  3. - kontrolni register,
  4. - medpomnilnik oddajnika,
  5. - predpomnilnik sprejemnika,
  6. - oddajnik za serijska vrata,
  7. - register prioritet prekinitve,
  8. - register omogočanja prekinitve,
  9. - logika za obdelavo prekinitvenih zastavic in shema generiranja vektorjev.

Programski števec je zasnovan tako, da oblikuje trenutni 16-bitni naslov notranjega programskega pomnilnika in 8/16-bitni naslov zunanjega programskega pomnilnika. Programski števec je sestavljen iz 16-bitnega računalniškega medpomnilnika, registra računalnika in vezja inkrementa (povečanje vsebine za 1).

Podatkovni pomnilnik (RAM) je namenjen za začasno shranjevanje informacij, ki se uporabljajo med izvajanjem programa.

Vrata P0, P1, P2, P3 so kvazi-dvosmerna vhodno-izhodna vrata in so zasnovana tako, da zagotavljajo izmenjavo informacij med OEVM in zunanjimi napravami, ki tvorijo 32 vhodno-izhodnih linij.

Naprava za časovnik Osnovni modeli družine imajo dva programabilna 16-bitna časovnika/števca (T/C0 in T/C1), ki se lahko uporabljata tako kot časovnika kot tudi kot zunanji števec dogodkov.

Register statusa programa (PSW) je zasnovan za shranjevanje informacij o stanju ALU med izvajanjem programa.

Programski pomnilnik (EPROM) zasnovan za shranjevanje programov in je pomnilnik samo za branje (ROM). Različna mikrovezja uporabljajo maskirane ROM-e, ki jih ultravijolično sevanje izbriše oz FLASH ROM.

Register podatkovnega kazalca (DPTR) je zasnovan za shranjevanje 16-bitnega naslova zunanjega podatkovnega pomnilnika ali programskega pomnilnika.

Kazalec sklada (SP) je osem-bitni register, ki je zasnovan za organiziranje posebnega podatkovnega pomnilniškega območja (sklad), v katerega je mogoče začasno shraniti katero koli pomnilniško celico.



Stanje prekinitvenega sistema se izprašuje na koncu vsakega strojnega cikla v fazi S5P2, z izjemo navodil RETI in vseh navodil, ki dostopajo do registrov IE in IP. Traja od 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 izvedena v strojni opremi, se izvede ukaz LCALL addr16, ki zagotavlja, da je trenutno stanje programskega števca shranjeno na sklad (shramba povratnega naslova), prehod na začetni naslov addr16 ustrezne storitvene procedure pa je izvajal. 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 preko univerzalnih vrat P0...P3 in primarne obdelave informacij. Posebna pozornost je namenjena operacijam z biti in prenosu nadzora po njihovi vrednosti. Navodila, ki izvajajo takšne operacije, tvorijo veliko skupino in skupaj z ustrezno strojno opremo tvorijo tako imenovani "Boolean procesor" kot del arhitekture MCS-51.

Ukazni sistem omogoča programerju zmožnost uporabe večine operacij s celotnim naborom metod naslavljanja in programsko dostopnimi viri strojne opreme.

2.7.1. Metode naslavljanja

Vsako navodilo pove procesorju operacijo, ki jo je treba izvesti, in metode za dostop do operandov. Koda ukaza ima več polj, ki imajo poseben funkcionalni namen. Najpomembnejša polja 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, v nekaterih primerih pa tudi podatke o naslovu naslednjega ukaza.

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

Metode naslavljanja so niz mehanizmov za dostop do operandov. Nekateri od njih 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 delovanje z vsemi viri, ki so na voljo v sistemu, vendar se ukaz izkaže za dolg,

vnos in izvedba porabita veliko časa. Nabor metod naslavljanja v vsakem nizu ukazov je kompromisna kombinacija znanih mehanizmov naslavljanja, ki jih izberejo 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 izrecnih navedb o naslovu operanda, ki sodeluje v operaciji, ali naslovu, na katerem je rezultat operacije, vendar je ta naslov impliciran. V ukazih je akumulator najpogosteje implicitno naslovljen kot cilj rezultata operacije. Na primer, rezultat dodajanja vsebine akumulatorja (A) in registra R1 trenutne zbirke podatkov z ukazom ADD A,R1 se zapiše v implicitno naslovljeni akumulator. Celotno navedeno navodilo zavzema en bajt v pomnilniku, medtem ko naslov samo akumulatorja (8Eh območja SFR) vsebuje en bajt.

Neposredno naslavljanje. V naslovnem polju ukaza vsebuje

Ne živi naslov operanda, ampak sam operand. 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 so podatki številka

(podatki = 00h...FFh).

Neposredno naslavljanje. Polje z naslovom navodil določa neposredni naslov lokacije podatkovnega pomnilnika, v kateri se nahaja operand ali kamor je zapisan. Na primer, ukaz MOV A,15h naloži vsebino celice DSEG na naslovu 15h v akumulator. Pomnilniška celica je neposredno naslovljiva, akumulator pa implicitno. Glede na lokacijo naslovljenega operanda je neposredno naslavljanje razdeljeno na registrsko neposredno naslavljanje in absolutno naslavljanje.

Neposredno registrsko naslavljanje. Polje ukaznega naslova vsebuje neposredni registrski naslov trenutne banke registrov. V vsaki banki je osem registrov, za njihovo 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 se prilegajo enemu bajtu. Takšno naslavljanje se imenuje kratko. Na primer MOV R4, R1.

Neposredno absolutno naslavljanje 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 bajt neposrednega naslova označen z besedo direct (direct) (direct = 00h ... FFh). Na primer, ukaz MOV 80h,R2 (ali MOV P0,R2) naloži vsebino registra R2 trenutne zbirke podatkov v vrata P0 (lokacija 80h SFR). Če sta oba operanda neposredno absolutno naslovljiva, potem ukaz postane tribajtni ukaz (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 @. lastnine

registra R0 in R1 (@Ri, i = 0,1) vsake banke registrov morata shraniti neposredni naslov. Na primer, če je vsebina registra R1 trenutne banke registrov 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 enobajtni, najpomembneje pa je, da je možno programsko spremeniti naslov s spreminjanjem vsebine registra R1.

Relativno naslavljanje. Pri relativnem naslavljanju se neposredni naslov oblikuje tako, da se osnovni naslov doda v naslovno polje ukaza. Vsebina programskega števca se uporablja kot osnovni naslov, naslovno polje ukaza pa je osembitni rel (relativni) odmik. Številko rel ukaz razlaga kot predpisano celo število, predstavljeno v komplementu dveh. Njegov razpon predstavitve je (-128...+127). Pri določanju števila rel ne pozabite, da programski števec kaže na naslednje ukaz, ki ga je treba izvesti. Relativno naslavljanje se pogosto uporablja v ukazih za prenos krmiljenja, kar omogoča ustvarjanje prestavljivih programskih modulov. Ukazi za prenos krmilnikov z relativnim naslavljanjem omogočajo razvejanje glede na trenutni položaj števca računalniških programov v obe smeri za (-128...+127) bajtov.

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

Osnovno naslavljanje predstavlja neke vrste relativno naslavljanje. Neposredni naslov v tem primeru nastane tako, da se vsebini osnovnega registra, ki shranjuje osnovni naslov, doda naslov, ki je določen v ukazu. Funkcijo osnovnega registra v družini MCS-51 izvaja register podatkovnega kazalca DPTR ali števec računalniških programov. 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 DPTR in A ali PC in A registrov.

Naslavljanje strani. Pri uporabi naslavljanja strani je pomnilnik razdeljen na več strani enake dolžine. Naslavljanje strani se izvaja z ločenim registrom strani, pomnilniške celice znotraj strani pa so naslovljene z naslovom, ki ga vsebuje navodilo. Neposredni naslov se oblikuje tako, da se združi (priloži) naslov strani in naslov pomnilniške celice znotraj strani. V ukazu MOVX A,@Ri vrata P2 (visoki bajt naslova) opravljajo funkcijo registra strani, 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 breznaslovnih ukazih in je kombinacija metod naslavljanja s samodejnim inkrementiranjem in samodekrementiranjem, ki deluje po principu LIFO (L ast I nput – F irst O izhod) – “zadnji vhod – prvi ven”. Sklad se nahaja v DSEG in raste v smeri naraščajočega naslova. Naslov vrha sklada je v kazalcu sklada SP. Ko se bajt potisne v sklad, se vsebina SP najprej poveča, nato pa se vpiše naslov. Ko berete bajt iz sklada, najprej preberite na naslovu, na katerega kaže SP, in nato zmanjšajte SP. Ko uporabljate sklad, ne pozabite, da globine sklada (največje število pomnilniških celic, ki jih zaseda sklad) ne nadzoruje strojna oprema. S prekomernim povečanjem sklada se lahko pomnilniške celice, ki temu niso namenjene, zavzamejo 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

Ukazni sistem je predstavljen v tabelah A2.1...A2.6 Dodatka 2. Tabele prikazujejo ime ukaza, njegovo mnemonično, binarno operacijsko kodo, učinek izvedenega ukaza na zastavice C, OV, AC. in P, dolžino ukaza v bajtih (B) in čas izvajanja v strojnih ciklih (C), kot tudi vsebino pretvorbe, ki jo izvede ukaz. Vejica se uporablja kot ločilo za naslovna polja v ukazih. Za izboljšanje berljivosti lahko za vejico dodate presledke, če to podpira uporabljeni sestavljalnik.

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

Ukazna skupina 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 zastavico parnosti P vsebine akumulatorja, navodila za neposredni naslov, katerih cilj je register PSW, pa spremenijo vse zastavice. Najbolj zmogljiv je ukaz MOV, ki uporablja štiri metode naslavljanja: neposredni register (A, Rn, DPTR), neposredni (neposreden), indirekten (@Ri), neposredni (#data, #data16). Drugi operand ukaza je izvor, prvi operand je cilj. Obstajajo trije načini naslavljanja (razen neposrednega) za določitev cilja in vsi štirje za določitev vira. Tribajtno neposredno, neposredno navodilo MOV zagotavlja prenos med poljubnima dvema pomnilnima 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.

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

Do zunanjega pomnilnika se dostopa z navodilom MOVX. Izmenjava poteka z bajti med akumulatorjem in zunanjim XSEG. XSEG celico je mogoče nasloviti na dva načina: posredno prek 16-bitnega kazalca DPTR in stransko posredno preko 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 XCH exchange zagotavlja dvosmerno izmenjavo bajtov, ukaz XCHD pa nižje tetrade bajtnih operandov.

Skupina navodil za aritmetične operacije(Tabela A2.2) so-

vsebuje Dodaj ADD, Prenesi Dodaj ADDC, Izposodi odštej SUBB, Povečaj in zmanjšaj za en INC in DEC, Packed BCD decimalni popravek, Pomnoži MUL in Razdeli DIV. Operacije se izvajajo nad celimi števili brez predznaka. Pri operacijah seštevanja in odštevanja je akumulator prvi operand in cilj rezultata. Za določitev 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 uporablja za vsebino 16-bitnega kazalca DPTR.

Operacije množenja celega števila in deljenja brez predznaka vključujejo akumulator in register B. Množenje pomnoži 8-bitno vrednost A z 8-bitno vrednostjo B in zapiše 16-bitni rezultat v par BA. V tem primeru je v registru B shranjen najvišji del izdelka. Oznaka OV je nastavljena, če je produkt 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 delitve z 0 nastavi Zastavica za prelivanje OV.

Ukaz za popravek decimalne decimalne vrednosti akumulatorja DA se postavi za ukazom seštevanja. Izrazi morajo biti predstavljeni v BCD kodi. Popravek se izvaja na standarden način.

Skupina logičnih navodil(Tabela A2.3 ) vsebuje tri tipične operacije: ANL - logično IN, ORL - logično ALI, XRL - logično izključujoče ALI. Vir prvega operanda

je bodisi akumulator A ali neposredno naslovljiva pomnilniška celica. Drugi operand je določen z eno od štirih osnovnih metod 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 podaljšanih premikov v desno in levo. Sem spada tudi operacija izmenjave tetrad v akumulatorju SWAP, ki jo lahko interpretiramo kot ciklični premik bajta za štiri bite.

Skupina navodil za delovanje z bitjem(tabela A2.6) vsebuje so-

ukazi SETB - nastavi bit na 1, CLR - ponastavi bit na 0, CPL - inverzija bitov, ANL in ORL - logično IN in logično OR vsebine zastave C in neposredno naslovljenega bita, MOV - posredovanje bitov.

V Pri bitnih operacijah igra zastava C vlogo logičnega akumulatorja. Vsebina zastave C ali neposredno naslovljivi bit območja BSEG se uporablja kot operand. V operacijah ANL in ORL lahko uporabite vsebino neposredno naslovljenega bita (bit) ali inverzno vsebino (/bit).

V v to skupino spadajo tudi navodila za pogojni skok z relativno 8-bitni odmik rel. Pogojno vejo se lahko izvede bodisi, ko je bit nastavljen (ukaz JB) ali počiščen (ukaz JNB). Posebej velja omeniti navodilo JBC, ki, ko je bit nastavljen, izvede vejo in hkrati ponastavi bit na 0.

Control Transfer Command Group(preglednici A2.4 in A2.5)

vsebuje 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. Tukaj je vključen tudi prazen ukaz NOP.

V Relativno naslavljanje se pogosto uporablja v ukazih za prenos nadzora, da se omogoči ustvarjanje prestavljivih 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 lahko uporabite za skok na katero koli drugo točko v 64 KB naslovnem prostoru. V slednjem primeru se vsebina A interpretira kot celo število brez predznaka. Za združljivost z družino MCS-48 je predstavljena 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 naslavljanja addr16 in addr11 na strani. Vsi pogojni ukazi uporabljajo samo relativno naslavljanje.

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

UDK 681.5, 681.325.5 (075.8)

BBK 32.973.202-018.2 in 73

Ščerbina A.N.Računalniški stroji, sistemi in omrežja. Mikrokrmilniki in mikroprocesorji v krmilnih sistemih: Cheb. dodatek / A.N. Shcherbina, P.A. Nechaev-SPb.: S politehnike. un-ta, 2012.-226 str.

Ustreza vsebini državnega izobrazbenega standarda za področja usposabljanja in specialnosti s področja vodenja tehničnih sistemov, elektroenergetike in elektrotehnike ter vsebini vzornega učnega načrta discipline »Računalniki, sistemi in omrežja«.

Temeljna vprašanja logične organizacije mikroprocesorskih sistemov so obravnavana na primeru osnovne arhitekture družine mikrokrmilnikov MCS-51 podjetja Intel. Opisana je tehnologija programiranja mikrokrmilnikov v jezikih Assembler in SI.

Uporaben je lahko za študente in učitelje višjih tehničnih ustanov, specialiste za avtomatizacijo tehnoloških procesov in proizvodne opreme ter za inženirje za načrtovanje mikroprocesorskih sistemov.

Ustreza tudi vsebini državnega izobraževalnega standarda disciplin "Mikrokrmilniki in mikroprocesorji v krmilnih sistemih" in "Elektronske naprave za avtomatizacijo" za dodiplomsko, inženirsko in magistrsko izobraževanje smeri 140400 "Elektroenergetika in elektrotehnika".

Objavljeno po sklepu uredniškega in založniškega sveta

Državna politehnična univerza v Sankt Peterburgu.

© Shcherbina A. N., Nechaev P. A., 2012

© Država Sankt Peterburg

Politehnična univerza, 2012

ISBN 978-5-7422-3553-8


Uvod.. 7

Poglavje 1. Arhitektura družine MCS51. 10

1.1 Splošne značilnosti 10

1.2 Blok diagram 11



1.3 8051 Dodelitev pinov mikrokrmilnika 15

1.4 Organizacija spomina 17

1.4.1 Programski pomnilnik (ROM) 18

1.4.2 Podatkovni pomnilnik (RAM) 19

1.4.3 Registri posebnih funkcij. dvajset

1.4.4 Register zastave (PSW) 23

1.5 Naprava za krmiljenje in sinhronizacijo 26

1.6 Organiziranje V/I vrat 27

1.6.1 Splošne informacije. 27

1.6.2 Alternativne funkcije. 27

1.7. Časovniki/števci mikrokrmilnikov družine 8051. 28

1.7.1. Struktura časovnikov-števcev. 28

1.7.2 Načini delovanja časovnikov-števcev. trideset

1.8. Serijska vrata 32

1.8.1. Struktura serijskih vrat. 32

1.8.2. Nadzorni/statusni register oddajnika SCON.. 34

1.8.3. Register krmiljenja moči PCON.. 36

1.9. Prekinitveni sistem 37

1.9.1. Struktura prekinitvenega sistema. 37

1.9.2 Izvajanje prekinitvene rutine. 40

2. poglavje Značilnosti mikrokrmilnika 80C51GB.. 42

2.1 Lastnosti 42

2.2 V/I vrata P0-P5 43

2.2.1 Delovanje V/I vrat. 43

2.2.2 Pisanje v vrata.. 46

2.3 Značilnosti prekinitvenega sistema 8XC51GB.. 49

Omogoči/onemogoči prekinitve. 50

Prekinitev upravljanja prioritet. 51

zunanje prekinitve. 54

2.3. ADC vozlišče 56

2.4. Nadzornik strojne opreme 61

2.5. Zaznavanje okvare ure 63

2.6. Matrica programabilnih števcev RSA 64

2.6.1. Struktura PCA.. 64

2.6.2. Register načina števca PCA (CMOD) 66

2.6.3. Krmilni register PCA števca (CON) 67

2.6.4. Primerjaj/popravi module. 68

2.7. Izboljšana serijska vrata 76

2.8. Merilniki časa/števci 79

Dodelitev pinov za skupinske mikrokrmilnike 8XC51GB.. 86

Poglavje 3 Programiranje MK 8051GB.. 89

3.1. Model programske opreme 89

3.2 Vrste podatkov 93

3.3 Načini naslavljanja podatkov 93

3.4 Sistem ukazov 95

3.4.1 Splošne značilnosti. 95

3.4.2 Vrste ukazov. 96

3.4.3 Vrste operandov. 97

3.4.4 Ukazi za prenos podatkov mikrokrmilnika. 98

3.4.5 Aritmetična navodila 8051.101

3.4.6 8051 Logični ukazi MCU. 104

3.4.7 8051 Bit Operacijski ukazi 106

3.5 Programi za odpravljanje napak 111

Poglavje 4. Programski jezik ASM-51. 112

4.2 Pisanje besedila programa 113

4.3 Jezikovna abeceda. 114

4.4 Identifikatorji. 115

4.5 Številke 117

4.6 Direktivi 118

4.7 Implementacija podprogramov v ASM51 122

4.7.1 Struktura postopka podprograma v jeziku ASM51. 122

4.7.2 Posredovanje spremenljivk parametrov v podprogram. 123

4.7.3 Implementacija podprogramov-funkcij v jeziku ASM51. 123

4.7.4 Implementacija rutin za obdelavo prekinitev v jeziku ASM51. 124

4.8 Strukturirano programiranje v zbirnem jeziku. 125

4.9 Posebnosti prevajanja večmodulnih programov.. 126

4.10 Uporaba segmentov 128

4.10.1 Razdelitev pomnilnika MK na segmente .. 128

4.10.2 Absolutni segmenti pomnilnika. 129

4.10.2 Prestavljivi pomnilniški segmenti. 131

Poglavje 5. Programski jezik C-51. 134

5.1 Splošne značilnosti jezika 134

5.3 Struktura programov C-51 136

5.3. Elementi programskega jezika C-51 138

5.3.1. Simboli.. 138

5.3.2. Leksikalne enote, ločila in uporaba presledkov. 141

5.3.3 Identifikatorji.. 142

5.3.4 Ključne besede. 143

5.3.5 Konstante.. 143

5.4. Izrazi v jezikovnih izjavah 146

programiranje C-51 146

5.5. Prednostne naloge operacije 148

5.6. Stavki programskega jezika C-51 149

5.6.1. operaterji deklaracij. 150

5.6.2 Izvedljivi stavki.. 150

5.6.3 Operater dodelitve. 151

5.6.4 Pogojni stavek. 151

5.6.5 Strukturni operater (). 152

5.6.6 Stavek zanke for. 152

5.6.7 Stavek zanke s preverjanjem stanja do telesa zanke while. 153

5.6.8 Stavek zanke s preverjanjem stanja po telesu zanke do while. 154

5.6.9 Izjava break. 155

5.6.10 Izjava nadaljevanja. 155

5.6.11 Izjava za izbiro stikala. 155

5.6.12 Operater goto. 157

5.6.13 Operatorski izraz. 158

5.6.14 Povratni stavek iz vrnitve podprograma. 158

5.6.15 Prazen izpisek. 158

5.7. Deklaracija spremenljivk v programskem jeziku C-51. 159

5.7.1. Deklaracija spremenljivke. 159

5.7.3 Celoštevilski podatkovni tipi. 161

5.7.4 Številke s plavajočo vejico. 162

5.7.5 Spremenljivke oštevilčenega tipa. 162

5.7.6. Deklaracija nizov v programskem jeziku C-51. 164

5.7.7. Strukture.. 165

5.7.8. Združenja (mešanice) 166

5.8. Uporaba kazalcev v C-51 167

5.8.1. Razglasitev kazalcev. 167

5.8.2. Netipizirani kazalci. 168

5.8.3. Kazalniki, odvisni od pomnilnika. 169

5.9. Deklaracija novih vrst spremenljivk 169

5.10. Inicializacija podatkov 170

5.11. Uporaba podprogramov v programskem jeziku C-51. 170

5.11.1. Definicija podprogramov.. 171

5.11.2. Parametri podprograma .. 173

5.11.3. Vnaprejšnja deklaracija podprogramov.. 174

5.11.4 Klicanje podprogramov.. 176

5.11.5 Rekurzivni klic podprograma.. 176

5.11.6 Prekinitvene rutine. 177

5.11.7 Obseg spremenljivk in podprogramov.. 178

5.12. Večmodulni programi 179

Poglavje 6. Priprava programov v integriranem razvojnem okolju Keil μVision2. 182

6.1 Ustvarjanje projekta ASM-51 182

6.2 Primer izdelave projekta v jeziku C za krmilnik usposabljanja v Keil µVision2 IDE 188

Poglavje 7 Opis krmilnika učenja .. 199

7.1. Struktura krmilnika 199

7.2. Naslovni prostor 200

7.2.1. Dodelitev pomnilnika. 200

7.2.2 Zunanji pomnilnik. 201

7.2.3. Notranji pomnilnik podatkov. 202

7.3. Dodelitev V/I vrat 202

7.4. Serijska vrata……………………………………………203

7.5. Delo z LCD 205

7.6. Krmilne plošče……………………………………………………………213

PRILOGA P2 STRUKTURA POROČILA O LABORATORIJSKEM DELU……..217

Dodatek P3 Kode strojnih ukazov. 217

Literatura... 224


Uvod

Pri razvoju specialnosti, povezanih z avtomatizacijo tehnoloških procesov in industrij, je študij mikrokrmilnikov eden od pomembnih odsekov.

V svetu se nenehno razvija in pojavlja vedno več 16- in 32-bitnih mikrokrmilnikov in mikroprocesorjev, vendar največji delež svetovnega trga mikroprocesorjev še vedno ostajajo 8-bitne naprave. Po vseh napovedih analitičnih podjetij v bližnji prihodnosti se bo vodilni položaj 8-bitnih mikrokrmilnikov na svetovnem trgu nadaljeval.

Trenutno je med vsemi 8-bitnimi mikrokrmilniki družina MCS-51 nesporno vodilna po številu različic in številu podjetij, ki proizvajajo njegove modifikacije. Ime je dobil po prvem predstavniku te družine - mikrokrmilniku 8051. Uspešen nabor perifernih naprav, možnost fleksibilne izbire zunanjega ali notranjega programskega pomnilnika ter dostopna cena so zagotovili uspeh tega mikrokrmilnika na trgu.

Prednosti družine MCS-51:

arhitektura, ki je de facto standard;

Izjemna širina družine in raznolikost priložnosti;

Razpoložljivost visoko zmogljivih in razširjenih različic procesorjev;

veliko število prosto dostopnih razvojnih programov in strojne opreme;

enostavnost programiranja strojne opreme, vključno s programiranjem v vezju;

nizki stroški in razpoložljivost osnovnih čipov;

Razpoložljivost specializiranih različic krmilnikov za posebne pogoje uporabe

Razpoložljivost različic krmilnikov z zmanjšano stopnjo elektromagnetnih motenj;

· velika priljubljenost med razvijalci starejše generacije, tako v svetu kot v državah CIS;

Podpora arhitekturi s strani vodilnih izobraževalnih ustanov sveta.

In končno, glavna prednost: ko obvladate osnovni čip družine, je enostavno začeti delati s takšnimi računalniškimi "pošasti", kot so mikrokrmilniki Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

Družina MCS-51 vključuje celo vrsto mikrovezij od najpreprostejših mikrokrmilnikov do precej zapletenih. Do danes obstaja več kot 200 modifikacij mikrokrmilnikov družine 8051, ki jih proizvaja skoraj 20 podjetij. Vsako leto se pojavijo nove različice predstavnikov te družine.

Glavna področja razvoja so:

· povečanje hitrosti (povečanje taktne frekvence in obdelave arhitekture);

zmanjšanje napajalne napetosti in porabe energije;

· povečanje količine RAM-a in FLASH pomnilnika na čipu z možnostjo programiranja v vezju;

· uvedba kompleksnih naprav, kot so sistemi za krmiljenje pogonov, vmesniki CAN in USB itd. na periferijo mikrokrmilnika.

Mikrokrmilniki družine MCS-51 vam omogočajo izvajanje tako nalog krmiljenja različnih naprav kot izvajanja posameznih vozlišč analognega vezja. Vsa mikrovezja te družine delujejo z istim ukaznim sistemom. Večina jih je izvedena v istih ohišjih z enakim pinoutom (številčenje nog za ohišje). To omogoča uporabo čipov različnih proizvajalcev za razvito napravo brez spreminjanja sheme vezja naprave in programa.

Glavni proizvajalci sort 51. družine na svetu so Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems in številni drugi.

Značilnosti analogov mikrokrmilnikov družine MCS-51 (Intel 8XC51FA, 8XC51GB, 80C152) z naprednimi funkcijami so podane v tabeli. V 1.

Tabela B.1

Oven ROM SAR ADC WDT T/C Porojstvo. Kanali Posebnosti
Atmel: AT89C2051
- - - - UART Flash 2 Kb
AT89C4051 - - - - UART Flash 4 Kb
AT89S4D12 128 K - - - UART, SPI Flash 4 Kb
Polprevodnik DALLAS: DS5000FP
- - - + UART zagonski nalagalnik
DS5001FP - - - + UART zagonski nalagalnik
DS8xC520 16K - - + 2xUART 2DPTR
SIEMENS: C505C
16K - + + UART, CAN 8DPTR
C515C 64K - + + UART+SSC+CAN 4 PWM, 8 DPTR
Philips: *89C51RA+
- + - + UART 2 DPTR, 4. nivo prekinitev, izklop, Flash 8K
P51XAG1x 8K - - + 2 UART
Intel: 8xC51RA
8K - + + UART 4 stopnje IRQ, izklop
8XC196KC 64K 16K - + - UART 3 PWM
80C196KB 64K 8K - + - UART PWM

Poglavje 1 Družinska arhitektura MCS51

8-bitni mikrokrmilniki z enim čipom družine MCS-51 so zaradi svoje dobro zasnovane arhitekture pridobili veliko popularnost med razvijalci mikroprocesorskih krmilnih sistemov. Arhitektura mikrokrmilnika je niz notranjih in zunanjih programsko dostopnih virov strojne opreme in sistem ukazov. Arhitektura družine MCS-51 je v veliki meri vnaprej določena z njenim namenom - konstrukcijo kompaktnih in poceni digitalnih naprav. Mikrokrmilniki, ki opravljajo vse funkcije mikroračunalnika z uporabo enega samega mikrovezja, se imenujejo računalniki z enim čipom (OEVM).

Intel je izdal okoli 50 modelov, ki temeljijo na operacijskem jedru mikrokrmilnika Intel 8051. Hkrati so številna druga podjetja, kot so Atmel, Philips, začela s proizvodnjo svojih mikrokrmilnikov, razvitih v standardu MCS-51.

Splošne značilnosti

Glavne značilnosti družine:

· 8-bitna centralna procesna enota (CPU) osredotočena na nadzor izvršilnih naprav;

· CPE ima vgrajeno vezje 8-bitnega strojnega množenja in deljenja števil;

Prisotnost v nizu navodil velikega števila operacij za delo z neposredno naslovljivimi biti omogoča govor o procesorju za delo z bitnimi podatki (boolov procesor);

notranji (na čipu) programski pomnilnik maske ali reprogramabilnega tipa, ki ima prostornino od 4 do 32 Kb za različne kristale, v nekaterih različicah ga ni;

· najmanj 128 bajtov podatkovnega rezidenčnega RAM-a, ki se uporablja za organizacijo, register bank, sklad in shranjevanje uporabniških podatkov;

· najmanj 32 dvosmernih vmesniških linij (vrat), posamično konfiguriranih za vnos ali izhod informacij;

· dva 16-bitna večnamenska števca/časovnika, ki se uporabljata za štetje zunanjih dogodkov, organiziranje časovnih zamikov in taktiranje komunikacijskih vrat;

· dvosmerni dupleksni asinhroni oddajnik (UART), zasnovan za organizacijo komunikacijskih kanalov med mikrokrmilnikom in zunanjimi napravami s širokim razponom hitrosti prenosa informacij. Obstajajo sredstva za strojno-programsko integracijo mikrokrmilnikov v povezan sistem;

· dvostopenjski prednostni prekinitveni sistem, ki podpira vsaj 5 prekinitvenih vektorjev iz 4 notranjih in 2 zunanjih virov dogodkov;

vgrajen generator ure.

Strukturna shema

Blok diagram krmilnika je prikazan na sliki 1.1 in je sestavljen iz naslednjih glavnih funkcionalnih enot: krmilne enote, aritmetično logične enote, enote časovnika/števca, serijskega vmesnika in prekinitvene enote, programskega števca, pomnilnika podatkov in programski pomnilnik. Dvostranska izmenjava se izvaja po interni 8-bitni podatkovni avtocesti. Skoraj vsi predstavniki družine MCS-51 so zgrajeni po tej shemi. Različna mikrovezja te družine se razlikujejo le po registrih za posebne namene (vključno s številom vrat).

Enota za krmiljenje in sinhronizacijo (Timeing and Control)- zasnovan za ustvarjanje sinhronizacijskih in krmilnih signalov, ki zagotavljajo koordinacijo skupnega delovanja enot OEVM v vseh dovoljenih načinih njegovega delovanja. Krmilna enota vključuje:

naprava za oblikovanje časovnih intervalov;

vhodno-izhodna logika;

register navodil;

register upravljanja porabe električne energije;

dekoder ukazov, računalniška krmilna logika.

riž. 1.1. Strukturni diagram krmilnika I8051.

Naprava za določanje časa je namenjen generiranju in izhodu internih sinhronizacijskih signalov faz, ciklov in ciklov. Število strojnih ciklov določa trajanje izvajanja ukaza. Skoraj vsi ukazi OEVM se izvajajo v enem ali dveh strojnih ciklih, razen navodil za množenje in deljenje, katerih trajanje je štiri strojne cikle. Označimo frekvenco glavnega oscilatorja skozi F g. Trajanje strojnega cikla je 12/F g oziroma 12 obdobij signala glavnega oscilatorja. Vhodno-izhodna logika je zasnovana za sprejemanje in izdajanje signalov, ki zagotavljajo izmenjavo informacij z zunanjimi napravami preko vhodnih/izhodnih vrat P0-P3.

Ukazni register je zasnovan za snemanje in shranjevanje 8-bitne operacijske kode ukaza, ki se izvaja. Operacijska koda se s pomočjo ukaznega dekoderja in računalniške krmilne logike pretvori v mikroprogram za izvajanje ukazov.

Register nadzora povpraševanja (PCON) vam omogoča, da ustavite delovanje mikrokrmilnika, da zmanjšate porabo energije in zmanjšate raven motenj mikrokrmilnika. Še večje zmanjšanje porabe energije in zmanjšanje hrupa je mogoče doseči z zaustavitvijo glavnega oscilatorja mikrokrmilnika. To je mogoče doseči s preklapljanjem bitov v registru za upravljanje zahteve PCON. Za možnost proizvodnje n-MOS (serija 1816 ali tuji čipi, ki nimajo črke "c" na sredini imena), register za krmiljenje moči PCON vsebuje samo en bit, ki nadzoruje hitrost prenosa serijskih vrat SMOD, in ni krmilnih bitov za porabo energije.

Aritmetično logična enota (ALU) je vzporedna osem-bitna naprava, ki zagotavlja aritmetične in logične operacije. ALU sestavljajo:

registri akumulatorja, zadrževalni registri TMP1 in TMP2;

ROM konstante;

seštevek;

dodatni register (register B);

baterija (ACC);

register statusa programa (PSW).

Registriraj se akumulatorske in zadrževalne registre- osem-bitni registri, zasnovani za sprejemanje in shranjevanje operandov za čas trajanja operacij na njih. Ti registri niso programsko dostopni.

ROM konstante zagotavlja razvoj popravljalne kode za dvojiško-decimalno predstavitev podatkov, kode maske za bitne operacije in konstantne kode.

Vzporedni 8-bitni seštevalec je kombinirano vezje z zaporednim prenosom, zasnovano za izvajanje aritmetičnih operacij seštevanja, odštevanja in logičnih operacij seštevanja, množenja, neekvivalence in istovetnosti.

Registriraj se B- osembitni register, ki se uporablja med operacijami množenja in deljenja. Za druga navodila se lahko šteje za dodaten register beležnice.

baterija- osembitni register, zasnovan za sprejemanje in shranjevanje rezultata, pridobljenega pri izvajanju aritmetično-logičnih operacij ali operacij premikanja

Serijski vmesnik in prekinitveni blok (SIP) zasnovan za organizacijo vhoda - izhoda zaporednih informacijskih tokov in organizacijo sistema programske prekinitve. Blok vključuje:

pufer PIP;

krmilna logika;

kontrolni register;

medpomnilnik oddajnika;

medpomnilnik sprejemnika;

oddajnik za serijska vrata;

register prioritet prekinitve;

register omogočanja prekinitve;

logika obdelave zastave prekinitve in shema generiranja vektorjev.

Programski števec je zasnovan tako, da oblikuje trenutni 16-bitni naslov notranjega programskega pomnilnika in 8/16-bitni naslov zunanjega programskega pomnilnika. Programski števec je sestavljen iz 16-bitnega računalniškega medpomnilnika, registra računalnika in vezja inkrementa (povečanje vsebine za 1).

Podatkovni pomnilnik (RAM) je namenjen za začasno shranjevanje informacij, ki se uporabljajo med izvajanjem programa.

Vrata P0, P1, P2, P3 so kvazi-dvosmerna vhodno-izhodna vrata in so zasnovana tako, da zagotavljajo izmenjavo informacij med OEVM in zunanjimi napravami, ki tvorijo 32 vhodno-izhodnih linij.

Register statusa programa (PSW) je zasnovan za shranjevanje informacij o stanju ALU med izvajanjem programa.

Programski pomnilnik (EPROM) zasnovan za shranjevanje programov in je pomnilnik samo za branje (ROM). Različna mikrovezja uporabljajo maskirane, UV-izbrisljive ali FLASH ROM-e.

Register podatkovnega kazalca (DPTR) zasnovan za shranjevanje 16-bitnega naslova zunanjega pomnilnika podatkov.

Kazalec sklada (SP) je osem-bitni register, ki je zasnovan za organiziranje posebnega podatkovnega pomnilniškega območja (sklad), v katerega je mogoče začasno shraniti katero koli pomnilniško celico.

1.3 8051 Dodelitev pinov mikrokrmilnika(slika 1.2)

· U ss - potencial skupne žice ("zemlja");

U cc - glavna napajalna napetost +5 V;

· X1,X2 - zaključki za priključitev kvarčnega resonatorja;

· RST - vhod splošne ponastavitve mikrokrmilnika;

PSEN - dovoljenje za zunanji programski pomnilnik, ki se izda samo ob dostopu do zunanjega ROM-a;

· ALE - strobe naslova zunanjega pomnilnika;

· EA - onemogoči notranji programski pomnilnik; raven 0 na tem vhodu povzroči, da mikrokrmilnik izvaja program samo iz zunanjega ROM-a; ignoriranje notranjega (če slednje obstaja);

riž. 1.2. Dodelitev pinov 8051.

· P1 - osem-bitni kvazi-dvosmerni vhodni/izhodni port, vsak bit vrat se lahko programira tako za vnos kot izhod informacij, ne glede na status drugih bitov;

· P2 - osem-bitna kvazi-dvosmerna vrata, podobna P1, pini tega vratu se uporabljajo za izdajo naslovne informacije pri dostopu do zunanjega programskega ali podatkovnega pomnilnika (če se uporablja 16-bitno naslavljanje slednjega). Poleg tega se zatiči vrat uporabljajo pri programiranju za vnos bitov višjega reda v mikrokrmilnik;

R3 - osem-bitna kvazi-dvosmerna vrata, podobna P1, zatiči tega vrat lahko izvajajo številne alternativne funkcije, ki se uporabljajo pri delovanju časovnikov, serijskih V/I vrat, prekinitvenega krmilnika in zunanjega programa in podatkovni pomnilnik;

· P0 - multipleksirana osem-bitna dvosmerna vhodno-izhodna vrata informacij, skozi ta vrata se ob različnih časih oddaja nizek bajt naslova in podatkov.

Organizacija spomina

Celotna serija MCS-51 ima harvardsko arhitekturo, torej ločene naslovne prostore programskega in podatkovnega pomnilnika. Struktura pomnilnika je prikazana na sl. 1.3.

Količina notranjega (rezidenčnega) programskega pomnilnika (ROM, EPROM ali OTP ROM), ki se nahaja na čipu, je odvisno od vrste mikrovezja lahko 0 (brez ROM), 4K (osnovni čip), 8K, 16K ali 32K. Po potrebi lahko uporabnik razširi pomnilnik programa z namestitvijo zunanjega ROM-a. Dostop do notranjega ali zunanjega ROM-a je določen z vrednostjo signala na pinu EA (External Access):

EA=V cc (napajalna napetost) - dostop do notranjega ROM-a;

EA=V ss (potencial ozemljitve) - dostop do zunanjega ROM-a.

Za čipe brez ROM-a mora biti zatič EA trajno povezan z V ss.

riž. 1.3. Organizacija pomnilnika družine MCS-51

Zunanji ROM bralni strobe - (Program Store Enable) se ustvari pri dostopu do zunanjega programskega pomnilnika in je neaktiven med dostopom do ROM-a, ki se nahaja na čipu. Nizko naslovno območje programskega pomnilnika uporablja prekinitveni sistem. Arhitektura osnovnega čipa 8051 podpira pet virov prekinitve:

dve zunanji prekinitvi;

dve prekinitvi iz časovnikov;

prekine iz serijskih vrat.

Na sl. 1.4 prikazuje zemljevid spodnjega območja programskega pomnilnika.

riž. 1.4. Zemljevid spodnjega območja programskega pomnilnika

Programski pomnilnik (ROM)

Za mikrokrmilnike družine 8051 sta programski pomnilnik in podatkovni pomnilnik neodvisni in neodvisni napravi, ki jih naslavljajo različni ukazi in krmilni signali.

Količina vgrajenega programskega pomnilnika, ki se nahaja na čipu mikrokrmilnika 8051, je 4 KB (v družini do 32). Pri dostopu do zunanjega programskega pomnilnika vsi mikrokrmilniki 8051 vedno uporabljajo 16-bitni naslov, ki jim omogoča dostop do 64 KB ROM-a. Mikrokrmilnik dostopa do programskega pomnilnika pri branju opkode in operandov (z uporabo računalniškega programskega števca), kot tudi pri izvajanju navodil za kopiranje bajta iz programskega pomnilnika v akumulator. Pri izvajanju ukazov za kopiranje podatkov se lahko naslavljanje celice programskega pomnilnika, iz katere se berejo podatki, izvede tako z uporabo osebnega števca kot posebnega dvobajtnega registra kazalca podatkov DPTR.

Podatkovni pomnilnik (RAM)

Količina podatkovnega pomnilnika na čipu je 128 bajtov. Zunanji podatkovni pomnilnik je lahko do 64 KB. Prvih 32 bajtov je organiziranih v štiri banke splošnih registrov, ki so označene kot banka 0 - banka 3. Vsaka od njih je sestavljena iz osmih registrov R0-R7. Program je v vsakem trenutku na voljo z registrskim naslavljanjem le ena banka registrov, katerih število je v tretjem in četrtem bitu statusne besede programa PSW.

8051 Naslovi bitov mikrokrmilnika

Tabela 1.1

Bajtni naslov (šestnajstiški) Bitni naslovi po bitih
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
20h

Preostali naslovni prostor lahko razvijalec konfigurira po lastni presoji: lahko sprejme področja sklada, sistema in uporabniških podatkov. Do podatkovnih pomnilniških celic je mogoče dostopati na dva načina. Prvi način je neposredno naslavljanje pomnilniške celice. V tem primeru je naslov celice operand ustreznega ukaza. Druga metoda je posredno naslavljanje z uporabo kazalnih registrov R0 ali R1: pred izvedbo ustreznega ukaza mora eden od njih vsebovati naslov celice, do katere je treba dostopati.

Za dostop do zunanjega pomnilnika podatkov se uporablja samo posredno naslavljanje z uporabo registrov R0 in R1 ali z uporabo 16-bitnega kazalnega registra DPTR.

Del podatkovnega pomnilnika je bitno območje, ki ima možnost uporabe posebnih bitnih ukazov za naslavljanje vsake števke pomnilniških celic. Naslov neposredno naslovljivih bitov lahko zapišemo tudi v obliki (ByteAddress).(Bit). Ustreznost med tema dvema načinoma naslavljanja je mogoče določiti iz tabele. 1.1.

Ministrstvo za splošno in poklicno izobraževanje Ruske federacije Novosibirska državna tehnična univerza V.N. Veprik, V.A. Afanasiev, A.I. Druzhinin, A.A. Zemskov, A.R. Isaev, O.V. Malyavko MIKROKRMILNIKI DRUŽINE MCS-51 Učbenik o predmetih "Mikroprocesorski sistemi" in "Oblikovanje mikroprocesorskih sistemov" za študente višjih letnikov Fakultete za avtomatizacijo in računalništvo vseh oblik izobraževanja Novosibirsk 1997 V.N. Veprik, V.A. Afanasiev, A.I. Druzhinin, A.A. Zemskov, A.R. Isaev, O.V. Malyavko. Mikrokrmilniki družine MCS-51: Vadnica. - Novosibirsk. Učbenik, ki vam ga predstavljamo, vsebuje splošen opis arhitekture, funkcionalnosti in ukaznega sistema družine mikrokrmilnikov z enim čipom (Embedded Microcontrollers) MCS-51, ki jih proizvaja INTEL. V drugem delu priročnika je opisan izobraževalni mikroprocesorski krmilnik UMPC-51, ki je študentom na voljo kot predmet študija pri izvajanju cikla laboratorijskega dela. Gradivo priročnika se lahko uporablja pri oblikovanju predmetov in diplom, uporabno pa je tudi za inženirje vezij, ki se ukvarjajo z razvojem in delovanjem elektronske opreme. Avtorji izražajo globoko hvaležnost CJSC "New Technologies", uradnemu distributerju INTEL, za zagotavljanje materialov, na podlagi katerih je bilo to delo opravljeno. Tabela 15, slika 25, seznam lit. 12 naslovov Ocenjevalci: E.D. Baran, G.G. Matuškin. Delo je bilo pripravljeno na Oddelku za računalniški inženiring Novosibirsk State © Technical University 2 UVOD. Družina 8-bitnih enočipnih mikrokrmilnikov MCS-51 se je na svetovnem trgu pojavila v zgodnjih osemdesetih letih. Prve modifikacije kristalov (približno 7) so bile narejene z uporabo visokokakovostne tehnologije n-MOS (HMOS) in so bili funkcionalno dokončani enočipni mikroračunalniki harvardske arhitekture, katerih eno glavnih načel je logična ločitev programa in podatkov. pomnilniški naslovni prostori. Z razvojem polprevodniške tehnologije so se naslednje različice mikrovezij MCS-51 začele izdelovati z uporabo naprednejše tehnologije CMOS (CHMOS) z nizko porabo (v aktivnem načinu se je poraba kristalov povečala na 1050 mA). Ukazni sistem MCS-51, ki je osredotočen na implementacijo različnih algoritmov digitalnega upravljanja, hkrati pa je ohranil nekaj zunanje podobnosti z ukaznim sistemom prejšnje družine MCS-48, se je kakovostno razširil, v njem so se pojavile temeljne novosti: bitno usmerjene operacije in bitna polja, naslovljena v podatkovnem pomnilniku, kar je omogočilo govoriti o izvedbi bitnega procesorja na čipu; implementirano izvajanje ukazov za množenje, deljenje in odštevanje; izboljšano delo s skladom; razširjena je skupina ukazov za prenos nadzora; Sistem ukazov je začel videti bolj simetričen, torej manj odvisen od prenosa podatkov skozi baterijo. Funkcionalnost vgrajenih zunanjih naprav je bila razširjena tudi z uvedbo: dveh 16-bitnih časovnih števcev; strojna serijska dupleksna vrata; dvostopenjski prekinitveni sistem; štiri 8-bitna V/I vrata. Temeljne spremembe v strukturi časovnega cikla procesorja so privedle do hitrejšega dela z zunanjim programskim in podatkovnim pomnilnikom ter odzivov na zunanje in notranje prekinitve. Skupna velikost naslovnega prostora zunanjega programskega in podatkovnega pomnilnika se je povečala na 128 KB. 16-bitni registri programskega števca (Program Counter) in podatkovnega kazalca (Data Pointer) so omogočili neposreden dostop do celotnega obsega naslovov, kar je razvijalcem omogočilo implementacijo algoritmov za hitro obdelavo velikih podatkovnih nizov. Vsa programsko dostopna vozlišča mikrokrmilnika so bila reducirana na posebno območje podatkovnega pomnilnika (Special Function Register), kar je omogočilo dostop do njih skoraj na enak način kot do običajnih celic rezidenčnega RAM-a. Pri kasnejših modifikacijah kristalov je izboljšava šla po poti povečevanja dodatne funkcionalnosti ob ohranjanju popolne združljivosti programske opreme s prejšnjimi različicami. Značilnosti najnovejših modifikacij mikrokrmilnikov družine MCS-51 so: popolnoma statična zasnova; 3- in 5-voltne različice kristalov; širok nabor vgrajenih zunanjih naprav; največja taktna frekvenca - 24 MHz; za posamezne skupine kristalov - 33 MHz. Trenutno MCS-51 vključuje približno 60 različic kristalov, poleg tega je na voljo in na voljo podrobna lastniška dokumentacija (žal še ni prevedena v ruščino). Za pripravo programske opreme za mikrokrmilnike MCS-51 se uporabljajo predvsem jeziki ASM-51, C, za katere obstajajo številni dokaj preizkušeni prevajalniki, knjižnice standardnih podprogramov in programskih emulatorjev, ki jih proizvajajo različna tuja in domača podjetja. . 3 Kljub zadostni "starini" družine (več kot 15 let) in pojavu na svetovnem trgu v zadnjih letih enočipnih mikrokrmilnikov višje zmogljivosti in izboljšane arhitekture - MCS-51, MCS-251, MCS-96, Krmilniki MCS-51 se bodo dolgo uporabljali v sorazmerno preprostih vgrajenih krmilnih sistemih. 4 1. INTEL SISTEM OZNAČAVANJA KOMPONENT IN FUNKCIONALNA SESTAVA DRUŽINE MCS-51 Za označevanje mikročipov INTEL uporablja sistem zapisov, ki ga sestavlja več polj: , avtomobilska različica za razširjeno temperaturno območje (-40 / +125 C) M (vojaško) , različica po vojaških standardih (-55 / +125 C) Q ali C (Commercial), "komercialno" temperaturno območje (0 / +70 C ) s (160 8) - urni dinamični termični trening; L ali E (Extended), "razširjeno" temperaturno območje (-40/+85 C) s (160 8) urnim dinamičnim toplotnim treningom; T (Extended), "razširjeno" temperaturno območje (-40/+85 C) brez toplotnega treninga; I (Industrijski), izvedba po industrijskih standardih. Drugo polje vsebuje eno- ali dvočrkovno predpono, ki označuje vrsto paketa mikrovezja (Tip paketa). Danes obstaja več deset različnih vrst paketov mikrovezij, zato bomo kot primer navedli le nekaj oznak: A Ceramic Pin Grid Array, (PGA); C Keramični dvojni linijski paket, (CDIP); K keramični Quad Flatpack paket, (QFP); KD Plastic Quad Flatpack Package, Fine Pitch, Die Down, (PQFP); KU Plastic Quad Flatpack Package, Fine Pitch, Die Up, (PQFP); N Plastični svinčeni nosilec čipov (PLCC); P Plastični dvojni linijski paket, (PDIP); SM enojni linijski brezsvinčni pomnilniški modul (SIMM); U Plastični dvojni linijski paket, skrčljiv potop (PDIPS); Z cikcak in-line paket, (ZIP). Tretje polje lahko vsebuje do 15 številskih in abecednih znakov, ki označujejo vrsto določene naprave, ki se nahaja na čipu. Četrto polje lahko vključuje do šest številskih in abecednih znakov, ki odražajo različne značilnosti in različice mikrovezij. Dodatne informacije o vrstah ohišja in njihovi zasnovi najdete v knjigi: Številka za naročilo embalaže 240800. Glede na opisane mikrokrmilnike družine MCS-51 je prvi znak tretjega polja tradicionalno (za Intel) enak "8". Drugi znak tretjega polja običajno označuje vrsto vgrajenega ROM-a: 0 programska maska ​​ROM; ne-ROM kristal (za poznejše različice kristalov); 1 maska ​​ROM programov (standardna ROM koda, vdelana programska oprema); 3 maska ​​ROM (za novejše različice kristalov), (prilagodljiva ROM koda); 7 UFPROM ali enkratni programirljivi ROM (EPROM ali OTP ROM); 8 EEPROM (Flash - pomnilnik na čipu) Nato lahko sledi črka, ki označuje tehnološke značilnosti izdelave: brez črke HMOS tehnologija, 5V napajanje; S tehnologijo CHMOS, 5V napajanje; l CHMOS tehnologija, 3V napajanje; 5 Naslednji znaki tretjega polja za mikrokrmilnike družine MCS-51 so številke (na primer 31,32,51,54,58,152) in od ene do štiri črke, ki odražajo funkcionalne lastnosti čipov (npr. Velikost ROM-a, posebnosti skupine čipov, prisotnost sistemske zaščite programskega pomnilnika pred nepooblaščenim dostopom, možnost uporabe naprednejšega programskega algoritma "Quick Pulse" in podobno). V originalni tehnični dokumentaciji podjetja Intel so vsi mikrokrmilniki družine MCS-51 združeni v skupine ("Linija izdelkov"), od katerih vsaka združuje najbližje različice kristalov glede na njihovo funkcionalnost in električne parametre. Ker se imena mikrovezij ene skupine nekoliko razlikujejo, se za označevanje vsake posamezne skupine uporablja posplošena simbolika, oblikovana iz označevanja posameznih mikrovezij, tako da se različni znaki zamenjajo z "X". Tako lahko ločimo naslednje skupine mikrokrmilnikov. 1. Skupina 8X5X (linija izdelkov 8051 in linija izdelkov 8052): 8031AN, 8051AN, 8751H, 8051AHP, 8751H-8, 8751VN, 8032AN, 8052AN, 8752VN. 2. Skupina 8ХС51 (Linija izdelkov 80С51): 80С31ВН, 80С51ВН, 87С51. 3. Skupina 8ХС5Х (Linija izdelkov 8ХС52/54/58): 80С32, 80С52, 87С52, 80С54, 87С54, 80С58, 87С58. 4. Skupina 8XC51FX (linija izdelkov 8XC51FA/FB/FC): 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. 5. Skupina 8XL5X (Linija izdelkov 8XL52/54/58): 80L52, 87L52, 80L54, 87L54, 80L58, 87L58. 6. Skupina 8XL51FX (linija izdelkov 8XL51FA/FB/FC): 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. 7. Skupina 8XC51RX (linija izdelkov 8XC51RA/RB/RC): 80C51RA, 83C51RA, 87C51RA, 83C51RB, 87C51RB, 83C51RC, 87C51RC. 8. Skupina 8XC51GB (linija izdelkov 8XC51GX): 80C51GB, 83C51GB, 87C51GB. 9. Skupina 8XC152JX (linija izdelkov 8XC152): 80C152JA, 83C152JA, 80C152JB, 80C152JC, 83C152JC, 80C152JD. 10. Skupina 8XC51SL (Linija izdelkov 8XC51SL): 80C51SL-BG, 81C51SL-BG, 83C51SL-BG, 80C51-AH, 81C51SL-AH, 83C51SL-AH, 87C51SL-AH, 81SLC5 81SLC1, 81SLC58 87C51SL-AL. V prvo skupino mikrokrmilnikov spadajo mlajši modeli družine, izdelani po tehnologiji n-MOS in niso priporočljivi za uporabo pri novostih, vse ostale skupine so izdelane po sodobni tehnologiji CMOS. Mikrovezja druge, tretje in četrte skupine so danes klasični predstavniki družine MCS-51. Peta in šesta skupina vključujeta 3-voltne različice kristalov (Low-Voltage). Kristali sedme skupine so opremljeni z razširjenim RAM-om (Expanded RAM), katerega prostornina je 512 bajtov. Mikrovezja osme, devete in desete skupine so mikrokrmilniki, specializirani za uporabo (Application Specific). Številne današnje aplikacije zahtevajo visoko zmogljive krmilne mikrokrmilnike, ki uporabljajo napredne zmožnosti naslavljanja, arhitekturo registrov, velik notranji RAM in skladovni prostor ter učinkovito podpirajo jezikovno programiranje na visoki ravni. Ti mikrokrmilniki vključujejo mikrokrmilnike New Architecture družin MCS-5 in MCS-251, ki jih je Intel predstavil leta 1995. Funkcionalna sestava in ključne značilnosti mikrokrmilnika MCS-51/MCS-251 so podane v prilogi. 6 2. GLAVNE ZNAČILNOSTI OSNOVNEGA MODELA DRUŽINE MIKROKONTROLERJEV MCS-51. Osnovni model družine mikrokrmilnikov MCS-51 in osnova za vse nadaljnje modifikacije je mikrokrmilnik I-8051. Njegove glavne značilnosti so naslednje: osem-bitni CPU, optimiziran za nadzorne funkcije; vgrajen generator ure; naslovni prostor programskega pomnilnika - 64 K; naslovni prostor podatkovnega pomnilnika - 64 K; notranji programski pomnilnik - 4 K; notranji pomnilnik podatkov - 128 bajtov; dodatne funkcije za izvajanje operacij Booleove algebre (bitne operacije); 32 dvosmernih in individualno naslovljivih V/I linij; 2 x 16-bitni večfunkcijski časovnik/števec; polno dupleksni asinhroni oddajnik; vektorski prekinitveni sistem z dvema prioritetnima nivojema in šestimi viri dogodkov. Blok diagram I-8051 je prikazan na sliki 1, razporeditev pinov mikrovezja je prikazana na sliki 2. Zunanje prekinitve Prekinitve 128 bajtov T/C 0 števec 4K ROM krmiljenje RAM T/C 1 vhodi CPU BUS 4 V/I Serijska krmilna vrata OSC Vrata P0 P1 P2 P3 T D R D Naslov/podatki Slika 1. Blok diagram I-8051 Celotna serija MCS-51 ima harvardsko arhitekturo, to je ločena programska in podatkovna pomnilniška naslovna prostora. Organizacija pomnilnika je prikazana na sliki 3. Količina notranjega (rezidenčnega) programskega pomnilnika (ROM, EPROM ali OTP ROM), ki se nahaja na čipu, je odvisno od vrste mikrovezja lahko 0 (brez ROM), 4K (osnovni čip), 8K, 16K ali 32K. Po potrebi lahko uporabnik razširi pomnilnik programa z namestitvijo zunanjega ROM-a. Dostop do notranjega ali zunanjega ROM-a je določen z vrednostjo signala na pinu EA (External Access): EA=Vcc (napajalna napetost) - dostop do notranjega ROM-a; EA=Vss (potencial ozemljitve) - dostop do zunanjega ROM-a. Za čipe brez ROM-a mora biti zatič EA trajno povezan z Vss. Zunanji ROM za branje - PS EN (Program Store Enable) se ustvari ob dostopu do zunanjega programskega pomnilnika in je neaktiven med dostopom do ROM-a na čipu. 7 Nizko naslovno območje programskega pomnilnika uporablja sistem prekinitev, arhitektura čipa 8051 zagotavlja podporo za pet virov prekinitev: dve zunanji prekinitve; dve prekinitvi iz časovnikov; prekine iz serijskih vrat. P1.0 1 40 Vcc P1.1 2 39 P0. 0 (AD0) P1.2 3 38 P0.1 (AD1) P1.3 4 37 P0.2 (AD2) P1.4 5 36 P0.3 (AD3) P1.5 6 35 P0.4 (AD4) P1. 6 7 34 P0.5 (AD5) P1.7 8 33 P0.6 (AD6) RESET 9 32 P0.7 (AD7) (RD) P3.0 10 31 EA/Vpp (TD) P3.1 11 30 ALE/ PROG (INT0) P3.2 12 29 PSEN (INT1) P3.3 13 28 P2.7 (A15) (T0) P3.4 14 27 P2.6 (A14) (T1) P3.5 15 26 P2.5 ( A13) (WR) P3.6 16 25 P2.4 (A12) (RD) P3.7 17 24 P2.3 (A11) XTAL2 18 23 P2.2 (A10) XTAL1 19 22 P2.1 (A9) Vss 20 21 P2.0 (A8) Sl.2. Dodelitev pinov I-8051 Programski pomnilnik (branje) Podatkovni pomnilnik (branje/pisanje) FFFFH Zunanji ROM FFFFH Zunanji @DPTR RD pomnilnik PSEN WR podatki @PC MOVC EA=0 Notranji pomnilnik @DPTR podatki @PC Zunanji notranji FFH zgornji 128 SFR MOVX ROM ROM 80H EA=0 0000H EA=1 spodnji 128 00H 0000H PSEN Sl.3. Organizacija pomnilnika družine MCS-51 8 Slika 4 prikazuje zemljevid spodnjega območja programskega pomnilnika. ROM Programski pomnilnik 0033H 002BH Serial Port 0023H Vector Timer1 001BH prekine EINT1 0013H Timer0 000BH EINT0 0003H Začetni naslov 0000H (Reset) Sl.4. Programski pomnilnik naslovi prekinitvenih vektorjev se nahajajo v intervalih po 8 bajtov: - 0003H zunanja prekinitev 0 (zunanja prekinitev 0) - izhod IN T 0 ; - 000BH prekinitev od časovnika 0 (z zastavico prelivanja časovnika - T F 0); - 0013H zunanja prekinitev 1 (zunanja prekinitev 1) - izhod IN T 1; - 001BH prekinitev iz časovnika 1 (z zastavico prelivanja časovnika - T F 1); - 0023H prekinitev serijskih vrat (Serial Interrupt = Prekinitev sprejemanja ali Prekinitev prenosa); itd. Podatkovni pomnilnik je ločen od programskega pomnilnika. Na tem področju je mogoče obravnavati 64K zunanjega RAM-a. Pri dostopu do zunanjega podatkovnega pomnilnika CPE mikrokrmilnika generira ustrezne signale branja (RD) ali zapisovanja (W R), interakcija z notranjim podatkovnim pomnilnikom se izvaja na ukazni ravni, medtem ko signala RD in W R ne generirata. Zunanji programski pomnilnik in zunanji podatkovni pomnilnik je mogoče kombinirati tako, da združite signale RD in PS EN na logičen način IN, da ustvarite stroboskop zunanjega pomnilnika (program/podatkov). Spodnjih 128 bajtov notranjega podatkovnega pomnilnika (spodnjih 128) je prisotnih na vseh čipih MCS-51 in je prikazano na sliki 5. Prvih 32 bajtov so 4 banke (registrska banka) po 8 registrov (R7...R0). Registra R0 in R1 v kateri koli banki se lahko uporabljata kot posredna naslovna registra. 16 bajtov, ki sledijo bankam registrov, tvorijo blok bitno naslovljivega prostora. Nabor navodil MCS-51 vsebuje široko paleto bitnih operacij, 128 bitov v tem bloku pa je neposredno naslovljivih in naslovi segajo od 00H do 7FH. Vse bajte v spodnji 128-bajtni polovici pomnilnika je mogoče nasloviti neposredno ali posredno. Zgornja 128-bajtna polovica pomnilnika RAM (zgornja 128) ni prisotna v čipu I-8051, je pa na voljo v 256-bajtnih različicah RAM-a čipov. V tem primeru je območje "Zgornje 128" na voljo samo s posrednim naslavljanjem. Območje SFR (Register posebnih funkcij) je na voljo samo z neposrednim naslavljanjem. Postavitev posebnih funkcijskih registrov v prostor SFR je prikazana na sl.6. Vključujejo registre vrat, časovnike, periferne kontrole itd. 9 7FH Povlecite območje, ki ga je mogoče vleči 30h (neposredno, posredna) 2FH 7FH 7HH 7DH 7CH 7BH 7AH 79H 78H 2H 77H 76H 75H 74H 73H 72H 71H 74H 73H 71H 71H 77H 71H 71H 71H 71H 0FH 0FH 0H 0DH 0CH 0FH 0H 0DH 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07H SP po PONASTAVI 00H RB0(R7+R0) Sl.5. Spodnjih 128 bajtov notranjega RAM-a. bitno naslavljanje 8 bajtov F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H A8H IE AFH A0H P2 A7H S 98H 98H S P2 A7H 98H 98H S P2 A7H 98H 98H S P2A7H DPH PCO 87H N 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F Sl.6. Postavitev posebnih funkcijskih registrov v prostor SFR. Za 16 naslovov v prostoru SFR je možno tako bajtno kot bitno naslavljanje. Za registre z bitnim naslovom se šestnajstiški naslov konča z "0H" ali "8H". Bitni naslovi v tem območju imajo vrednosti od 80H do FFH. Celotna serija kristalov družine MCS-51 ima osnovni komplet SFR, kot v čipu I-8051, ki se nahaja na istih naslovih. Vendar pa so v kristalih, ki predstavljajo nadaljnji razvoj družine v regiji SFR, dodani novi registri za razširitev 10