MCS-51: Porovnání verzí

Z Wikipedie, otevřené encyklopedie
Smazaný obsah Přidaný obsah
Imad (diskuse | příspěvky)
Imad (diskuse | příspěvky)
Řádek 105: Řádek 105:
</pre>
</pre>
=== Zbylá datová paměť 30h až (7Fh nebo 0FFh ) ===
=== Zbylá datová paměť 30h až (7Fh nebo 0FFh ) ===
U všech instancích je tato paměť přítomna minimálně do adresy 40h, běžně však bývá až do adresy 7Fh. U nejnovjejších modelů až do 0FFh, zde by sice zdánlivě mohla kolidovat se [[#SFR-Registry 80h|SFR]], tomu je ale zabráněno jejím zpřístupněním pouze přes nepřímou adresaci.
V všech instancích je tato paměť přítomna minimálně do adresy 40h, běžně však bývá až do adresy 7Fh. U nejnovjejších modelů až do 0FFh, zde by sice zdánlivě mohla kolidovat se [[#SFR-Registry 80h|SFR]], tomu je ale zabráněno jejím zpřístupněním pouze přes nepřímou adresaci.


Tuto oblast paměti lze využít libovolně například pro globální promněnné programu, v každém případě pokud použijeme zásobník musí tento být umístěn v této paměti.
Tuto oblast paměti lze využít libovolně například pro globální promněnné programu, v každém případě pokud použijeme zásobník musí tento být umístěn v této paměti.

Verze z 25. 9. 2009, 14:04

Rodina MCS-51 je označení pro osmibitové jednočipové mikropočítače harvardské architektury vyvinuté firmou Intel. Předním zástupcem této řady je procesor Intel 8051. Kvůli vnitřním vlastnostem těchto mikrořadičů se více či méně zdařilé klony vyrábějí dodnes a to prakticky všemi firmami zabývající se výrobou čipových zařízení. Své mikrořadiče založené na jádru MCS-51 vyráběla jednu dobu i Tesla.

Základní informace

  • osmibitová architektura, Veškeré operace jsou osmi-bitové, kromně adresace a práce s registrem DPTR.
  • šestnáctibitová adresace, Jak paměť programu tak i paměť dat lze adresovat v rozdahu 16-ti bitů, to je 64kB.
  • Napájení, obvykle 5V, existují ale Instance, například od Atmel, které fungují od 2,4V.
  • hodinový oscilátor je součástí čipu, Krystal se však připojuje externě, dnes obvyklé frekvence 0-33MHz
  • paměť programu bývá součástí čipu a je velká 1-64 kB.
  • vnitřní datová paměť RAM je velká 64-256 bajtů.
  • datová paměť XRAM, může být součástí čipu, přímo lze adresovat až 64kB .
  • sériová jednotka UART, je součástí snad všech instancí procesorů této rodiny, některé mají i více sériových kanálů.
  • čítače/časovače, dva a více.
  • přerušení, Vnitřní například z časovačů nebo sériové linky, zdroje přerušení mohou být i externí.

Instance

Oznčení Výrobce Vývodů Paměť programu RAM mimo SFR Zajímavosti
AT89C1051 Atmel 20 1kB Flash 64 Vestavěný analogový komparátor
AT89C51 Atmel 40 128 [1]
AT89C2051 Atmel 20 2kB Flash 128 Vestavěný analogový komparátor
AT89C4051 Atmel 20 4kB Flash 128
AT89S52 Atmel 40 256 Rozšíření MCS-52, a podpora sériového programování.
I8031 Intel 40 Bez ROM 128 Neobsahuje paměť programu.
DS80C320/DS80C323 DALLAS SEMICONDUCTOR 40 64kB 256+64kB

A mnoho dalších

Paměť a registry

Paměť programu

Jednočip v sobě obsahuje integrovanou paměť pro program a pro data. Programová paměť byla dříve typu ROM, později se přešlo na PROM, EPROM, EEPROM a nakonec FLASH. Dnes se nejčastěji vyrábějí s posledními dvěma vyjmenovanými typy pamětí. Velikost lze rozšířit až na 64 kB (registr IP je tedy široký 16 bitů).

Datová paměť

Je rovněž součástí čipu, byla vždy typu RAM, po odpojení napájení se tedy celá vymaže (obsahuje nuly). Velikost činí 64-256 bajtů, rozšířitelná na 64 kB. Je možné k ní přistupovat buď pomocí registrů, nebo pomocí adres. Na obrázku níže je rozdělení datové paměti.

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

Registry, 00h až 1Fh

Adresy 0-31 jsou tzv. pracovní registry, rozdělené do čtyř sad, každý představuje jeden registr, je jich celkem 8 (R0, R1, R2, R3, R4, R5, R6 a R7 resp. adresy 0, 1, 2, 3, 4, 5, 6 a 7 – toto mapování je však výchozí a je možné ho nastavit). V každou chvíli lze pracovat pomocí jejich symbolických názvů pouze s jednou sadou, lze však mezi nimi přepínat pomocí instrukce SETB jejímž prostřednictvím nastavujeme hodnoty bitových registrů RS0 nebo RS1 (00 – 1. sada, 11 – 4. sada). Druhou možností, jak pracovat s ostatními pracovními registry je použít jejich adresu, jak uvádí příklad:

  clr  RS0           ; Jsme v souboru registrů 0
  clr  RS1
  mov  R0,#8         ; Adresa R0 v souboru registrů 1
  mov  @R0,#123      ; Prirazeno do R0 souboru 1
                     ; nyni je v R0 hodnota 8
  setb RS0           ; Nyni je v R0 hodnota 123

Bitově adresovatelná paměť, 20h až 30h

Adresy 32-47 jsou oproti mnohým verzím jednočipů něčím zvláštní – je možné je bitově adresovat. Každý bit z této oblasti má svou vlastní adresu (0-127). Hodnoty se nastavují prostřednictvím instrukcí SETB (nastaví logickou 1), CLR (nastaví logickou 0) a CPL (neguje hodnotu). Používají se následovně:

SETB P1.0    ; Posílá log. 1 na port P1, linku 0
CLR  F0      ; Nastavuje log. 0 uživatelskému příznakovému registru F0
CPL  64      ; Neguje bitovou hodnotu na bitové adrese 64

Zbylá datová paměť 30h až (7Fh nebo 0FFh )

V všech instancích je tato paměť přítomna minimálně do adresy 40h, běžně však bývá až do adresy 7Fh. U nejnovjejších modelů až do 0FFh, zde by sice zdánlivě mohla kolidovat se SFR, tomu je ale zabráněno jejím zpřístupněním pouze přes nepřímou adresaci.

Tuto oblast paměti lze využít libovolně například pro globální promněnné programu, v každém případě pokud použijeme zásobník musí tento být umístěn v této paměti.

SFR-Registry 80h

Obecně se jim říká SFR (Special Function Register), většina z nich má vlastní názvy. Prostřednictvím adresy 160 tak lze odesílat data přes port P0 apod. Názvy těchto jednotlivých registrů uvádí následující tabulka:

Umístění jednotlivých SFR
Umístění jednotlivých SFR
Acc akumulátor, střadač (někde též A, od angl. slova accumulator), univerzální registr, pracují s ním všechny ALU funkce
B používá se při násobení
TH0,TH1 a TL0 a TL21 dva čítače/časovače
P0, P1, P2, P3 V/V porty (jinak též brány)
DPL, DPH společně tvoří jeden registr 16bitový registr DPTR (lze k nim však možno přistupovat i jednotlivě – DPL tvoří spodních osm a DPH vrchních osm bitů), používá se zejména k adresaci dat na externí datové paměti, přesuny dat provádí instrukce MOVX
SBUF, SCON řízení sériového přenosu
TCON, TMOD řízení časovačů
PCON řízení spotřeby
IP řízení priority přerušení (B8H)
IE řízení povolení přerušení (A8H) – spodních 7 bitů nastavuje jednotlivá přerušení, nejvyšší bit povolí všechna
SP (stack pointer) – ukazatel vrcholu zásobníku
PSW stavový byte, Charakterizuje výsledek předchozí operace, nulovost ACC a podobně.
PC (program counter, někdy též IP – instruction pointer) – programový čítač (čítač instrukcí)

Registr PSW (adresa D0h) slouží k uchování informace různých stavů procesoru. Lze k němu přistupovat pomocí bitové adresy D0h-D7h nebo názvů. Jak jsou jednotlivé bity (flagy, vlajky) řazeny, uvádí následující obrázek:

  • P (parity) – signalizuje paritu střadače, při lichém počtu jedniček se nastaví na hodnotu 1, mění se s každou instrukcí
  • OV (owerflow) – signalizuje přetečení, při zpracovávání čísel se chová jako znaménko. Nastavuje se při aritmetických operacích, u dělení signalizuje pokus dělit nulou.
  • RS0 a RS1 – používá se k přepínání bank pracovních registrů (R0-R7) jak uvádí následující tabulka:
  • F0 – uživatelsky definovatelný bit
  • AC (Auxiliary carry) – nastaví se při přenosu mezi čtvrtým a pátým bitem v registru Acc (střadač), význam má pouze u instrukce DAA
  • C (carry) – signalizuje přenos informace mezi osmým a devátým bitem, použije se též při operacích porovnávání
  • Jeden bit zůstal nevyužit (rezervován), je možné ho použít u některých verzí mikrořadičů jako uživatelský bit.

Externí připojení paměti

Porty

Mikropočítače řady MCS-51 umožňují externě připojit další zařízení (LED diody, snímače, jiné procesory atp.) pomocí portů. Celkem je k dispozici 32 V/V linek, dělených do čtyř osmibitových skupin – brán (P0 – P3). Lze přes ně posílat pouze digitální signál, některé podtypy však mají integrovaný i A/D převodník, takže umožňuje alespoň data v analogové formě přijímat.

Seznam procesorů

  • Intel 8031 - 8-Bit Control-Oriented Microcontroller
  • Intel 8032 - 8-Bit Control-Oriented Microcontroller
  • Intel 8051 - 8-Bit Control-Oriented Microcontroller
  • Intel 8052 - 8-Bit Control-Oriented Microcontroller
  • Intel 8054 - 8-Bit Control-Oriented Microcontroller
  • Intel 8058 - 8-Bit Control-Oriented Microcontroller
  • Intel 8351 - 8-Bit Control-Oriented Microcontroller
  • Intel 8352 - 8-Bit Control-Oriented Microcontroller
  • Intel 8354 - 8-Bit Control-Oriented Microcontroller
  • Intel 8358 - 8-Bit Control-Oriented Microcontroller
  • Intel 8751 - 8-Bit Control-Oriented Microcontroller
  • Intel 8752 - 8-Bit Control-Oriented Microcontroller
  • Intel 8754 - 8-Bit Control-Oriented Microcontroller
  • Intel 8758 - 8-Bit Control-Oriented Microcontroller
  • Intel 80151 - 8-Bit Control-Oriented Microcontroller
  • Intel 83151 - 8-Bit Control-Oriented Microcontroller
  • Intel 87151 - 8-Bit Control-Oriented Microcontroller
  • Intel 80152 - 8-Bit Control-Oriented Microcontroller
  • Intel 83152 - 8-Bit Control-Oriented Microcontroller
  • Intel 80251 - 8-Bit Control-Oriented Microcontroller
  • Intel 83251 - 8-Bit Control-Oriented Microcontroller
  • Intel 87251 - 8-Bit Control-Oriented Microcontroller

Další podobné

Externí odkazy

Šablona:Pahýl - počítače