Intel 8051 – mikrokontroler stworzony przez firmę Intel w 1980 roku. Zapoczątkował rodzinę mikrokontrolerów MCS-51 (od ang. MicroComputer System) będących udoskonalonymi lub wyspecjalizowanymi mikrokontrolerami o tej samej, ośmiobitowej architekturze i kompatybilnej z pierwowzorem liście rozkazów. Mikrokontrolery należące do rodziny MCS-51 do dziś znajdują szerokie zastosowanie w niemal każdej dziedzinie elektroniki.
Obszar pamięci o adresach od 0x80 do 0xFF nazywany jest obszarem rejestrów specjalnych (SFR – Special Function Registers). Rejestry te pozwalają na sterowanie różnymi funkcjami mikrokontrolera. Obszar ten nie jest ciągły (nie wszystkie adresy są zajęte) – umożliwia to ewentualne uzupełnienie obszaru o nowe funkcje.
Układ rejestrów w pamięci
* – adresowane bitowo (adresy podzielne przez 8)
Adres
Symbol
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
0xF0*
B
0xE0*
ACC
0xD0*
PSW
CY
AC
F0
RS1
RS0
OV
-
P
0xC0*
IP
-
-
-
PS
PT1
PX1
PT0
PX0
0xB0*
P3
/RD
/WR
T1
T0
/INT1
/INT0
TxD
RxD
0xA8*
IE
EA
-
-
ES
ET1
EX1
ET0
EX0
0xA0*
P2
0x99
SBUF
0x98*
SCON
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
0x90*
P1
0x8D
TH1
0x8C
TH0
0x8B
TL1
0x8A
TL0
0x89
TMOD
GATE
C/T
M1
MO
GATE
C/T
M1
M0
0x88*
TCON
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
0x87
PCON
SMOD
-
-
-
GF1
GF0
PD
IDL
0x83
DPH
0x82
DPL
0x81
SP
0x80*
P0
Ważniejsze rejestry specjalne
ACC – akumulator, jeden z najczęściej wykorzystywanych rejestrów, gdyż obsługuje większość operacji arytmetycznych, logicznych, skoków warunkowych i wiele innych
B – dodatkowy rejestr, wykorzystywany w trakcie operacji mnożenia (MUL) i dzielenia (DIV)
PSW – rejestr stanu programu (Program Status Word), jest to zbiór różnych flag (wskaźników):
PSW.0=P – parzystość, flaga jest ustawiana gdy wynikiem operacji jest liczba parzysta,
PSW.1=F1 – począwszy od 8052, flaga którą może zdefiniować użytkownik,
PSW.2=OV (Overflow) – przepełnienie, przekroczenie zakresu liczb w kodzie uzupełnienia do 2 (U2),
PSW.3=RS0 (Register Bank Switch) młodszy bit numeru banku,
PSW.4=RS1 (Register Bank Switch) starszy bit numeru banku,
PSW.5=F0 – flaga ogólnego zastosowania,
PSW.6=AC (Auxiliary Carry) – przeniesienie z młodszej do starszej tetrady (istotne w rozkazach arytmetycznych BCD),
PSW.7=CY (Carry) – przeniesienie z najstarszego bitu (oznacza np. przekroczenie zakresu przy sumowaniu NKB),
Porty P0-P3 – wykorzystywane są do komunikacji ze światem zewnętrznym (wszelkimi urządzeniami peryferyjnymi), niektóre mają jeszcze dodatkowe funkcje,
P0 i P2 – mogą zostać wykorzystanie jako wyprowadzenia szyny systemowej mikrokontrolera
P1 – port ogólnego zastosowania,
P3 – port posiada wyspecjalizowane linie (w SFR przedstawiane jako bity),
RD – odczyt pamięci danych,
WR – zapis pamięci danych,
T0,T1 – wejścia timerów zewnętrznych (zliczanie impulsów trybie pracy timerów jako liczniki),
INT0,INT1 – wejścia zewnętrznych przerwań,
TxD, RxD – wysyłanie (Transmit) i odbieranie (Receive) danych (Data) przy transmisji szeregowej,
Sterowanie przerwań,
IE – zezwolenia dla przerwań (Interrupt Enable),
EA – ogólne zezwolenie dla przerwań,
ES – zezwolenie dla przerwań od transmisji szeregowej,
ET0, ET1 – zezwolenie dla przerwań od timerów,
EX0, EX1 – zezwolenie dla przerwań zewnętrznych,
IP – priorytety przerwań (Interrupt Priority),
PS – priorytet dla przerwań od transmisji szeregowej,
GATE – bramkowanie, zliczanie impulsów kiedy GATE=0
C/T – tryb pracy timera (0 – timer wewnętrzny, 1 – licznik impulsów zewnętrznych)
M0, M1 – ustalają trybu pracy licznika
M1
M0
Tryb
0
0
0
licznik 13-bitowy
0
1
1
licznik 16-bitowy
1
0
2
licznik 8-bitowy z autoprzeładowaniem
1
1
3
T0 i T1 jako osobne liczniki 8-bitowe
W trybie 3 działa de facto tylko TLx (młodsze 8 bitów licznika), w momencie wygenerowania sygnału przepełnienia, do TLx ładowana jest wartość THx który w tym trybie pełni funkcje rejestru stałej.
Timery generują sygnał TFx przy przekroczeniu maksymalnej wartości – odpowiednio 2^13, 2^16, 2^8. Jako że są to liczniki zliczające w przód, oraz ich inkrementacja następuje co jeden cykl zegarowy w celu kontrolowania odmierzanego przez nie czasu Tx jako wartość początkowa do TH | TL należy wpisać wartość
Tx = (maksimum zakresu w danym trybie-X)*12 *Tosc
gdzie: maksimum zakresu w trybie 16 bit = 65 536, 8-bitowym = 256, a Tosc = 1/Częstotliwość układu taktującego
W trybie 2 należy tę samą wartość wpisać zarówno do rejestrów TH i TL
Inne mikrokontrolery rodziny MCS-51
Oryginalny układ 8051 firmy Intel jest przestarzały i od dawna nieużywany w nowych konstrukcjach. Jednakże na rynku istnieje wiele udoskonalonych wersji tego mikrokontrolera – od prostych klonów kompatybilnych elektrycznie (pin-to-pin) z pierwowzorem, aż po rozbudowane układy, w których rdzeń 8051 stanowi jedynie małą część systemu.
Mikrokontrolery rodziny MCS-51 kompatybilne z 8051 co do pinów oraz na poziomie asemblera:
8052 wersja posiada
dodatkowy obszar 128 bajtów wewnętrznej pamięci RAM o adresach identycznych z rejestrami specjalnymi. Dla rozróżnienia jest on adresowany indeksowo
8KB wewnętrzne pamięci ROM (4 strony)
trzeci 16-bitowy licznik / czasomierz (timer)
dodatkowe rejestry specjalne SFR do obsługi trzeciego licznika
ATMEGA161 - 16KB pamięci Flash, 512B pamięci EEPROM, 1KB pamięci RAM
Zmiany w stosunku do oryginalnego układu 8051 obejmują także:
znacznie zmniejszony pobór mocy, szczególnie w tzw. trybach uśpienia
zwiększoną częstotliwość taktowania
miniaturyzację obudów, zwiększenie lub zmniejszenie (w wersjach uproszczonych) liczby wyprowadzeń
udoskonaloną interpretację sygnałów wejścia-wyjścia oraz sygnału reset (umożliwiającą bardziej elastyczne wykorzystanie portów i zwiększającą odporność na zakłócenia)
dodatkowe rejestry specjalne SFR, związane m.in. z nowymi układami czasowo – licznikowymi, dodatkowymi wskaźnikami adresów, dodatkowymi portami wejścia / wyjścia, w tym np. interfejsami szeregowymi, wejściami przerwań, przetwornikami analogowo – cyfrowymi, zegarami czasu rzeczywistego, układami szyfrującymi itp.
Swój sukces rodzina MCS-51 zawdzięcza m.in. wyjątkowej łatwości rozbudowy, nie wymagającej jakiejkolwiek modyfikacji listy rozkazów. Wiąże się to ze sposobem uwzględniania dodatkowych elementów w przestrzeni adresowej mikrokontrolera – jest w niej wiele niewykorzystanych adresów, ułatwiających dostęp do nowych elementów za pośrednictwem dodatkowych rejestrów specjalnych (SFR).