Rodina
MCS-51
je ozna?eni pro osmibitove
jedno?ipove mikropo?ita?e
se smi?enou
harvardskou
a
Von Neumannovou
architekturou (je odd?lena programova a datova pam??, ale format instrukci a dat je toto?ny a p?ena?i se po stejne sb?rnici
[1]
) vyvinute spole?nosti
Intel
a na trh uvedene roku
1980
. Zakladnim zastupcem teto ?ady je jedno?ipovy mikrokontroler
Intel 8051
. Mikrokontrolery, do teto ?ady nale?ejici, maji v?echny rysy v tomto ?lanku popsane stejne, a? na drobne detaily (velikost pam?ti, absence n?kterych p?idavnych komponent apod.), ktere jsou zmin?ne u ka?deho typu jednotliv? (na konci ?lanku je jejich seznam). Kv?li vnit?nim vlastnostem se vice ?i men? zda?ile klony vyrab?ji dodnes a to prakticky v?emi firmami zabyvajici se vyrobou ?ipovych za?izeni (nejvyznamn?j?im vyrobce je po Intelu
Atmel
?i
Motorola
, mezi dal?i pat?i nap?.
Texas Instruments
,
National Semiconductor
,
Siemens
,
Toshiba
, ?i
NEC
). Sve mikro?adi?e zalo?ene na MCS-51 vyrab?la jednu dobu i
Tesla
. ?ada MCS-51 je p?imym nastupcem rodiny
MCS-48
, obsahuje v?ak v?estranna vylep?eni. Tuto ?adu nelze p?esn? za?adit mezi
RISC
a
CISC
, obsahuje od ka?de n?co.
- osmibitova architektura
? Ve?kere operace jsou osmibitove, krom? adresace a prace s registrem DPTR.
- ?estnactibitova adresace
? Jak pam?? programu, tak i pam?? dat lze adresovat v rozsahu 16 bit? (tj. 64 kB).
- napajeni
? Obvykle 5 V, existuji ale instance (nap?. od Atmelu), ktere funguji ji? od 2,4 V.
- hodinovy
oscilator
? Je sou?asti ?ipu, krystal se v?ak p?ipojuje extern?, dnes obvykle frekvence 0?33 MHz.
- pam?? programu
? Byva v?t?inou sou?asti ?ipu a je velka 1?64 kB.
- vnit?ni datova pam??
RAM
? Je velka 64?256 bajt?.
- datova pam??
XRAM
? M??e byt sou?asti ?ipu, p?imo lze adresovat a? 64 kB.
- seriova jednotka
UART
? Je sou?asti snad v?ech instanci procesor? teto rodiny, n?ktere maji i vice seriovych kanal?.
- ?ita?e/?asova?e
? Byva jich dva a vice.
- p?eru?eni
? Zdroje p?eru?eni jsou vnit?ni (nap?. z ?asova?? nebo seriove linky), mohou byt v?ak i externi.
- Zvladaji dvojkove i desitkove operace.
- Obsahuji bitov? adresovatelnou pam??.
- Jedno?ipy od Intelu doka?ou pracovat v teplot? v rozmezi od ?40 °C do 70 °C.
Na obrazku (vy?e) je vyobrazena struktura mikropo?ita?e. Obsahuje
oscilator
, na ktery se p?es vyvody
XTAL1
a
XTAL2
p?ipojuje
krystal
(
piezoelektricky rezonator
), generujici
hodinovy signal
ur?ujici mj. frekvenci procesoru (obvykle je tato frekvence 12 MHz, p?i?em? jeden strojovy cykl je 12 cykl? hodinovych, jedna instrukce tak trva 1 μs, slo?it?j?i 2 μs a instrukce nasobeni a d?leni trvaji 4 μs). Bez n?j by za?izeni nemohlo fungovat. Nasleduji ?ty?i osmibitove porty (P0?P3), slou?ici ke komunikaci s vn?j?imi za?izenimi. P?es porty P0 a P2 se take p?ipojuje vn?j?i pam?? (datova nebo programova). Jeji zapojeni je v?ak slo?it?j?i a bude popsano pozd?ji. Nasleduje vnit?ni programova pam??, jeji? velikost se pohybuje v rozmezi 1?64 kB a je u ka?deho typu a vyrobce jina. Pote je p?itomna seriova jednotka UART (Universal Asynchronous Receiver-Transmitter) s mo?nosti pln? duplexni komunikace. Jejim prost?ednictvim mohou nap?. komunikovat dva procesory navzajem. Dale najdeme jednotku s ?ita?i/?asova?i, ty byvaji v?t?inou ?estnactibitove a po dvou kusech. ?itaci frekvence m??e byt odvozena od hodinoveho signalu p?ichazejiciho z krystalu nebo z vn?j?iho za?izeni p?ipojeneho pomoci vstup?
T0
?i
T1
. Dale tu nalezneme vnit?ni datovou pam?? RAM, jeji? velikost se pohybuje od 64 bajt? do 256 bajt?. Sou?asti je pam?? pro vlastni data a n?kolik dal?ich specialnich registr? ozna?ovanych jako SFR (
Special Function Registers
). K ?adi?i jsou vedeny d?le?ite ?idici signaly (zejmena pro praci s vn?j?i pam?ti), je? budou popsany ni?e. P?edposledni je
CPU
s aritmeticko-logickou jednotkou (
ALU
n?kde te? ALJ), ktera obsahuje krom? standardni s?ita?ky, ode?ita?ky, nasobi?ky a d?li?ky i jednotku pro booleovske (binarni) aritmeticke operace. ALU je z d?vodu vy??i rychlosti p?imo spojena s registry Acc, B a stavovym registrem PSW (Program Status Word). Vlastni CPU je jinak propojena pomoci spole?ne sb?rnice prakticky se v?emi periferiemi. Posledni jednotkou je ?adi? p?eru?eni, ktery se pou?iva pro snadn?j?i komunikaci s vn?j?imi za?izenimi. Po?et zdroj? a urovni priority p?eru?eni je dan typem procesoru. Je mo?ne je maskovat. Procesor je prost?ednictvim vyvod?
Ucc
a
GND
(zem) napajen obvykle nap?tim +5 V, existuji v?ak i ?ady s napajenim +3 V, nap?. od firem Atmel, Analog Devices, atd., n?ktere typy schopne funkce u? od 2,4 V.
[
zdroj?
]
A mnoho dal?ich
Jedno?ip
v sob? obsahuje integrovanou pam?? pro program a pro data. Programova pam?? byla d?ive typu
ROM
, pozd?ji se p?e?lo na
PROM
,
EPROM
,
EEPROM
a nakonec
FLASH
. Dnes se nej?ast?ji vyrab?ji s poslednimi dv?ma vyjmenovanymi typy pam?ti. Velikost lze roz?i?it a? na 64 kB (registr PC je tedy ?iroky 16 bit?).
[
zdroj?
]
Je rovn?? sou?asti ?ipu, byla v?dy typu
RAM
, po odpojeni napajeni se tedy cela vyma?e. Velikost ?ini 64?256 bajt?. Je mo?ne k ni p?istupovat bu? pomoci
registr?
, nebo pomoci adres. Na obrazku ni?e je rozd?leni datove pam?ti.
[
zdroj?
]
Adresy 0?31 jsou tzv. pracovni registry, rozd?lene do ?ty? sad, ka?da sada p?edstavuje osm osmibitovych registr? (R0, R1, R2, R3, R4, R5, R6 a R7 resp. adresy 0, 1, 2, 3, 4, 5, 6 a 7). V ka?dou chvili lze pracovat pomoci jejich symbolickych nazv? pouze s jednou sadou, lze v?ak mezi nimi p?epinat pomoci instrukce SETB, jejim? prost?ednictvim nastavujeme hodnoty bitovych registr? RS0 a RS1 (00 ? 1. sada, a? 11 ? 4. sada). Druhou mo?nosti, jak pracovat s ostatnimi pracovnimi registry, je pou?it jejich adresu, jak uvadi p?iklad:
clr RS0 ; Jsme v souboru registr? 0
clr RS1
mov R0,#8 ; Adresa R0 v souboru registr? 1
mov @R0,#123 ; P?i?azeno do R0 souboru 1
; nyni je v R0 hodnota 8
setb RS0 ; Nyni je v R0 hodnota 123
Bitov? adresovatelna pam??, 20h a? 2Fh
[
editovat
|
editovat zdroj
]
Adresy 32?47 jsou oproti mnohym verzim jedno?ip? n??im zvla?tni ? je mo?ne je bitov? adresovat. Ka?dy bit z teto oblasti ma svou vlastni adresu (0?127). Hodnoty se nastavuji prost?ednictvim instrukci SETB (nastavi logickou 1), CLR (nastavi logickou 0) a CPL (neguje hodnotu). Pou?ivaji se nasledovn?:
SETB P1.0 ; Nastavi log. 1 na portu P1, lince 0
CLR F0 ; Nastavuje log. 0 u?ivatelskemu p?iznakovemu registru F0
CPL 64 ; Neguje bitovou hodnotu na bitove adrese 64
Zbyla datova pam?? 30h a? 7Fh (nebo 0FFh)
[
editovat
|
editovat zdroj
]
Ve v?ech instancich je tato pam?? p?itomna minimaln? do adresy 3Fh, b??n? v?ak byva a? do adresy 7Fh. U nejnov?j?ich model? a? do 0FFh, zde by sice zdanliv? mohla kolidovat se
SFR
, tomu je ale zabran?no jejim zp?istupn?nim pouze p?es nep?imou adresaci.
[
zdroj?
]
Tuto oblast pam?ti lze vyu?it libovoln?, nap?iklad pro globalni prom?nne programu, v ka?dem p?ipad? zasobnik (Stack) musi byt umist?n v teto pam?ti.
[
zdroj?
]
Obecn? se jim ?ika SFR (Special Function Register), ka?dy z nich ma p?edur?ene pou?iti a tomu odpovidajici vlastni nazev. Nap?. prost?ednictvim adresy 160 (A0h) tak lze odesilat nebo ?ist data p?es port P2, apod. Nazvy t?chto jednotlivych registr? uvadi nasledujici tabulka:
Acc
|
akumulator,
st?ada?
(n?kde te? A, od angl. slova accumulator), univerzalni registr, pracuji s nim v?echny ALU funkce
|
B
|
pou?iva se p?i nasobeni
|
TH0
,
TH1
a
TL0
a
TL21
|
dva ?ita?e/?asova?e
|
P0, P1, P2, P3
|
V/V porty (jinak te? brany)
|
DPL, DPH
|
spole?n? tvo?i jeden 16bitovy registr
DPTR
(lze k nim v?ak p?istupovat i jednotliv? ? DPL tvo?i spodnich osm a DPH vrchnich osm bit?), pou?iva se zejmena k adresaci dat v externi datove pam?ti, p?esuny dat provadi instrukce MOVX
|
SBUF, SCON
|
datovy registr a ?izeni serioveho p?enosu
|
TCON, TMOD
|
?izeni ?asova??
|
PCON
|
?izeni spot?eby
|
IP
|
?izeni priority p?eru?eni (B8H)
|
IE
|
?izeni povoleni p?eru?eni (A8H) ? spodnich 7 bit? nastavuje jednotliva p?eru?eni, nejvy??i bit povoli v?echna
|
SP
|
(Stack Pointer) ? ukazatel vrcholu zasobniku
|
PSW
|
stavovy byte (Program Status Word), charakterizuje vysledek p?edchozi operace, nulovost ACC a podobn?.
|
PC
|
(Program Counter, n?kdy te? IP ? instruction pointer) ? programovy ?ita? (?ita? instrukci)
|
Registr
PSW
(adresa D0h) slou?i k indikaci aktualniho stavu procesoru. Lze k n?mu p?istupovat pomoci bitovych adres D0h?D7h nebo nazv? jeho jednotlivych bit?. Jak jsou jednotlive bity (flagy, p?iznaky) ?azeny, uvadi nasledujici obrazek:
- P
(Parity) ? signalizuje paritu st?ada?e, p?i lichem po?tu jedni?ek se nastavi na hodnotu 1, aktualizuje se ka?dou instrukci
- OV
(Owerflow) ? signalizuje p?ete?eni, p?i zpracovavani ?isel se chova jako znamenko. Nastavuje se p?i aritmetickych operacich, u d?leni signalizuje pokus d?lit nulou.
- RS0
a
RS1
? (Register Select) - pou?iva se k p?epinani bank RB0 a? RB3 (Register Bank) pracovnich registr? (R0?R7) jak uvadi nasledujici tabulka:
- F0
? u?ivatelsky definovatelny bit (p?iznak; Flag 0)
- AC
(Auxiliary Carry) ? nastavi se p?i p?enosu mezi ?tvrtym a patym bitem v registru Acc (st?ada?), vyznam ma pouze u instrukce DAA
- C
(Carry) ? signalizuje p?enos informace mezi osmym a devatym bitem, pou?ije se te? p?i operacich porovnavani
- Jeden bit z?stal nevyu?it (rezervovan), u n?kterych verzi mikro?adi?? je pou?it a p?edstavuje druhy u?ivatelsky bit (p?iznak; Flag 1)
F1
.
Pro komunikaci s externi pam?ti programu je pou?ivan pro jeji ?teni ?idici signal PSEN (Program Store Enable).
Pro komunikaci s externi pam?ti dat jsou pou?ivany ?idici signaly RD (Read; ?teni) a WR (Write; zapis).
P?istup do pam?ti programu je v?dy realizovan 16bitovou adresou.
P?istup do pam?ti dat je realizovan pou?itim 16bitove adresy (pomoci DPTR) nebo 8bitove adresy (nep?ima adresace z registru).
[
zdroj?
]
Podminky pro p?istup k vn?j?i pam?ti:
- aktivni signal EA (External Access)
- ?ita? instrukci PC (Program Counter) obsahuje ?islo v?t?i ne? 0FFFh (1FFFh pro typy s jadrem 8052).
Pokud neni v procesoru integrovana pam?? programu, je signal EA trvale aktivovan.
Program je pak cely na?itan z externi pam?ti.
Kdy? CPU vykonava program v externi pam?ti, v?echny piny portu P2 jsou nastaveny jako vystupni a nemohou byt pou?ivany pro b??ne V/V operace. B?hem vybavovani adres pro externi pam?? toti? port P2 vysila vy??i byte ?ita?e instrukci (PC). B?hem tohoto vysilani vystupni budi?e jednotlivych bit? portu P2 vyu?ivaji "silne" zvy?ovaci odpory (Pullups) a to v p?ipad?, kdy bity ?ita?e instrukci (PC) jsou jedni?kove.
[
zdroj?
]
Mikropo?ita?e ?ady MCS-51 umo??uji extern? p?ipojit/ovladat dal?i za?izeni (LED diody, snima?e, jine procesory atp.) pomoci port?. Celkem je k dispozici 32 V/V linek, d?lenych do ?ty? osmibitovych skupin ? bran (P0 ? P3). Lze p?es n? obvykle posilat pouze digitalni signal, n?ktere klony v?ak maji integrovan/y i A/D p?evodnik/y, ?asto v?etn? analogoveho multiplexeru na jejich vstupu, p?ipadn? D/A p?evodnik/y, tak?e umo??uji i praci s daty v analogove form?.
[
zdroj?
]