Intel 8051
Author
Albert FloresSAB-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. +more) 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. +more 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. +more 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. +more 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 [https://web. +morearchive. org/web/20110207140553/http://e8051. com/].
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. +more 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ápis | Příklad | Vysvětlení | Byty | Cykly |
---|---|---|---|---|
ADD A,Rn | ADD A,R2 | Přidá registr Rn do A | 1 | 1 |
ADD A,direct | ADD A, 23 | Přidá obsah adresy bytu do A | 2 | 1 |
ADD A,@Ri | ADD A,@R3 | Přidá nepřímo obsah adresy RAM do A | 1 | 1 |
ADD A,#data | ADD A,#43 | Přidá daná data do A | 2 | 1 |
ADDC A,Rn | ADDC A,R3 | Přidá registr Rn do A s Carry (bite určující přetečení) | 1 | 1 |
ADDC A,direct | ADDC A,13 | Přidá obsah adresy bytu do A s Carry | 2 | 1 |
ADDC A,@Ri | ADDC A,@R4 | Přidá nepřímo obsah adresy RAM do A s Carry | 1 | 1 |
ADDC A,#data | ADDC A,#24 | Přidá daná data do A s Carry | 2 | 1 |
SUBB A,Rn | SUBB A,R0 | Odečte registr Rn z A s Borrow | 1 | 1 |
SUBB A,direct | SUBB A,31 | Odečte obsah adresy bytu z A s Borrow | 2 | 1 |
SUBB A,@Ri | SUBB A,@R6 | Odečte nepřímo obsah adresy RAM z A s Borrow | 1 | 1 |
SUBB A,#data | SUBB A,#56 | Odečte daná data z A s Borrow | 2 | 1 |
INC A | - | Inkrementuje A (původní hodnota +1) | 1 | 1 |
INC Rn | INC R3 | Inkrementuje registr | 1 | 1 |
INC direct | INC 24 | Inkrementuje obsah adresy bytu | 2 | 1 |
INC @Ri | INC @R2 | Inkrementuje nepřímo obsah adresy RAM | 1 | 1 |
DEC A | - | Dekrementuje A (původní hodnota -1) | 1 | 1 |
DEC Rn | DEC R4 | Dekrementuje registr Rn | 1 | 1 |
DEC direct | DEC 12 | Dekrementuje obsah adresy bytu | 2 | 1 |
DEC @Ri | DEC @R6 | Dekrementuje nepřímo obsah adresy RAM | 1 | 1 |
INC DPTR | - | Inkrementuje Data Pointer (adresa na vnější RAM) | 1 | 2 |
MUL AB | Vynásobí A a B (A x B => BA) | 1 | 4 | |
DIV AB | Vydělí A B (A/B => A + B), A obsahuje celočíselný výsledek a B zbytek | 1 | 4 | |
DA A | Decimal Adjust A | 1 | 1 |
Logické operace
Zápis | Příklad | Vysvětlení | Byty | Cykly |
---|---|---|---|---|
ANL A,Rn | ANL A,R0 | Logický součin registru Rn a A, výsledek se uloží do A | 1 | 1 |
ANL A,direct | ANL A,22 | Logický součin obsahu adresy bytu a A, výsledek se uloží do A | 2 | 1 |
ANL A,@Ri | ANL A,@R1 | Logický součin nepřímého obsahu adresy RAM a A, výsledek se uloží do A | 1 | 1 |
ANL A,#data | ANL A,#24 | Logický součin daných data a A, výsledek se uloží do A | 2 | 1 |
ANL direct,A | ANL 17,A | AND A to direct byte | 2 | 1 |
ANL direct,#data | ANL 32,#45 | AND immediate data to direct byte | 3 | 2 |
ORL A,Rn | ORL A,R2 | OR register to A | 1 | 1 |
ORL A,direct | ORL A,27 | OR direct byte to A | 2 | 1 |
ORL A,@Ri | ORL A,@R3 | OR indirect RAM to A | 1 | 1 |
ORL A,#data | ORL A,#67 | OR immediate data to A | 2 | 1 |
ORL direct,A | ORL 24,A | OR A to direct byte | 2 | 1 |
ORL direct,#data | ORL 45,#81 | OR immediate data to direct byte | 3 | 2 |
XRL A,Rn | XRL A,R4 | Exclusive-OR register to A | 1 | 1 |
XRL A,direct | XRL A,47 | Exclusive-OR direct byte to A | 2 | 1 |
XRL A,@Ri | XRL A,@R5 | Exclusive-OR indirect RAM to A | 1 | 1 |
XRL A,#data | XRL A,#35 | Exclusive-OR immediate data to A | 2 | 1 |
XRL direct,A | XRL 41,A | Exclusive-OR A to direct byte | 2 | 1 |
XRL direct,#data | XRL 65,#37 | Exclusive-OR immediate data to direct byte | 3 | 2 |
CLR A | - | Clear A | 1 | 1 |
CPL A | - | Complement A | 1 | 1 |
RL A | - | Rotuje obsah registru A vlevo | 1 | 1 |
RLC A | - | Rotate A Left through Carry | 1 | 1 |
RR A | - | Rotuje obsah registru A vpravo | 1 | 1 |
RRC A | - | Rotate A Right through Carry | 1 | 1 |
SWAP A | - | Swap nibbles within A | 1 | 1 |
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. +more * 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
Literatura
Skalický Petr: Mikroprocesory řady 8051, BEN - technická literatura, 2002,