1. Historia i znaczenie mikrokontrolera 8051
Mikrokontroler 8051 został opracowany przez firmę Intel na początku lat 80. XX wieku (rodzina MCS-51). Od tego czasu powstały setki kompatybilnych układów różnych producentów (m.in. Atmel/Microchip, NXP, Silicon Labs).
Dlaczego 8051 jest tak ważny, mimo że jest „stary” technologicznie?
- stał się klasycznym wzorcem architektury mikrokontrolera,
- jest prosty, a jednocześnie zawiera wszystkie kluczowe elementy: CPU, pamięć, porty, timery, przerwania, UART,
- nadal spotyka się go w urządzeniach przemysłowych i konsumenckich,
- jest idealny do nauki asemblera i systemów wbudowanych.
2. Mikrokontroler vs mikroprocesor
Zanim przejdziemy do szczegółów 8051, warto rozróżnić pojęcia mikroprocesor i mikrokontroler.
2.1. Mikroprocesor
- zawiera głównie jednostkę obliczeniową (CPU, ALU, rejestry, jednostkę sterującą),
- wymaga zewnętrznych układów: pamięci RAM, pamięci programu, układów I/O, timerów,
- często pracuje pod kontrolą systemu operacyjnego (np. Windows, Linux),
- stosowany w komputerach PC, laptopach, serwerach – „duże” systemy.
2.2. Mikrokontroler 8051
- „Komputer w jednym układzie scalonym” – CPU + pamięć + I/O + timery + przerwania,
- może działać bez systemu operacyjnego, wykonując pojedynczy program użytkownika,
- jest projektowany do sterowania konkretnymi urządzeniami (systemy wbudowane),
- ma mały pobór mocy i jest tani, co pozwala stosować go masowo w różnych urządzeniach.
3. Architektura 8051 – ogólny przegląd
8051 to 8-bitowy mikrokontroler o zmodyfikowanej architekturze Harvardzkiej: rozróżnia przestrzeń programu (kod) i danych, ale korzysta z jednego zewnętrznego adresu dla niektórych operacji. W praktyce dla początkującego oznacza to:
- osobna pamięć programu (ROM/Flash),
- osobna pamięć danych (wewnętrzna RAM + ewentualna zewnętrzna RAM),
- szereg wyspecjalizowanych rejestrów sterujących (SFR).
Opracowanie własne na podstawie dokumentacji producenta. Układ przedstawia strukturę wewnętrzną 8051: CPU, pamięć programu, pamięć danych, porty I/O, UART, timery, rejestry SFR oraz oscylator systemowy.
Najważniejsze bloki w architekturze 8051:
- CPU (ALU + jednostka sterująca) – wykonuje rozkazy, operacje na liczbach i bitach,
- pamięć danych (IRAM) – 128/256 bajtów wewnętrznej RAM, w tym rejestry R0–R7 i obszar bit-adresowalny,
- SFR (Special Function Registers) – rejestry specjalne sterujące portami, timerami, UART, przerwaniami,
- pamięć programu – wbudowana pamięć kodu (ROM/Flash),
- porty we/wy – P0, P1, P2, P3, każdy po 8 linii,
- timery/liczniki (T0, T1) – pomiary czasu, generowanie opóźnień, zliczanie impulsów,
- UART (port szeregowy) – komunikacja z komputerem / innymi układami,
- układ przerwań – reagowanie na zdarzenia (timery, wejścia zewnętrzne, komunikacja).
4. Pamięć mikrokontrolera 8051
W 8051 mamy kilka rodzajów pamięci, które warto rozróżniać już od początku:
- Pamięć programu (kod) – ROM/Flash, zwykle 4–64 KB, przechowuje instrukcje,
- Wewnętrzna RAM (IRAM) – 128 lub 256 bajtów na dane, stos, zmienne,
- SFR (Special Function Registers) – pamięć rejestrów specjalnych (adresy 80h–FFh),
- Obszar bit-adresowalny – część RAM/SFR, gdzie można operować pojedynczymi bitami,
- Zewnętrzna pamięć danych (XRAM) – do 64 kB, dostępna instrukcją MOVX (w niektórych układach).
4.1. Rejestry R0–R7 i banki rejestrów
Rejestry ogólnego przeznaczenia R0–R7 znajdują się w wewnętrznej RAM, ale 8051 posiada 4 banki rejestrów (0–3). Każdy bank to 8 bajtów, które mogą być używane jako R0–R7, wybierane przez bity RS0/RS1 w rejestrze PSW.
4.2. Najważniejsze rejestry specjalne (SFR)
- A (ACC) – akumulator, główny rejestr dla arytmetyki i logiki,
- B – używany głównie przy rozkazach MUL i DIV,
- DPTR – 16-bitowy rejestr adresowy, używany do adresowania pamięci zewnętrznej / tabel,
- SP (Stack Pointer) – wskaźnik stosu, domyślnie 07h,
- PSW (Program Status Word) – zawiera flagi (C, AC, OV) oraz wybór banku rejestrów,
- PC (Program Counter) – licznik rozkazów,
- TMOD, TCON – konfiguracja i sterowanie timerami,
- SCON, SBUF – konfiguracja i bufor transmisji szeregowej,
- IE, IP – włączanie i priorytety przerwań,
- P0, P1, P2, P3 – rejestry portów we/wy.
5. Porty we/wy (GPIO) w 8051
Klasyczny 8051 ma cztery 8-bitowe porty we/wy:
- Port 0 (P0.0–P0.7) – linie dwukierunkowe, mogą pełnić funkcję danych/adresu przy pamięci zewnętrznej,
- Port 1 (P1.0–P1.7) – prosty port we/wy, często wykorzystywany do LED, klawiszy, itp.,
- Port 2 (P2.0–P2.7) – górny bajt adresu przy pamięci zewnętrznej, może być zwykłym I/O,
- Port 3 (P3.0–P3.7) – piny I/O z funkcjami specjalnymi (RXD, TXD, INT0/1, T0/T1, WR/RD).
6. Timery/liczniki i przerwania
6.1. Timery/liczniki
8051 posiada co najmniej dwa timery/liczniki: Timer0 i Timer1. Mogą one pracować w kilku trybach (8-bit, 16-bit, auto-reload, tryb licznikowy). Umożliwia to:
- odmierzanie czasu (opóźnienia programowe),
- zliczanie impulsów zewnętrznych,
- generowanie okresowych przerwań.
6.2. Przerwania
Układ przerwań pozwala na reagowanie na zdarzenia sprzętowe bez ciągłego „pollingu” w pętli głównej programu. Klasyczny 8051 obsługuje m.in. przerwania:
- INT0, INT1 – zewnętrzne linie przerwań,
- Timer0, Timer1 – przerwania od zakończenia zliczania,
- UART – przerwania związane z transmisją szeregową.
Przerwania są włączane rejestrem IE (Interrupt Enable) i mogą mieć różne priorytety ustawiane w rejestrze IP.
7. Zastosowania mikrokontrolera 8051
W praktyce mikrokontrolery zgodne z 8051 są wykorzystywane m.in. w:
- sterownikach klawiatur, panelach HMI, prostych wyświetlaczach,
- układach automotive (starsze moduły sterujące),
- urządzeniach przemysłowych (proste sterowniki, liczniki, przekaźniki programowalne),
- sprzęcie RTV/AGD (zasilacze, kontrolery paneli sterujących),
- modułach komunikacyjnych, prostych systemach pomiarowych.
8. Symulator EdSim51 – gdzie będziemy ćwiczyć
W tym module nie potrzebujesz fizycznej płytki z mikrokontrolerem. Do nauki używamy symulatora EdSim51, który pozwala:
- obserwować rejestry, pamięć, porty w czasie rzeczywistym,
- sterować diodami LED, przyciskami, klawiaturą matrycową, wyświetlaczem 7-segmentowym,
- testować transmisję szeregową UART,
- uruchamiać i krokowo debugować programy w asemblerze 8051.
Instalacja i konfiguracja EdSim51 jest opisana w osobnej instrukcji: „Instrukcja instalacji emulatora” dostępnej w menu kursu.