thumb|Intel P8051 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.
Mikrokontrolery te są wykonane w zmodyfikowanej architekturze harwardzkiej. Należą do grupy mikrokontrolerów CISC.
Oprócz możliwości programowania mikrokontrolera w asemblerze rodziny MCS-51, istnieje również możliwość programowania w kompilowanych językach wysokiego poziomu – najczęściej wykorzystywany do tego celu jest język C.
Intel nie produkuje już samodzielnie nowych chipów z serii MCS-51 od marca 2007 roku. Produkcją zajmują się firmy trzecie, m.in. Dallas Semiconductor, Philips i Atmel. Również różne firmy sprzedają układy z serii MCS-51 jako tzw. IP-core, najczęściej stosowane w bezpośrednio programowalnych macierzach bramek.
Specyfikacja mikrokontrolera 8051 ośmiobitowa jednostka arytmetyczno-logiczna (ALU) cztery przełączane banki rejestrów roboczych (4 x R0...R7) 4 kB pamięci wewnętrznej ROM (pamięć zewnętrzna ROM do 64 kB) 128 B pamięci wewnętrznej RAM (pamięć zewnętrzna RAM do 64 kB) zbiór rejestrów specjalnych SFR układ generatora sygnału taktującego (czyli zegar procesora) cztery ośmiobitowe równoległe porty P0...P3 jeden port szeregowy (obsługuje zarówno transmisję synchroniczną jak i asynchroniczną) dwa liczniki/czasomierze działające w jednym z czterech trybów jednobitowy procesor funkcji logicznych system przerwań z układem priorytetów
Rejestry specjalne 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 00xF0* B 0xE0* ACC 0xD0* PSW CY AC F0 RS1 RS0 OV - P0xC0* IP - - - PS PT1 PX1 PT0 PX00xB0* P3 /RD /WR T1 T0 /INT1 /INT0 TxD RxD0xA8* IE EA - - ES ET1 EX1 ET0 EX00xA0* P2 0x99 SBUF 0x98* SCON SM0 SM1 SM2 REN TB8 RB8 TI RI0x90* P1 0x8D TH1 0x8C TH0 0x8B TL1 0x8A TL0 0x89 TMOD GATE C/T M1 MO GATE C/T M1 M00x88* TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT00x87 PCON SMOD - - - GF1 GF0 PD IDL0x83 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, PT0, PT1 – priorytet dla przerwań od timerów, PX0, PX1 – priorytet dla przerwań zewnętrznych, TCON – tylko młodsze 4 bity, IE0, IE1 – flagi przerwań zewnętrznych (zgłoszenie zewnętrznego przerwania), IT0, IT1 – sposób zewnętrznego przerwania (0 – poziom niski, 1 – opadające zbocze),
DPTR – 16-bitowy wskaźnik adresu danych, DPH – starszy bajt wskaźnika, DPL – młodszy bajt wskaźnika, SP – wskaźnik stosu (Stack Pointer),
Timery 8051 Sterowanie timerów: TMOD – młodsze 4 bity odpowiadają timerowi 0, starsze – timerowi 1 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-bitowy0 1 1 licznik 16-bitowy1 0 2 licznik 8-bitowy z autoprzeładowaniem1 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.
TCON – starsze 4 bity TF0, TF1 – flaga przepełnienia timera TR0, TR1 – flaga pracy timera (0 – stop, 1 – zliczanie)
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 8031 wersja bez wewnętrznej pamięci ROM 83C51 wersja z wewnętrzną pamięcią OTP 87C51 wersja z 4KB wewnętrzęj pamięci EPROM zamiast pamięci ROM mały|Intel 87C51 AT89C51 wersja z wewnętrzną pamięcią Flash EEPROM AT89S51 wersja AT89C51 programowana szeregowo za pomocą SPI
Mikrokontrolery rodziny MCS-51 kompatybilne z 8051 co do pinów, ale niezgodne na poziomie asemblera z rodziny Atmel AT89 AT90S44 - 4KB pamięci Flash, 256B pamięci EEPROM, 256B pamięci RAM AT90S8515 - 8KB pamięci Flash, 512B pamięci EEPROM, 512B pamięci RAM z rodziny Atmel AVR 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).
DQ80251 Polska firma Digital Core Design (DCD) wyprodukowała najszybszy na świecie mikroprocesor z rodziny 8051. DQ80251 w 2012 roku gdy ukazał się na rynku był 56,8 raza szybszy od konkurencji, jak również charakteryzuje się wyjątkowo niskim poborem mocy. W chwili obecnejczerwiec 2026 wg. informacji producenta procesor ten jest 75× szybszy od oryginalnego 80C51 i 6× szybszy od 80c251.
Uwagi
Przypisy
Linki zewnętrzne Mikrokontrolery rodziny 8051 firmy Microchip Technology Intel Small Device C Compiler (SDCC), darmowy kompilator C dla mikrokontrolerów Narzędzia programistyczne, w tym kompilator C dla rodziny 8051 firmy Keil Opis 8051 na Elportalu
Kategoria:Mikrokontrolery