한국   대만   중국   일본 
MCS-51 ? Wikipedie P?esko?it na obsah

MCS-51

Z Wikipedie, otev?ene encyklopedie

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.

Zakladni informace [ editovat | editovat zdroj ]

  • 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.

Struktura [ editovat | editovat zdroj ]

Blokové schéma
Blokove schema
Blokový popis struktury
Blokovy popis struktury

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? ]

Instance [ editovat | editovat zdroj ]

Ozna?eni Vyrobce Vyvod? Pam?? programu RAM mimo SFR Zajimavosti
AT89C1051 Atmel 20 1 kB Flash 64 Vestav?ny analogovy komparator
AT89C51 Atmel 40 128 http://www.atmel.com/dyn/products/product_card.asp?part_id=1930
AT89C2051 Atmel 20 2 kB Flash 128 Vestav?ny analogovy komparator
AT89C4051 Atmel 20 4 kB Flash 128
AT89S52 Atmel 40 8 kB FLASH 256 Roz?i?eni MCS-52, a podpora serioveho programovani.
I8031 Intel 40 Bez ROM 128 Neobsahuje pam?? programu.
DS80C320/DS80C323 DALLAS SEMICONDUCTOR 40 64 kB 256+64 kB

A mnoho dal?ich

Pam?? a registry [ editovat | editovat zdroj ]

Pam?? programu [ editovat | editovat zdroj ]

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? ]

Datova pam?? [ editovat | editovat 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? ]

Rozdělení datové paměti RAM v mikrořadičích řady MCS-51
Rozd?leni datove pam?ti RAM v mikro?adi?ich ?ady MCS-51

Registry, 00h a? 1Fh [ editovat | editovat 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? ]

SFR-Registry 80h [ editovat | editovat 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:

Umístění jednotlivých SFR
Umist?ni jednotlivych SFR
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 .

Externi p?ipojeni pam?ti [ editovat | editovat zdroj ]

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:

  1. aktivni signal EA (External Access)
  2. ?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? ]

Porty [ editovat | editovat 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? ]

Seznam procesor? firmy Intel [ editovat | editovat zdroj ]

Reference [ editovat | editovat zdroj ]

Souvisejici ?lanky [ editovat | editovat zdroj ]

Externi odkazy [ editovat | editovat zdroj ]