Mikrokontroleri obitelji mcs 51 imaju tipsku arhitekturu. Mikrokontroleri MCS–51. Blok dijagram, ALU, memorija podataka. Način čitanja porta
Intel je začetnik arhitekture obitelji MCS-51, koja je dobila ime po prvom predstavniku ove obitelji - mikrokontroleru 8051, izdanom 1980. godine na temelju n-MOS tehnologije. Sretan set periferni uređaji, mogućnost fleksibilnog odabira vanjske ili unutarnje programske memorije te pristupačna cijena osigurali su uspjeh ovog mikrokontrolera na tržištu. S tehnološke točke gledišta, mikrokontroler 8051 bio je vrlo složen proizvod za svoje vrijeme - u kristalu je korišteno 128 tisuća tranzistora, što je bilo 4 puta više od broja tranzistora u 16-bitnom mikroprocesoru 8086. Ovaj mikrokontroler ostaje jezgra obitelj MCS-51 do danas.
Glavni elementi osnovne arhitekture obitelji (arhitektura mikrokontrolera 8051) su:
8-bitni ALU;
4 banke registara, po 8 u svakoj;
Interna (rezidentna) programska memorija 4 KB, tipa ROM ili EPROM (8751);
Interna (rezidentna) podatkovna memorija 128 bajtova;
21 registar posebne funkcije;
Booleov procesor;
Dva 16-bitna mjerača vremena/brojača;
Kontrolor serijski priključak(UART);
Kontroler prekida s dvije razine prioriteta;
Četiri 8-bitna I/O porta, od kojih se dva koriste kao adresna/podatkovna sabirnica za pristup vanjskoj programskoj i podatkovnoj memoriji;
Ugrađen generator takta.
Zatim je pušten mikrokontroler 8052, koji je imao povećanu količinu rezidentne programske i podatkovne memorije, treći mjerač vremena i odgovarajuće prošireni kontroler prekida.
Sljedeći temeljni korak u razvoju MCS-51 bio je prijenos proizvodne tehnologije na CMOS (modifikacija 8xC51). To je omogućilo implementaciju načina rada Idl (mirovanje) i Power Down (smanjena potrošnja), koji omogućuju oštro smanjenje potrošnje energije kristala i otvorili su put za korištenje mikrokontrolera u aplikacijama koje ovise o energiji, na primjer, u samostalnim uređajima na baterije.
I posljednja važna faza u razvoju 8051 MK od strane Intela bilo je izdavanje mikrokontrolera 8xC51FA/FB/FC i 8xC51RA/RB/RC, koji se radi kratkoće često nazivaju 8xC51Fx i 8xC51Rx. Glavna značajka razlikovanja ove skupine kristala je prisutnost specijaliziranog mjerača vremena/brojača (SCA). Osim toga, 8xC51Rx mikrokontroleri dodatno sadrže watchdog timer (WDT). Pogledajmo detaljnije arhitekturu i funkcionalnost PCA.
RSA uključuje:
16-bitni mjerač vremena/brojač;
Pet 16-bitnih modula uzorka i usporedbe, svaki spojen na vlastitu liniju ulaza/izlaza mikrokontrolera.
Mjerač vremena/brojač opslužuje svih pet modula za uzorkovanje i usporedbu, koji se mogu programirati za obavljanje jedne od sljedećih funkcija:
16-bitno uzorkovanje vrijednosti timera na pozitivnom rubu vanjskog signala;
16-bitno uzorkovanje vrijednosti timera na negativnom rubu vanjskog signala;
16-bitno uzorkovanje vrijednosti timera na bilo kojem rubu vanjskog signala;
16-bitni programabilni mjerač vremena;
16-bitni izlazni uređaj velike brzine;
8-bitni PWM.
Sve gore navedene funkcije izvode se u PCA na hardverskoj razini i ne opterećuju središnji procesor. To vam omogućuje povećanje ukupne propusnosti, poboljšanje točnosti mjerenja i obrade signala te smanjenje vremena odgovora mikrokontrolera na vanjske događaje, što je posebno važno za sustave u stvarnom vremenu. PCA implementiran u 8xC51Fx (8xC51Rx) pokazao se tako
Oznaka |
Maks. frekvencija (MHz) |
ROM/EPROM (bajt) |
brojila | ||
Bila je sreća da je arhitektura ovih mikrokontrolera postala industrijski standard, a sam PCA je reproduciran mnogo puta u raznim modifikacijama MK 8051.
Neke karakteristike niza mikrokontrolera MCS-51 koje proizvodi Intel dane su u tablici 1.1.
U početku su najveća uska grla arhitekture MCS-51 bili 8-bitni ALU temeljen na baterijama i relativno sporo izvođenje instrukcija (najbrže instrukcije zahtijevaju 12 procesora za izvršenje).
Tablica 1.1
I/O |
ADC, ulazi x bita |
periferija, osobitosti |
U snaga (U) |
||
Opcija niskog napona | |||||
4 razine IRQ, clock out | |||||
4 razine IRQ, clock out | |||||
Niskonaponska verzija 8xC51Fx | |||||
4 razine IRQ, clock out | |||||
4 razine IRQ, clock out | |||||
4 razine IRQ, clock out | |||||
riods taktna frekvencija(frekvencija MK sinkronizacije)). To je ograničilo upotrebu mikrokontrolera iz obitelji u aplikacijama koje zahtijevaju povećanu brzinu i složene izračune (16- i 32-bitni). Pitanje temeljne modernizacije arhitekture MCS-51 postalo je hitno. Problem modernizacije bio je kompliciran činjenicom da je početkom 90-ih već stvoreno mnogo razvoja u području softvera i hardver obitelji MCS-51, pa je stoga jedan od glavnih zadataka projektiranja nove arhitekture bila implementacija hardverske i softverske kompatibilnosti s razvojem temeljenim na MCS-51.
Kako bi se riješio ovaj problem, stvorena je zajednička grupa stručnjaka iz Intela i Philipsa, ali kasnije su se putevi ove dvije tvrtke razišli. Kao rezultat toga, 1995. godine pojavile su se dvije značajno različite obitelji: MCS-251/151 od Intela i MCS-51XA od Philipsa (vidi pododjeljak 1.2).
Glavne karakteristike MCS-251 arhitekture:
24-bitni linearni adresni prostor, adresiranje do 16 MB memorije;
Arhitektura registara koja omogućuje pristup registrima kao bajtovima, riječima i dvostrukim riječima;
Način adresiranja stranica za ubrzavanje dohvaćanja uputa iz vanjske programske memorije;
Red instrukcija;
Prošireni skup instrukcija, uključujući 16-bitne aritmetičke i logičke operacije;
Prošireni adresni prostor steka (do 64 KB);
Izvođenje najviše brza naredba u 2 takta.
MCS-251 set instrukcija uključuje dva skupa instrukcija - prvi set je kopija MCS-51 skupa instrukcija, a drugi se sastoji od proširenih instrukcija koje koriste prednosti MCS-251 arhitekture. Prije korištenja mikrokontrolera potrebno ga je konfigurirati, tj. pomoću programatora "spalite" konfiguracijske bitove koji određuju koji će skup instrukcija postati aktivan nakon uključivanja napajanja. Ako instalirate prvi skup uputa, tada će u ovom slučaju obitelj MCS-251 biti kompatibilna s MCS-51 na razini binarnog koda. Ovaj način rada naziva se binarni način rada. Ako inicijalno instalirate skup proširenih uputa (izvorni način), tada će programi napisani za MCS-51 zahtijevati rekompilaciju korištenjem unakrsnih alata za MCS-251. Source Mode vam omogućuje korištenje MCS-251 arhitekture s maksimalnom učinkovitošću i postizanje najviših performansi.
Za korisnike usredotočene na korištenje MCS-251 mikrokontrolera kao mehaničke zamjene za MCS-51, Intel proizvodi MCS-151 mikrokontrolere koji su već programirani u stanju binarnog načina rada.
Neke karakteristike niza mikrokontrolera MCS-251/151 dane su u tablici 1.1.
Trenutno Intel, usmjeren na tržište Pentium procesora, ograničava proizvodnju MCS-51 kristala. Općenito, za određenog programera to može proći nezapaženo, osim ako ne koristi mikrokontrolere 8xC51GB i 80C152Jx, koji nemaju svoje točne analoge među proizvodima drugih tvrtki. Što se tiče svih ostalih mikrokontrolera iz obitelji MCS-51, svi su oni mnogo puta replicirani od strane drugih tvrtki.
Osnova mikrokontrolera (vidi sliku 1) je 8-bitna aritmetičko-logička jedinica (ALU). MK memorija ima harvardsku arhitekturu, tj. logički podijeljena na: programsku memoriju - PP (unutarnju ili vanjsku), adresiranu 16-bitnim programskim brojačem (SC) i podatkovnu memoriju - unutarnju (Resident Data Memory - RPD) 128 (ili 256) bajtova, kao i vanjsku (External Memorija podataka – VPD) do 64 KB. Fizički, programska memorija implementirana je u ROM (samo za čitanje), a podatkovna memorija implementirana je u RAM (podaci se mogu pisati i čitati).
Prijem i dostava vanjski signali provodi se preko 4 osmobitna porta P0..P3. Prilikom kontaktiranja vanjska memorija programa (VPP) ili podatkovne memorije (DVD), priključci P0 i P2 koriste se kao multipleksirana vanjska adresa/podatkovna sabirnica. P3 port linije također mogu obavljati alternativne funkcije (vidi tablicu 1).
16-bitni DPTR registar tvori VPD adresu ili osnovnu adresu programske memorije u naredbi konverzije akumulatora. DPTR registar se također može koristiti kao dva neovisna 8-bitna registra (DPL i DPH) za pohranu operanda.
8-bitni interni registar naredbi (RC) prima kod naredbe koja se izvršava; ovaj kod dešifrira upravljački krug, koji generira upravljačke signale (vidi sliku 1).
Pristup posebnim funkcijskim registrima - RSF (SFR - zaokruženi su na sl. 1 točkasta linija) moguće je samo korištenjem izravnog adresiranja bajtova u rasponu adresa od 128 (80h) i više.
Rezidentna podatkovna memorija (RDM) u prvim modelima mikrokontrolera obitelji MCS-51 imala je volumen od 128 bajtova. Donja 32 bajta RPD-a također su registri Opća namjena– RON (4 banke po 8 RONs svaka). Program može kontaktirati jedan od 8 RON-ova aktivne banke. Odabir aktivne RON banke provodi se programiranjem dva bita u statusnom registru procesora - PSW.
Tablica 1 – MCS–51 dodjele pinova
Pin br. | Oznaka | Svrha |
1..8 | P1 | 8-bitni kvazi-dvosmjerni I/O port |
9 | RST | Reset signal (aktivna razina – visoka); RST signal resetira: PC i većinu registara posebnih funkcija (SFR), onemogućujući sve prekide i mjerače vremena; odabire RON banku 0; zapisuje "sve jedinice" na portove P0_P3, pripremajući ih za unos; zapisuje kod 07H u pokazivač steka (SP); |
10..17 | 8-bitni kvazi-dvosmjerni I/O port; nakon snimanja u odgovarajuću kategoriju "1" - obavlja dodatne (alternativne) funkcije: Ulaz serijskog porta – RxD; Izlaz serijskog porta – TxD; Ulaz vanjskog prekida 0 – ~INT0; Ulaz vanjskog prekida 1 – ~INT1; Ulaz tajmera/brojača 0 – T0; Ulaz tajmera/brojača 1 – T1; Izlaz stroboskopa signal pri upisu u VPD – ~ WR; Izlaz stroboskopa signal pri očitavanju s VPD – ~ RD; |
|
18, 19 | X1, X2 | Pinovi za spajanje kvarcnog rezonatora ili LC kruga; |
20 | GND | Opći zaključak; |
21..28 | P2 | 8-bitni kvazi-dvosmjerni I/O port; ili adresni izlaz A u načinu rada s vanjskom memorijom (VPP ili VPD); |
29 | PME | Strobo za čitanje vanjske programske memorije, izdaje se samo prilikom pristupa vanjskom ROM-u; |
30 | PIVO | Eksterna memorijska adresa strob (VPP ili VPD); |
31 | EA | Onemogućavanje RPP-a, razina "0" na ovom ulazu prenosi MK na uzorkovanje naredbi samo sa piste ; |
39..32 | P0 | 8-bitni dvosmjerni I/O port; kada pristupa vanjskoj memoriji, izdaje adrese A (koje se zapisuju u vanjski registar pomoću ALE signala), a zatim razmjenjuje bajt sinkrono s ~PME signalom (za naredbe) ili ~WR,~RD (za podatke u VPD-u) , prilikom pristupa vanjskoj memoriji sve jedinice se zapisuju u registar porta P0, uništavajući tamo pohranjene informacije; |
40 | Ucc | Izlaz napona napajanja |
Prebacivanje RON banaka pojednostavljuje izvršavanje potprograma i rukovanje prekidima, jer nema potrebe slati sadržaj RON-ova glavnog programa na stog prilikom poziva podprograma (dovoljno je otići na drugu aktivnu banku RON-ova u podprogramu).
Pristup RPD-u moguć je korištenjem neizravnog ili izravnog adresiranja bajtova (izravno adresiranje bajtova omogućuje vam pristup samo prvih 128 bajtova RPD-a).
Prošireno RPD područje (za mikrokontrolere obitelji MCS-52 i sljedećih obitelji) od adrese 128 (80h) do 255 (FFh) može se adresirati samo korištenjem neizravne metode adresiranja.
Tablica 2 – Blok registara posebnih funkcija (s f r)
Mnemo kod | Ime | |
0E0h | * ACC | Baterija |
0F0h | *B | Registrirajte akumulatorski ekspander |
0D0h | *PSW | Riječ statusa procesora |
0B0h | *P3 | Priključak 3 |
0A0h | *P2 | Priključak 2 |
90h | *P1 | Priključak 1 |
80h | * P0 | Priključak 0 |
0B8h | *IP | Registar prioriteta prekida |
0A8h | *tj | Registar maske prekida |
99h | SBUF | Međuspremnik serijskog primopredajnika |
98h | * SCON | Kontrola serijskog porta/registar statusa |
89h | TMOD | Registar načina rada mjerača vremena/brojača |
88h | * TCON | Tajmeri/Brojači Kontrola/Registar statusa |
8Dh | TH1 | Mjerač vremena 1 (visoki bajt) |
8Bh | TL1 | Mjerač vremena 1 (manji bajt) |
8Ch | TH0 | Mjerač vremena 0 (visoki bajt) |
8Ah | TL0 | Mjerač vremena 0 (manji bajt) |
83h | DPH | Registar pokazivača podataka (DPTR) (visoki bajt) |
82h | DPL | Registar pokazivača podataka (DPTR) (niski bajt) |
81h | SP | Registar pokazivača steka |
87h | PCON | Registar kontrole potrošnje energije |
2. SOFTVERSKI MODEL MCS–51
MCS–51 VRSTE NAREDBI
Gotovo polovica instrukcija se izvršava u 1 strojnom ciklusu (MC). Uz frekvenciju kvarcnog oscilatora od 12 MHz, vrijeme izvršenja takve naredbe je 1 μs. Preostale instrukcije se izvršavaju u 2 strojna ciklusa, tj. za 2 μs. Samo se instrukcije množenja (MUL) i dijeljenja (DIV) izvode u 4 strojna ciklusa.
Tijekom jednog strojnog ciklusa dogode se dva pristupa programskoj memoriji (internoj ili vanjskoj) za čitanje dva bajta naredbe ili jedan pristup vanjskoj memoriji podataka (EDM).
3. METODE (NAČINI) ADRESIRANJA MCS–51
1. ADRESIRANJE REGISTRA – 8-bitni operand se nalazi u RON-u odabrane (aktivne) banke registara;
2 IZRAVNO ADRESIRANJE (označeno znakom – #) – operand se nalazi u drugom (a za 16-bitni operand u trećem) bajtu naredbe;
3 INDIREKTNO ADRESIRANJE (označeno znakom – @) – operand se nalazi u podatkovnoj memoriji (RDM ili VPD), a adresa memorijske ćelije sadržana je u jednom od RON-ova neizravnog adresiranja (R0 ili R1); u PUSH i POP naredbama adresa je sadržana u pokazivaču stoga SP; DPTR registar može sadržavati VPD adresu do 64K;
4 IZRAVNO ADRESIRANJE BAJTA – (dir) – koristi se za pristup RPD ćelijama (adrese 00h...7Fh) i posebnim funkcijskim registrima SFR (adrese 80h...0FFh);
5 ADRESIRANJE IZRAVNIH BITOVA – (bit) – koristi se za pristup zasebno adresabilnim 128 bitova koji se nalaze u RPD ćelijama na adresama 20H...2FH i zasebno adresabilnim bitovima posebnih funkcijskih registara (vidi tablicu 3 i model programa);
6 INDIREKTNO INDEKS ADRESIRANJE (označeno znakom – @) – pojednostavljuje pregled tablica u programskoj memoriji, PP adresa je određena zbrojem baznog registra (PC ili DPTR) i indeksnog registra (Akumulator);
7 IMPLICITNO (UGRAĐENO) ADRESIRANJE – kod naredbe sadrži implicitnu (standardno) referencu na jedan od operanda (najčešće na Akumulator).
4. FORMAT RIJEČI STANJA PROCESORA (PSW).
C – oznaka za prijenos (CARY) ili borrow, također obavlja funkcije “Boolean Accumulator” u naredbama koje rade s bitovima;
AC – pomoćna (dodatna) zastavica prijenosa – postavlja se na “1” ako je u naredbi zbrajanja (ADD, ADDC) došlo do prijenosa s niske tetrade na visoku tetradu (tj. s 3. bita na 4. bit);
F0 – korisnička zastavica – postavljena, resetirana i provjerena softverom;
RS1 | RS0 | Banka | Adresa (dir) |
0 | 0 | 0 | 00h..07h |
0 | 1 | 1 | 08h..0Fh |
1 | 0 | 2 | 10h..17h |
1 | 1 | 3 | 18h..1Fh |
RS1,RS0 – Odabir banke registra:
OV – Zastavica aritmetičkog prekoračenja; njegova vrijednost određena je operacijom "Isključivo ILI" ulaznog i izlaznog prijenosnog signala najvažnijeg bita ALU; jedna vrijednost ove zastavice označava da je rezultat aritmetičke operacije u kodu komplementa dvojke izvan dopuštenih granica: –128…+127; kada se izvrši operacija dijeljenja, OV flag se resetira, au slučaju dijeljenja s nulom, postavlja se; kod množenja se postavlja OV zastavica ako je rezultat veći od 255 (0FFH);
PSW bit – Rezerva, sadrži okidač, dostupan pisanjem ili čitanjem;
P – zastavica parnosti – je zbrajanje broja jediničnih bitova u akumulatoru parnom; generiran kombinacijskim sklopom (softver dostupan samo čitanjem).
Mikrokontroleri MCS-51 nemaju oznaku "Z". Ali u naredbama uvjetnog skoka (JZ, JNZ), trenutni (nula ili ne-nula) sadržaj akumulatora provjerava se kombinacijskim sklopom.
Sve naredbe za prijenos i razmjenu operanda mogu se izvršiti preko Akumulatora (vidi sliku 3). Štoviše, prijenosi iz/u vanjsku memoriju (programska memorija ili podatkovna memorija) mogu se izvršiti samo preko baterije.
Većina prijenosa također se može izvršiti putem izravnog bajta (dir). Postoje čak i dir-dir prijenosi (vidi sliku 3).
Prijenosi koji nedostaju iz RON u RON mogu se implementirati kao prijenosi iz RON u izravno adresiran bajt dir (uzimajući u obzir da se RON-ovi nalaze u početnom području rezidentne memorije podataka, čije se ćelije mogu adresirati kao dir).
Instrukcije XCH razmjene dopuštaju prijenos bajtova bez uništavanja oba operanda.
Aritmetičke instrukcije se izvršavaju samo u Akumulatoru. Stoga se prvi operand prvo mora staviti u akumulator, a zatim dodati ili oduzeti drugi operand. Rezultat se stavlja u akumulator.
SUBB naredba oduzimanja izvršava se samo s posudom (tj. Caryjeva zastavica se također oduzima od rezultata). Stoga, da biste izvršili naredbu oduzimanja bez posuđivanja, prvo morate izdati naredbu za brisanje zastavice C (CLRC).
Uputa za množenje jednobajtnih operanda - MULAB - postavlja rezultat od dva bajta (16 bita): niži bajt u akumulator, visoki bajt u B registar.
Rezultat izvršenja naredbe za dijeljenje jednobajtnih operanda - DIVAB - smješta se: kvocijent - akumulator, ostatak - u registar B.
INC aritmetička instrukcija dodaje jedan odabranom operandu. Aritmetička instrukcija DEC oduzima jedan od odabranog operanda. Naredba Decimal Accumulator Adjustment (DAA) pomaže vam dodati binarno kodirane decimalne (BCD) brojeve bez njihove pretvorbe u heksadecimalni format (hex format). Izvorni operandi moraju biti u BCD formatu, tj. Svaka tetrada od jednog bajta sadrži samo brojeve od 0 do 9 (ne mogu biti heksadecimalni brojevi: A, B, C, D, E, F). Stoga jedan bajt može sadržavati brojeve od 00 do 99 za upakirane BCD brojeve ili brojeve od 0 do 9 za nepakirane BCD brojeve.
Naredba DA A - decimalna korekcija izvodi akcije nad sadržajem Akumulatora nakon dodavanja BCD brojeva u procesoru (brojevi su dodani prema zakonima heksadecimalne aritmetike) na sljedeći način (vidi primjer):
· ako je sadržaj niže tetrade akumulatora veći od 9 ili je postavljena pomoćna zastavica prijenosa (AC = 1), tada se 6 dodaje sadržaju akumulatora (tj. nedostajućih šest znamenki u heksadecimalnom formatu);
· ako je nakon toga sadržaj najviše tetrade Akumulatora veći od 9 ili je postavljena zastavica C, tada se broj 6 dodaje najvišoj tetradi Akumulatora.
Naredba decimalne korekcije DA A ne koristi se nakon naredbe inkrementa (INC) jer naredba inkrementa ne utječe (mijenja) zastavice C i AC.
Logičke naredbe:
Logički "I" - ANL,
Logički "ILI" – ORL,
Logičke XOR naredbe - XRL - izvršavaju se u Akumulatoru (kao i aritmetičke), ali je moguće logičke naredbe izvršavati iu izravnom bajtu (dir). U ovom slučaju, drugi operand može biti:
U bateriji ili
Neposredni operand naredbe.
Naredbe rotacije (RR A, RL A) i naredbe rotacije preko CARY zastavice (RRC A, RLC A) ciklički pomiču sadržaj Akumulatora za 1 bit. Prijenosi bit operanda se provode samo preko C zastavice.
Arhitekturu obitelji MCS-51 uvelike određuje njegova namjena – konstrukcija kompaktan I jeftino digitalni uređaji. Sve funkcije mikroračunala implementirane su pomoću jednog mikro kruga. Obitelj MCS-51 uključuje cijela linija mikrosklopova od najjednostavnijih mikrokontrolera do prilično složenih. Mikrokontroleri obitelji MCS-51 omogućuju vam obavljanje zadataka upravljanja za različite uređaje i implementaciju pojedinačnih komponenti analognog kruga. Svi mikro krugovi ove obitelji rade s istim sustavom zapovijedanja, većina ih se provodi u identičnim slučajevima s odgovarajući pinout(numeriranje nogu za tijelo). To vam omogućuje korištenje mikro krugova za razvijeni uređaj različite tvrtke- proizvođači (kao što su Intel, Dallas, Atmel, Philips itd.) bez prerade shematski dijagram uređaja i programa.
Slika 1. Blok dijagram kontrolera K1830BE751
Blok dijagram regulatora prikazan je na slici 1. i sastoji se od sljedećih glavnih funkcionalnih jedinica: upravljačka jedinica, aritmetičko-logička jedinica, mjerač vremena/brojač jedinica, serijsko sučelje i jedinica prekida, programski brojač, podatkovna memorija i programska memorija. Dvosmjerna komunikacija provodi se pomoću interne 8-bitne sabirnice podataka. Pogledajmo pobliže svrhu svakog bloka. Gotovo svi članovi obitelji MCS-51 izgrađeni su prema ovoj shemi. Razni mikro krugovi ove obitelji razlikuju se samo u registrima posebne namjene (uključujući broj priključaka). Sustav zapovijedanja svi kontroleri obitelj MCS-51 sadrži 111 osnovne naredbe s formatom od 1, 2 ili 3 bajta i ne mijenja se pri prelasku s jednog čipa na drugi. To osigurava izvrsnu prenosivost programa s jednog čipa na drugi.
Jedinica za upravljanje i sinkronizaciju
Jedinica za mjerenje vremena i kontrolu dizajnirana je za generiranje sinkronizirajućih i upravljačkih signala koji osiguravaju koordinaciju suradnja OEVM blokira u svim dopuštenim načinima rada. Upravljačka jedinica uključuje:
- uređaj za formiranje vremenskih intervala,
- ulazno-izlazna logika,
- registar naredbi
- kontrolni registar potrošnja električne energije,
- dekoder naredbi, računalna upravljačka logika.
Uređaj za formiranje vremenskih intervala dizajniran za generiranje i izdavanje internih taktnih signala faza, taktova i ciklusa. Broj ciklusa stroja određuje trajanje instrukcija. Gotovo sve računalne naredbe izvršavaju se u jednom ili dva strojna ciklusa, osim naredbi množenja i dijeljenja, čije je trajanje izvršenja četiri strojna ciklusa. Označimo frekvenciju glavnog oscilatora s F g. Tada je trajanje strojnog ciklusa jednako 12/F g ili iznosi 12 perioda signala glavnog oscilatora. I/O logika dizajnirana je za primanje i izlazne signale koji osiguravaju razmjenu informacija sa vanjski uređaji kroz ulazno/izlazne portove P0-P3.
Registar naredbi dizajniran za snimanje i pohranjivanje 8-bitnog operacijskog koda naredbe koja se izvršava. Operacijski kod se uz pomoć naredbi i računalne logike upravljanja pretvara u mikroprogram za izvršavanje naredbe.
Registar kontrole potražnje (PCON) omogućuje vam zaustavljanje mikrokontrolera kako biste smanjili potrošnju energije i smanjili razinu smetnji mikrokontrolera. Još veće smanjenje potrošnje energije i smetnji može se postići zaustavljanjem glavnog oscilatora mikrokontrolera. To se može postići mijenjanjem bitova registra kontrole potrošnje PCON-a. Za opciju proizvodnje n-MOS (serija 1816 ili strani čipovi koji nemaju "c" u sredini svog naziva), registar kontrole potrošnje PCON-a sadrži samo jedan bit koji kontrolira brzinu prijenosa podataka serijskog porta SMOD, i nema kontrolnih bitova potrošnje energije.
Uz članak "Arhitektura mikrokontrolera MCS-51" pročitajte:
http://site/MCS51/tablms.php
http://site/MCS51/SysInstr.php
http://site/MCS51/port.php
PLAN PREDAVANJA
1. Uvod
2. Aritmetičke i logičke upute
3. Naredbe za prijenos podataka
4. Booleove operacije
5. Upute za skok
1. Uvod
Sustav zapovijedanja MCS-51 podržava jedan skup instrukcija, koje su dizajnirane za izvršavanje 8-bitnih algoritama upravljanja aktuatorom. Moguće je koristiti brze metode adresiranje unutarnjeg RAM-a, izvođenje bitnih operacija na malim strukturama podataka. Postoji opsežan sustav za adresiranje jednobitnih varijabli kao neovisnog tipa podataka, koji omogućuje korištenje pojedinačnih bitova u logičkim i kontrolnim naredbama Booleove algebre.
Načini adresiranja : skup naredbi MCS-51 podržava sljedeće načine adresiranja. Izravno adresiranje: Operand je određen 8-bitnom adresom u instrukciji. Izravno adresiranje koristi se samo za donju polovicu Unutarnja memorija podaci i registri SFR. Neizravno adresiranje: Instrukcija se obraća registru koji sadrži adresu operanda. Ovaj tip adresiranje se koristi za vanjski i unutarnji RAM. Registri se mogu koristiti za određivanje 8-bitnih adresa R0 I R1 odabrana banka registra ili pokazivač na stog SP. Za 16-bitno adresiranje koristi se samo registar pokazivača podataka DPTR.
Upute za registraciju : registri R0–R7 trenutna banka registra može se adresirati putem posebnih instrukcija koje sadrže 3-bitno polje koje pokazuje broj registra u samoj instrukciji. U ovom slučaju u naredbi nedostaje odgovarajuće polje adrese. Operacije s posebnim registrima: neke instrukcije koriste pojedinačne registre (na primjer, operacije akumulatora, DPTR, itd.). U ovom slučaju adresa operanda uopće nije navedena u naredbi. Unaprijed je određeno kodom operacije.
Neposredne konstante : konstanta se može nalaziti izravno u naredbi nakon operacijskog koda.
Indeksno adresiranje : Indeksno adresiranje može se koristiti samo za pristup programskoj memoriji i samo u načinu čitanja. U ovom načinu rada pregledavaju se tablice u programskoj memoriji. 16-bitni registar ( DPTR ili programski brojač) označava osnovnu adresu željene tablice, a akumulator označava ulaznu točku u nju.
Skup naredbiima 42 mnemotehničke naredbe za određivanje 33 funkcije ovog sustava. Sintaksa većine instrukcija asemblerskog jezika sastoji se od mnemonike funkcije iza koje slijede operandi koji označavaju metode adresiranja i tipove podataka. Različite vrste podaci ili načini adresiranja određeni su postavljenim operandima, a ne promjenama u mnemotehnici.
Sustav naredbi može se podijeliti u pet skupina: aritmetičke naredbe; logičke naredbe; naredbe za prijenos podataka; naredbe bitnog procesora; naredbe za grananje i prijenos kontrole. Oznake i simboli koji se koriste u sustavu zapovijedanja navedeni su u nastavku.
Stol. Oznake i simboli koji se koriste u sustavu zapovijedanja
Oznaka, simbol |
Svrha |
Baterija |
|
Registri trenutno odabrane banke registra |
|
Broj učitanog registra navedenog u naredbi |
|
direktno |
Izravno adresabilna 8-bitna adresa interne podatkovne ćelije, koja može biti interna podatkovna RAM ćelija (0-127) ili registar posebne funkcije SFR (128-255) |
Neizravno adresabilna 8-bitna interna podatkovna RAM ćelija |
|
8-bitni direktno podaci uključeni u kod operacije (OPC) |
|
podaciH |
Najvažniji bitovi (15–8) neposrednih 16-bitnih podataka |
podaciL |
Bitovi najmanje važnosti (7–0) neposrednih 16-bitnih podataka |
11-bitna odredišna adresa |
|
adresarL |
Najmanje važni bitovi odredišne adrese |
8-bitni bajt pomaka s predznakom |
|
Izravno adresabilni bit čija adresa sadrži COP koji se nalazi u internom podatkovnom RAM-u ili posebnom funkcijskom registru SFR |
|
a15, a14...a0 |
Bitovi odredišne adrese |
Sadržaj elementa X |
|
Sadržaj na adresi pohranjen u elementu X |
|
Bit M elementa X |
|
|
Operacije: |
Funkcijska mnemotehnika je jedinstveno povezana sa specifičnim kombinacijama metoda adresiranja i tipova podataka. Ukupno je u sustavu zapovijedanja moguće 111 takvih kombinacija.
2. Aritmetičke i logičke upute
Kako str primjer aritmetička instrukcija, operacija zbrajanja može se izvesti pomoću jedne od sljedećih naredbi.
DODATIA,7 F 16 – sadržaju registra A dodati broj 7 F 16 i pohraniti rezultat u registar A;
DODATIA,@ R0 – sadržaju registra A dodati broj čiju adresu (@ – komercijalni na ) pohranjuje se u registar R 0 (neizravno adresiranje), i pohraniti rezultat u registar A;
DODAJTE A,R7– dodati sadržaj registra A sadržaju registra R 7 i rezultat spremiti u registar A;
DODAJTE A, #127– dodati sadržaju registra A broj čija je adresa memorijske ćelije 127 ( # – simbol broja), te rezultat spremite u registar T- re A.
Sve aritmetičke instrukcije izvode se u jednom strojnom ciklusu s izuzetkom instrukcije INC DPTR(pomak pokazivača podataka DPTR do sljedećeg bajta), zahtijevajući dva strojna ciklusa, kao i operacije množenja i dijeljenja izvedene u 4 strojna ciklusa. Svaki bajt u internoj podatkovnoj memoriji može se povećavati i smanjivati bez upotrebe baterije.
upute MUL AB vrši množenje (množenje) podatka u akumulatoru podatkom u registru B, smještajući produkt u registre A (niža polovica) i B (visoka polovica).
upute DIV AB dijeli (dijeli) sadržaj akumulatora s vrijednošću u registru B, ostavljajući ostatak u B, a kvocijent u akumulatoru.
upute DA A namijenjen je za binarne decimalne aritmetičke operacije (aritmetičke operacije nad brojevima predstavljenim u binarnom decimalnom kodu). Ne pretvara binarni broj u BCD, ali daje točan rezultat samo pri zbrajanju dva binarna decimalna broja.
Primjer logična naredba: Logička operacija I može se izvesti pomoću jedne od sljedećih naredbi:
ANLA,7 F 16 – logičko množenje sadržaja registra A s brojem 7 F 16 a rezultat se pohranjuje u registar A;
ANLA,@ R1 – logičko množenje sadržaja registra A s brojem čija je adresa pohranjena u registru R 1 (neizravno adresiranje), i pohraniti rezultat u registar A;
ANL A,R6– logičko množenje sadržaja registra A sa sadržajem registra R 6, a rezultat spremiti u registar A;
ANL A,#53 – logičko množenje sadržaja registra A s brojem čija je adresa memorijske ćelije 53 16, a rezultat se pohranjuje u registar A.
Sve logičke operacije na sadržaju akumulatora izvode se u jednom strojnom ciklusu, a ostale u dva. Logičke operacije mogu se izvoditi na bilo kojem od nižih 128 bajtova unutarnje podatkovne memorije ili na bilo kojem registru SFR (registri posebne funkcije) u načinu izravnog adresiranja bez korištenja baterije.
Rotacijske operacije pomaka RL A, RLC A, itd. pomiču sadržaj akumulatora jedan bit udesno ili ulijevo. U slučaju lijevog cikličkog pomaka, bit najmanje važnosti se pomiče na poziciju najveće važnosti. U slučaju desnog cikličkog pomaka događa se suprotno.
Operacija ZAMJENA A mijenja niske i visoke tetrade u bateriji.
3. Naredbe za prijenos podataka
Tim MOV odredište,src omogućuje vam prijenos podataka između internih RAM ćelija ili područja registra posebnih funkcija SFR bez korištenja baterije. U ovom slučaju, rad s gornjom polovicom unutarnjeg RAM-a može se provoditi samo u načinu neizravnog adresiranja, a pristup registrima SFR– samo u načinu izravnog adresiranja.
U svim mikro krugovima MCS-51 Stog se postavlja izravno u rezidentnu podatkovnu memoriju i raste prema gore. upute GURNUTI prvo povećava vrijednost u registru pokazivača steka SP, a zatim zapisuje bajt podataka na stog. Timovi GURNUTI I POP koriste se samo u načinu izravnog adresiranja (pisanje ili vraćanje bajta), ali stog je uvijek dostupan kada se neizravno adresira preko registra SP. Dakle, stog također može koristiti gornjih 128 bajtova podatkovne memorije. Ista razmatranja isključuju mogućnost korištenja instrukcija steka za adresiranje registara SFR.
Upute za prijenos podataka uključuju 16-bitni prijenos MOV DPTR,#podaci16, koji se koristi za inicijalizaciju registra pokazivača podataka DPTR prilikom pregledavanja tablica u programskoj memoriji ili za pristup vanjskoj podatkovnoj memoriji.
Operacija XCH A,bajt koristi se za razmjenu podataka između akumulatora i adresiranog bajta. Tim XCHD A,@Ri sličan prethodnom, ali se izvodi samo za niže tetrade uključene u razmjenu operanda.
Za pristup vanjskoj podatkovnoj memoriji koristi se samo neizravno adresiranje. U slučaju jednobajtnih adresa koriste se registri R0 ili R1 banka tekućeg registra, a za 16-bitni – registar pokazivača podataka DPTR. Kod bilo koje metode pristupa vanjskoj podatkovnoj memoriji, baterija igra ulogu izvora ili primatelja informacija.
Za pristup tablicama koje se nalaze u programskoj memoriji koristite sljedeće naredbe:
MOVC A,@A+ DPTR ;
MOVC A,@A+ PC .
Sadržaj registra pokazivača podataka koristi se kao osnovna adresa tablice DPTR ili PC(brojač programa), a odstupanje se uzima iz A. Ove se upute koriste isključivo za čitanje podataka iz programske memorije, ali ne i za pisanje u nju.
4. Booleove operacije
Mikrosklopovi MCS-51 sadrže “Boolean” procesor. Unutarnji RAM ima 128 izravno adresabilnih bitova. Registarski prostor posebne funkcije SFR također može podržati do 128 bitnih polja. Bitne instrukcije izvode uvjetna grananja, prijenose, resetiranja, inverzije, I i ILI operacije. Svi navedeni bitovi dostupni su u načinu izravnog adresiranja.
Nosi malo CF u posebnom funkcijskom registru “riječ statusa programa” P.S.W." se koristi kao jednobitni akumulator za Boolean procesor.
5. Upute za skok
Adrese operacija skokova označene su u asemblerskom jeziku oznakom ili stvarnom vrijednošću u memorijskom prostoru programa. Uvjetne adrese grananja sastavljaju se u relativni pomak - bajt znaka koji se dodaje programskom brojaču PC ako je prijelazni uvjet ispunjen. Granice takvih prijelaza leže između minus 128 i 127 u odnosu na prvi bajt koji slijedi nakon instrukcije. U posebnom funkcijskom registru "Riječ statusa programa" P.S.W." ne postoji oznaka nule, dakle upute JZ I JNZ provjeriti uvjet "jednako nuli" kao testiranje podataka u akumulatoru.
Postoje tri vrste naredbi bezuvjetnog skoka: SJMP, LJMP I AJMP– odredišne adrese koje se razlikuju u formatu. upute SJMP kodira adresu kao relativni pomak i uzima dva bajta. Udaljenost skoka ograničena je na raspon od minus 128 do 127 bajtova u odnosu na instrukciju koja slijedi SJMP.
U uputama LJMP Odredišna adresa se koristi kao 16-bitna konstanta. Duljina naredbe je tri bajta. Odredišna adresa može se nalaziti bilo gdje u memoriji programa.
Tim AJMP koristi 11-bitnu konstantu adrese. Naredba se sastoji od dva bajta. Kada se ova instrukcija izvrši, nižih 11 bitova brojača adresa zamjenjuje se 11-bitnom adresom iz instrukcije. Pet najznačajnijih bitova programskog brojača PC ostaju nepromijenjeni. Dakle, prijelaz se može napraviti unutar bloka od 2K bajta u kojem se nalazi instrukcija koja slijedi nakon instrukcije AJMP.
Postoje dvije vrste poziva naredbi potprograma: LCALL I POZIV. upute LCALL koristi 16-bitnu adresu pozvane podrutine. U tom slučaju potprogram se može nalaziti bilo gdje u memoriji programa. upute POZIV koristi 11-bitnu adresu potprograma. U ovom slučaju, pozvana rutina mora se nalaziti u jednom bloku od 2K bajta sa sljedećim uputama POZIV. Obje verzije instrukcija guraju adresu sljedeće instrukcije na stog i učitavaju je u programski brojač PC odgovarajuću novu vrijednost.
Potprogram završava instrukcijom RET, koji vam omogućuje povratak na instrukciju nakon naredbe POZIV. Ova instrukcija izbacuje povratnu adresu sa stoga i učitava je u programski brojač. PC . upute RETI koristi se za povratak iz prekidnih rutina. Jedina razlika RETI iz RET je li to RETI obavještava sustav da je obrada prekida završena. Ako u trenutku izvršenja RETI nema drugih prekida, onda je identično RET.
upute DJNZ dizajniran za kontrolu ciklusa. Za izvođenje petlje N jednom trebate učitati bajt s vrijednošću u brojač N i naredbom zatvoriti tijelo petlje DJNZ, što označava početak ciklusa.
Tim CJNE uspoređuje svoja dva operanda kao nepredznačene cijele brojeve i skače na tamo navedenu adresu ako operandi koji se uspoređuju nisu jednaki. Ako je prvi operand manji od drugog, bit prijenosa CF je postavljen na "1".
Sve instrukcije u sastavljenom obliku zauzimaju 1, 2 ili 3 bajta.
- Aritmetičke naredbe;
- Logičke naredbe;
- Naredbe za prijenos podataka;
- Naredbe bit procesora;
- Naredbe za grananje i prijenos kontrole.
- Registarsko adresiranje
- Izravno adresiranje
- Registarsko-neizravno adresiranje
- Izravno adresiranje
- Neizravno adresiranje registara na temelju zbroja baznog i indeksnog registra
Oznaka, simbol | Svrha |
A | Baterija |
Rn | Registri trenutno odabrane banke registra |
r | Broj učitanog registra navedenog u naredbi |
direktno | Izravno adresabilna 8-bitna adresa interne podatkovne ćelije, koja može biti interna podatkovna RAM ćelija (0-127) ili SFR (128-255) |
@Rr | Neizravno adresabilna 8-bitna interna podatkovna RAM ćelija |
podaci8 | 8-bitni neposredni podaci koji idu u COP |
podaciH | Najvažniji bitovi (15-8) neposrednih 16-bitnih podataka |
podaciL | Bitovi najmanje važnosti (7-0) neposrednih 16-bitnih podataka |
adresa11 | 11-bitna odredišna adresa |
adresarL | Najmanje važni bitovi odredišne adrese |
disp8 | 8-bitni offset bajt s predznakom m |
malo | Bit koji se može izravno adresirati čija adresa sadrži COP koji se nalazi u internom podatkovnom RAM-u ili SFR-u |
a15, a14...a0 | Bitovi odredišne adrese |
(X) | Sadržaj elementa X |
((X)) | Sadržaj na adresi pohranjen u elementu X |
(X) [M] | Bit M elementa X |
+ - * / I ILI XOR /X | Operacije: zbrajanje oduzimanje množenje dijeljenje logičko množenje (operacija I) logičko zbrajanje (operacija ILI) zbrajanje modulo 2 (isključivo ILI) inverzija elementa X |
Funkcijska mnemotehnika je jedinstveno povezana sa specifičnim kombinacijama metoda adresiranja i tipova podataka. Ukupno je u sustavu zapovijedanja moguće 111 takvih kombinacija. Tablica prikazuje popis naredbi poredanih po abecedi.
Mnemotehnika | Funkcija | Zastave |
ACALL naredba | Apsolutni poziv potprograma | |
DODAJ naredbu<байт-источник> | Dodatak | AC, C, OV |
ADDC A naredba<байт-источник> | Dodavanje s prenošenjem | AC, C, OV |
Tim AJMP | Apsolutni prijelaz | |
Tim ANL<байт-назначения>, <байт-источникa> | Logički "I" | |
ANL C tim,<байт-источникa> | Logički "I" za bit varijable | |
Tim CJNE<байт-назначения>, <байт-источник>, <смещение> | Usporedi i skoči ako nije jednako | C |
CLR A naredba | Ponovno postavljanje baterije | |
CLR naredba | Reset bit | C, bit |
Tim CPL A | Inverzija ak umulya ora | |
CPL tim | Inverzija bitova | C, bit |
Tim DA A | Ispravak decimalnog akumulatora za poziciju | AC, C |
DEC tim<байт> | Smanjenje | |
Tim DIV AB | Podjela | C, OV |
Tim DJNZ<байт>, <смещение> | Smanjivanje i skok ako nije jednako nuli | |
Tim INC<байт> | Povećanje | |
Zapovjedništvo INC DPTR | Povećanje pokazivača podataka | |
Tim JB | Skoči ako je bit postavljen | |
Tim JBC-a | Skoči ako je bit postavljen i resetiraj taj bit | |
Tim JC | Prijelaz ako je prijenos postavljen | |
Naredba JMP @A+DPTR | Neizravni prijenos | |
Tim JNB | Skok ako bit nije postavljen | |
Tim JNC | Skok ako nosi nije postavljen | |
Tim JNZ | Skok ako sadržaj akumulatora nije nula | |
Ekipa JZ | Skoči ako je sadržaj akumulatora 0 | |
LCALL naredba | Dug poziv | |
Tim LJMP | Dugi prolaz | |
MOV naredba<байт-назначения>, <байт-источника> | Varijabla naprijed bajta | |
MOV naredba<бит-назначения>, <бит-источника> | Slanje podatkovnog bita | C |
Naredba MOV DPTR,#podaci16 | Učitajte pokazivač podataka sa 16-bitnom konstantom | |
MOVC naredba A,@A+( | Pošalji bajt iz memorije programa | |
MOVX tim<байт приемника>, <байт источника> | Pošalji podatke u vanjsku memoriju (iz vanjske memorije) | |
Tim MUL AB | Množenje | C, OV |
naredba NOP | Bez operacije | PC |
ORL tim<байт-назначения>, <байт-источникa> | Logički "ILI" za promjenjive bajtove | |
ORL C tim,<бит источникa> | Logički "ILI" za bit varijable | C |
POP naredba | Čitanje s hrpe | |
PUSH naredba | Zapisivanje na stog | |
naredba RET | Povratak iz potprograma | |
RETI tim | Povratak iz prekida | |
Tim RL A | Pomaknite sadržaj akumulatora ulijevo | |
Tim RLC A | Pomaknite sadržaj akumulatora ulijevo pomoću zastavice za prijenos | |
RR A naredba | Pomaknite sadržaj akumulatora udesno | |
RRC A tim | Pomaknite sadržaj akumulatora udesno pomoću zastavice za prijenos | C |
naredba SETB | Postavite bit | C |
Tim SJMP<метка> | Kratki prijelaz | |
Tim SUBB A,<байт источника> | Oduzimanje s posuđivanjem | AC, C, OV |
SWAP Naredba | Zamjena bilježnica unutar baterije | |
XCH A naredba,<байт> | Razmijenite sadržaj akumulatora s bajt varijablom | |
XCHD naredba A,@R1 | Razmjena bilježnica | |
XRL tim<байт-назначения>, <байт-источникa> | Logički "XOR" za bajtove varijable |