Intel 8051
Intel 8051 je osembitový mikrokontrolér Harvardskej architektúry, ktorý bol vyvinutý spoločnosťou Intel v roku 1980 pre použitie v oblasti vstavaných (embedded) systémov. Pôvodná verzia bola populárna v roku 1980 a na začiatku deväťdesiatych rokov, ale dnes bola z veľkej časti nahradená celou radu rýchlejších a funkčne posilnených 8051-kompatibilných zariadení vyrábaných viac ako 20 nezávislými výrobcami, vrátane Atmel, Infineon Technologies (predtým Siemens AG), NXP (predtým Philips Semiconductor), Nuvoton (predtým Winbond), ST Microelectronics, Silicon Laboratories (predtým Cygnal), Texas Instruments a Cypress Semiconductor. Intelovské oficiálne označenie pre rodinu 8051 μCs je MCS 51.
Dôležité vlastnosti a aplikácie i8051 mikroarchitektúry
upraviť- Poskytuje veľa funkcií (CPU, RAM, ROM, I/O, logické prerušenia, časovača, atď.) v jednom zariadení
- 8bitová ALU, stradač a registre (preto je to 8-bit mikropočítač)
- 8bitová dátová zbernica
- 16bitová adresová zbernica - 64 kB (65536 bajtov) každé pre RAM a ROM
- On-chip RAM - 128 bytov ("Pamäť dát")
- On-chip ROM - 4 kB ("Pamäť programu")
- Štvorbajtový obojsmerný vstupno/výstupný port
- UART (sériový port)
- Dve 16bitové počítadlá/časovače
- Dvojúrovňová priorita prerušenia
- 5 hardvérových prerušení
- +1 softvérové prerušenia
- Režim úspory energie
Zvlášť užitočná funkcia z jadra 8051 je začlenenie bitovo adresovateľnej pamäte. Umožňuje totiž vykonávať logické operácie s jednotlivými bitmi, ktoré sú vykonávané priamo a efektívne na vnútorných registroch pamäti RAM. Táto vlastnosť pomohla upevniť popularitu 8051 v riadiacich aplikáciách v priemysle.
8051 UART je jednoduchý na používanie čipu ako sériového komunikačného rozhrania. Vonkajšie vývody možno nakonfigurovať pre pripojenie k interných posuvných registrov mnohými rôznymi spôsobmi, vnútorný časovač môže byť tiež použitý, umožňujú tiež sériovú komunikáciu v niekoľkých režimoch, a to ako synchrónnom tak asynchrónnom. Niektoré režimy umožňujú komunikáciu bez vonkajších súčiastok.
Mikropočítače založené na 8051 zvyčajne zahŕňajú jednu alebo dve UART, dva alebo tri časovače, 128 alebo 256 bajtov interných dát RAM (16 bytov, ktoré sú bitovo adresovateľné), a to až do 128 bytov I/O, 512 bytov a 64 kB internej programovej pamäte a niekedy rozšírenú dátovú pamäť RAM (ERAM), umiestnenú v externom dátovom priestore. Pôvodné jadro 8051 bežalo na 12 hodinových cykloch / strojový cyklus, väčšina strojových inštrukcií je vykonávaná v jednom alebo dvoch strojových cykloch. Pri hodinovej frekvencii 12 MHz by tak 8051 mohol vykonať 1 milión jednocyklových inštrukcií za sekundu alebo 500000 dvojcyklových inštrukcií za sekundu. Rozšírenie jadra 8051 je teraz bežne používané, beží na šesť, štyri, dva, alebo dokonca jednu dobu na strojový cyklus, pritom má frekvenciu až 100 MHz, a je teda schopné ešte väčších počtov inštrukcií za sekundu. Všetky mikropočítače SILabs, niektoré Dallas a niekoľko Atmel majú jediný cyklus jadra.
Ešte vyššia rýchlosť jedného cyklu 8051 bola v rozmedzí 130 MHz až 150 MHz, na internete je možné stiahnuť formulár pre použitie v programovateľných logických zariadeniach, ako je napríklad FPGA, a na mnohých stovkách MHz v Asics, napr. Netlist z [1] Archivované 2011-02-07 na Wayback Machine.
Programovanie
upraviťK dispozícii je niekoľko C prekladačov pre 8051, z ktorých väčšina vlastní rozšírené funkcie, ktoré umožňujú programátorovi určiť, kde leží ktorá premenná v ktorej pamäti, a poskytuje funkcie pre prístup k hardvéru 8051, ako sú viacnásobné registre a manipulácia s jednotlivými bitmi. Pre ostatné vysokoúrovňové jazyky ako Forth, BASIC, Pascal / Object Pascal, PL/M a Modula-2 sú k dispozícii taktiež, avšak používajú sa menej ako C a assembler. Pre assembler, jazyk C a prípadne ďalšie jazyky existujú pre 8051 rôzne simulátory a vývojové prostredia, ktorých súčasťou je simulátor, napríklad moderné MCU8051IDE pre Linux a Windows alebo staré AS51 pre MS-DOS.
Inštrukčná sada
upraviťAritmetické operácie
upraviťZápis | Príklad | Vysvetlenie | Byty | Cykly |
---|---|---|---|---|
ADD A, Rn | ADD A, R2 | Pridá register Rn do A | 1 | 1 |
ADD A, direct | ADD A, 23 | Pridá obsah adresy bytu do A | 2 | 1 |
ADD A, @ Ri | ADD A, @ R3 | Pridá nepriamo obsah adresy RAM do A | 1 | 1 |
ADD A, # dáta | ADD A, # 43 | Pridá dané dáta do A | 2 | 1 |
ADDC A, Rn | ADDC A, R3 | Pridá register Rn do A s Carry (bit určujúci pretečenie) | 1 | 1 |
ADDC A, direct | ADDC A, 13 | Pridá obsah adresy bytu do A s Carry | 2 | 1 |
ADDC A, @ Ri | ADDC A, @ R4 | Pridá nepriamo obsah adresy RAM do A s Carry | 1 | 1 |
ADDC A, # dáta | ADDC A, # 24 | Pridá dané dáta do A s Carry | 2 | 1 |
SUBB A, Rn | SUBB A, R0 | Odpočíta register Rn z A s Borrow | 1 | 1 |
SUBB A, direct | SUBB A, 31 | Odpočíta obsah adresy bytu z A s Borrow | 2 | 1 |
SUBB A, @ Ri | SUBB A, @ R6 | Odpočíta nepriamo obsah adresy RAM z A s Borrow | 1 | 1 |
SUBB A, # dáta | SUBB A, # 56 | Odpočíta dané dáta z A s Borrow | 2 | 1 |
INC A | - | Inkrementuje A (pôvodná hodnota +1) | 1 | 1 |
INC Rn | INC R3 | Incrementuje register | 1 | 1 |
INC direct | INC 24 | Incrementuje obsah adresy bytu | 2 | 1 |
INCRi | INC @ R2 | Incrementuje nepriamo obsah adresy RAM | 1 | 1 |
DEC A | - | Decrementuje A (pôvodná hodnota -1) | 1 | 1 |
DEC Rn | DEC R4 | Decrementuje register Rn | 1 | 1 |
DEC direct | DEC 12 | Decrementuje obsah adresy bytu | 2 | 1 |
DECRi | DEC @ R6 | Decrementuje nepriamo obsah adresy RAM | 1 | 1 |
INC DPTR | - | Inkrementuje Data Pointer (adresa na vonkajšie RAM) | 1 | 2 |
MUL AB | Vynásobí A a B (A x B ⇒ BA) | 1 | 4 | |
DIV AB | Vydeľte AB (A / B ⇒ A + B), A obsahuje celočíselný výsledok a B zvyšok | 1 | 4 | |
DA A | Decimal Adjust A | 1 | 1 |
Logické operácie
upraviťZápis | Príklad | Vysvetlenie | Byty | Cykly |
---|---|---|---|---|
ANL A, Rn | ANL A, R0 | Logický súčin registra Rn a A, výsledok sa uloží do A | 1 | 1 |
ANL A, direct | ANL A, 22 | Logický súčin obsahu adresy bytu a A, výsledok sa uloží do A | 2 | 1 |
ANL A, @ Ri | ANL A, @ R1 | Logický súčin nepriameho obsahu adresy RAM a A, výsledok sa uloží do A | 1 | 1 |
ANL A, # dáta | ANL A, # 24 | Logický súčin daných dáta a A, výsledok sa uloží do A | 2 | 1 |
ANL direct, A | ANL 17, A | AND A to direct bajt | 2 | 1 |
ANL direct, # dáta | ANL 32, # 45 | AND immediate data to direct bajt | 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, # dáta | ORL A, # 67 | OR immediate data to A | 2 | 1 |
ORL direct, A | ORL 24, A | OR A to direct bajt | 2 | 1 |
ORL direct, # dáta | ORL 45, # 81 | OR immediate data to direct bajt | 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, # dáta | XRL A, # 35 | Exclusive-OR immediate data to A | 2 | 1 |
XRL direct, A | XRL 41, A | Exclusive-OR A to direct bajt | 2 | 1 |
XRL direct, # dáta | XRL 65, # 37 | Exclusive-OR immediate data to direct bajt | 3 | 2 |
CLR A | - | Clear A | 1 | 1 |
CPL A | - | Complement A | 1 | 1 |
RL A | - | Rotate A Left | 1 | 1 |
RLC A | - | Rotate A Left through Carry | 1 | 1 |
RR A | - | Rotate A Right | 1 | 1 |
RRC A | - | Rotate A Right through Carry | 1 | 1 |
SWAP A | - | Swap nibbles within A | 1 | 1 |
Súvisiace procesory
upraviť- Intel 8048 (predchodca 8051), bol použitý v prvej klávesnici na IBM PC, kde bol prevedený do keypresses sériového dátového toku, ktorý posielal údaje hlavnej jednotke počítača. 8048 a ich odnože sa používajú dodnes na základné modely klávesníc.
- Intel 8031 bol osekaná verzia 8051, neobsahoval žiadnu vnútornú pamäť programu (ROM). Ak chcete použiť na tomto čipe externé ROM, musíte pridať obsluhujúci program, ktorý ju načíta a spustí.
- Intel 8052 bola vylepšená verzia pôvodných 8051, obsahovala 256 bajtov internej pamäte namiesto 128 bytov, 8 kB ROM miesto 4 kB, a tri 16-bitové časovače.
- Intel 8032 mal rovnaké funkcie ako 8052, nevlastnil však vnútornú pamäť ROM. 8052 a 8032 sú do značnej miery považované za zastarané, pretože tieto vlastnosti sú obsiahnuté takmer vo všetkých moderných mikropočítačoch založených na 8051.
Literatúra
upraviť- Skalický Petr: Mikroprocesory radu 8051, BEN - technická literatura, 2002, ISBN 80-86056-39-2
Zdroj
upraviťTento článok je čiastočný alebo úplný preklad článku Intel 8051 na českej Wikipédii.