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í
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á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.
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.
Odkazy
Reference
V tomto článku byl použit překlad textu z článku Intel 8051 na anglické Wikipedii.