Intel 8051

Intel 8051
KL Intel P8051.jpg
Specifikace
Uvedení1980
Počet jader1
Frekvence12 MHz
Paměť programu4 KiB
Patice40 pinů
SAB-C515-LN od Infineon navržen podle 8051

Intel 8051 je osmibitový mikropočítač Harvardské architektury, který byl vyvinut společností Intel v roce 1980 pro použití v oblasti vestavěných (embedded) systémů. Původní verze byla populární v roce 1980 a na začátku devadesátých let, ale dnes byla z velké části nahrazena celou řadu rychlejších a funkčně posílených 8051 kompatibilních zařízení vyráběných více než 20 nezávislými výrobci, včetně Atmel, Infineon Technologies (dříve Siemens AG), NXP (dříve Philips Semiconductor), Nuvoton (dříve Winbond), ST Microelectronics, Silicon Laboratories (dříve Cygnal), Texas Instruments a Cypress Semiconductor. Intelovské oficiální označení pro rodinu 8051 μCs je MCS 51.

Důležité vlastnosti a aplikace i8051 mikroarchitektury.

i8051 architektura
  • Poskytuje mnoho funkcí (CPU, RAM, ROM, I / O, logické přerušení, časovače, atd.) v jednom zařízení
  • 8bitová ALU, střadač a registry (proto je to 8bit mikropočítač)
  • 8bitová datová sběrnice
  • 16bitově adresová sběrnice – 64 kB (65536 bajtů) každé pro RAM a ROM
  • On-chip RAM – 128 bytů („Paměť dat“)
  • On-chip ROM – 4 kB („Paměť programu“)
  • Čtyřbajtový obousměrný vstupně / výstupní port
  • UART (sériový port)
  • Dva 16bitové čítače / časovače
  • Dvouúrovňová priorita přerušení
    • 5 hardwarových přerušení
    • +1 softwarové přerušeni
  • Režim úspory energie

Zvláště užitečná funkce z jádra 8051 je začlenění bitově adresovatelné paměti. Umožňuje totiž provádět logické operace s jednotlivými bity, které jsou prováděny přímo a efektivně na vnitřních registrech paměti RAM. Tato vlastnost pomohla upevnit popularitu 8051 v řídicích aplikacích v průmyslu.

8051 UART je jednoduchý na používání čipu jako sériového komunikačního rozhraní. Vnější vývody lze nakonfigurovat pro připojení k interní posuvných registrů mnoha různými způsoby, vnitřní časovač může být také použit, umožňují též sériovou komunikaci v několika režimech, a to jak synchronním tak asynchronním. Některé režimy umožňují komunikaci bez vnějších součástek.

Mikropočítače založené na 8051 obvykle zahrnují jednu nebo dvě UART, dva nebo tři časovače, 128 nebo 256 bajtů interních dat RAM (16 bytů, které jsou bitově adresovatelné), a to až do 128 bytů I / O, 512 bytů a 64 kB interní programové paměti a někdy rozšířenou datovou paměť RAM (ERAM), umístěnou v externím datovém prostoru. Původní jádro 8051 běželo na 12 hodinových cyklech / strojový cykl, většina strojových instrukcí je vykonávaná v jednom nebo dvou strojových cyklech. Při hodinové frekvenci 12 MHz by tak 8051 mohl vykonat 1 milion jednocyklových instrukcí za sekundu nebo 500000 dvoucyklových instrukcí za sekundu. Rozšíření jádra 8051 je nyní běžně používané, běží na šest, čtyři, dva, nebo dokonce jednu dobu na strojový cykl, přitom má frekvenci až 100 MHz, a je tedy schopné ještě větších počtů instrukcí za sekundu. Všechny mikropočítače SILabs, některé Dallas a několik Atmel mají jediný cykl jádra.

Ještě vyšší rychlost jednoho cyklu 8051 byla v rozmezí 130 MHz až 150 MHz, na internetu lze stáhnout formulář pro použití v programovatelných logických zařízení, jako je například FPGA, a na mnoha stovek MHz v ASICs, např. netlist z [1].

Programování

Moderní IDE pro 8051

K dispozici je několik C překladačů pro 8051, z nichž většina vlastní rozšířené funkce, které umožňují programátorovi určit, kde leží která proměnná v které paměti, a poskytuje funkce pro přístup k hardwaru 8051, jako jsou vícenásobné registry a manipulace s jednotlivými bity. Pro ostatní vysokoúrovňové jazyky jako Forth, BASIC, Pascal / Object Pascal, PL/M a Modula-2 jsou k dispozici taktéž, je jich však méně používané, než C a assembler. Pro assembler, jazyk C a případně další jazyky existují pro 8051 různé simulátory a vývojová prostředí, jejíž součástí je simulátor, například moderní MCU 8051 IDE pro Linux a Windows nebo staré AS51 pro MS-DOS.

Instrukční sada

Aritmetické operace

ZápisPříkladVysvětleníBytyCykly
ADD A,RnADD A,R2Přidá registr Rn do A11
ADD A,directADD A, 23Přidá obsah adresy bytu do A21
ADD A,@RiADD A,@R3Přidá nepřímo obsah adresy RAM do A11
ADD A,#dataADD A,#43Přidá daná data do A21
ADDC A,RnADDC A,R3Přidá registr Rn do A s Carry (bite určující přetečení)11
ADDC A,directADDC A,13Přidá obsah adresy bytu do A s Carry21
ADDC A,@RiADDC A,@R4Přidá nepřímo obsah adresy RAM do A s Carry11
ADDC A,#dataADDC A,#24Přidá daná data do A s Carry21
SUBB A,RnSUBB A,R0Odečte registr Rn z A s Borrow11
SUBB A,directSUBB A,31Odečte obsah adresy bytu z A s Borrow21
SUBB A,@RiSUBB A,@R6Odečte nepřímo obsah adresy RAM z A s Borrow11
SUBB A,#dataSUBB A,#56Odečte daná data z A s Borrow21
INC A-Inkrementuje A (původní hodnota +1)11
INC RnINC R3Inkrementuje registr11
INC directINC 24Inkrementuje obsah adresy bytu21
INC @RiINC @R2Inkrementuje nepřímo obsah adresy RAM11
DEC A-Dekrementuje A (původní hodnota -1)11
DEC RnDEC R4Dekrementuje registr Rn11
DEC directDEC 12Dekrementuje obsah adresy bytu21
DEC @RiDEC @R6Dekrementuje nepřímo obsah adresy RAM11
INC DPTR-Inkrementuje Data Pointer (adresa na vnější RAM)12
MUL ABVynásobí A a B (A x B => BA)14
DIV ABVydělí A B (A/B => A + B), A obsahuje celočíselný výsledek a B zbytek14
DA ADecimal Adjust A11

Logické operace

ZápisPříkladVysvětleníBytyCykly
ANL A,RnANL A,R0Logický součin registru Rn a A, výsledek se uloží do A11
ANL A,directANL A,22Logický součin obsahu adresy bytu a A, výsledek se uloží do A21
ANL A,@RiANL A,@R1Logický součin nepřímého obsahu adresy RAM a A, výsledek se uloží do A11
ANL A,#dataANL A,#24Logický součin daných data a A, výsledek se uloží do A21
ANL direct,AANL 17,AAND A to direct byte21
ANL direct,#dataANL 32,#45AND immediate data to direct byte32
ORL A,RnORL A,R2OR register to A11
ORL A,directORL A,27OR direct byte to A21
ORL A,@RiORL A,@R3OR indirect RAM to A11
ORL A,#dataORL A,#67OR immediate data to A21
ORL direct,AORL 24,AOR A to direct byte21
ORL direct,#dataORL 45,#81OR immediate data to direct byte32
XRL A,RnXRL A,R4Exclusive-OR register to A11
XRL A,directXRL A,47Exclusive-OR direct byte to A21
XRL A,@RiXRL A,@R5Exclusive-OR indirect RAM to A11
XRL A,#dataXRL A,#35Exclusive-OR immediate data to A21
XRL direct,AXRL 41,AExclusive-OR A to direct byte21
XRL direct,#dataXRL 65,#37Exclusive-OR immediate data to direct byte32
CLR A-Clear A11
CPL A-Complement A11
RL A-Rotuje obsah registru A vlevo11
RLC A-Rotate A Left through Carry11
RR A-Rotuje obsah registru A vpravo11
RRC A-Rotate A Right through Carry11
SWAP A-Swap nibbles within A11

Související procesory

  • Intel 8048 (předchůdce 8051), byl použit v první klávesnici na IBM PC, kde byl převeden do keypresses sériového datového toku, který posílal údaje hlavní jednotce počítače. 8048 a jejich odnože se používají dodnes na základní modely klávesnic.
  • Intel 8031 byl osekaná verze 8051, neobsahoval žádnou vnitřní paměť programu (ROM). Chcete-li použít na tomto čipu externí ROM, musíte přidat obsluhující program, který ji načte a spustí.
  • Intel 8052 byla vylepšená verze původních 8051, obsahovala 256 bajtů interní paměti namísto 128 bytů, 8 kB ROM místo 4 kB, a tři 16bitové časovače.
  • Intel 8032 měl stejné funkce jako 8052, nevlastnil však vnitřní paměť ROM. 8052 a 8032 jsou do značné míry považovány za zastaralé, protože tyto vlastnosti jsou obsaženy téměř ve všech moderních mikropočítačích založených na 8051.

Reference

V tomto článku byl použit překlad textu z článku Intel 8051 na anglické Wikipedii.

Literatura

Média použitá na této stránce

KL Intel P8051.jpg
Autor: Konstantin Lanzet (with permission), Licence: CC BY-SA 3.0
Microcontroller Intel P8051
Intel 8051 arch.svg
Autor: Appaloosa, Licence: CC BY-SA 3.0
Intel 8051 micro architecture
SAB-C515-LN.jpg
Autor: MichaelFrey, Licence: CC BY 2.5

An SAB-C515-LN

This microcontroller is based on the Intel 8051 architecture.