🏗️ Budowa mikrokontrolera 8051

Rejestry, pamięć, porty i cykl maszynowy

1. Co dokładnie oznacza „budowa mikrokontrolera”?

W tej lekcji patrzymy na 8051 jak na „mały komputer”, którego działanie da się opisać w czterech obszarach:

Cel praktyczny: po tej lekcji będziesz rozumiał, co obserwujesz w EdSim51: dlaczego zmienia się PC, gdzie zapisuje się stos, czemu port 0 zachowuje się inaczej niż port 1, i skąd wziąć „czas” instrukcji.

2. Rejestry 8051 – podział i rola

W 8051 spotkasz dwa „rodzaje” rejestrów:

2.1. Najważniejsze rejestry CPU

Rejestr Co robi? W praktyce (co zobaczysz w EdSim51)
ACC (A) Akumulator – centrum działań ALU (dodawanie, AND, OR, przesunięcia, porównania). Po większości operacji arytmetycznych/logicznych wynik „ląduje” w A.
B Rejestr pomocniczy – głównie dla MUL AB i DIV AB. W mnożeniu i dzieleniu A i B współpracują jako para.
DPTR 16-bitowy wskaźnik adresu (DPL/DPH). Używany m.in. do tabel w pamięci programu i pamięci zewnętrznej. Gdy program korzysta z tablic (np. kodów segmentów, znaków LCD), DPTR zwykle wskazuje kolejne elementy.
PSW Słowo stanu programu – flagi (np. C, OV) oraz wybór banku rejestrów. Po operacjach może zmieniać się flaga przeniesienia C; bank rejestrów wpływa na to, „które R0–R7 są aktywne”.
SP Wskaźnik stosu (Stack Pointer) – gdzie zapisywane są adresy powrotu, rejestry, dane tymczasowe. Przy CALL i przerwaniach SP rośnie; RET i powrót z przerwania go zmniejsza.
PC Program Counter – licznik rozkazów, wskazuje następną instrukcję do wykonania w pamięci programu. Przy pracy krokowej zobaczysz, jak PC przeskakuje po kodzie; przy skokach i wywołaniach zmienia się skokowo.
Uwaga: w 8051 stos jest w RAM (wewnętrznej IRAM), a nie w osobnej pamięci. Jeśli „zrobisz za dużo PUSH/CALL” w małej pamięci RAM – możesz nadpisać zmienne.

2.2. SFR – rejestry specjalne (sterowanie sprzętem)

SFR to rejestry w górnej części przestrzeni adresowej (typowo 80h–FFh), które sterują peryferiami. Najczęściej spotykane:

Myślenie „systemowe”: jeśli w 8051 chcesz sterować sprzętem (LED, przyciski, UART), to w praktyce oznacza to: czytaj/zapisuj odpowiednie SFR.

3. Porty I/O w 8051 – co jest „specjalnego”?

Porty 8051 to nie tylko „8 pinów”. Każdy port ma wewnętrzną logikę (latch) i tranzystory, a niektóre porty pełnią także funkcje magistrali zewnętrznej (adres/dane).

3.1. Obraz 1 – struktura wewnętrzna portu

Wewnętrzna struktura portów 8051
Wewnętrzna struktura portów I/O w 8051

3.2. Jak działa zapis na port (wyjście)?

Gdy wykonujesz instrukcję typu MOV P1, #0FFh, CPU zapisuje bajt do rejestru portu (SFR). To ustawia stan „latcha” – czyli pamięci, która trzyma informację, jaki stan ma być wystawiony na pinach.

3.3. Jak działa odczyt z portu (wejście)?

Przy odczycie (np. MOV A, P1) w 8051 ważne jest, że:

Praktyczna reguła (na start): jeśli chcesz czytać przycisk na porcie, ustaw ten bit na 1 (np. SETB P1.0) i dopiero czytaj.

3.4. Port 0 (P0) – dlaczego jest inny?

Port 0 w klasycznym 8051 pełni rolę multipleksowanej magistrali adres/dane dla pamięci zewnętrznej. Z tego powodu:

4. Port 3 – piny z funkcjami specjalnymi

Port 3 jest wyjątkowy, bo jego piny mają „drugie życie”: obsługują UART, przerwania zewnętrzne, timery jako liczniki oraz sygnały dostępu do pamięci zewnętrznej.

Port 3 – funkcje alternatywne
Port 3 – funkcje alternatywne
Uwaga praktyczna: jeśli włączysz peryferium (np. UART), piny portu 3 mogą przestać działać jak zwykły GPIO – albo będą działać „dziwnie”. To częsta przyczyna błędów w pierwszych projektach.

5. Cykl maszynowy 8051 – skąd bierze się „czas instrukcji”?

Mikrokontroler wykonuje instrukcje w rytmie zegara. Jednak nie każda instrukcja trwa 1 takt. W 8051 wygodnie myśli się o czasie przez pojęcie cyklu maszynowego.

5.1. Zegar, takt i cykl

Klasyczna zasada 8051: 1 cykl maszynowy = 12 taktów zegara.
Przykład: kwarc 12 MHz → 1 takt = 1/12 MHz, a 1 cykl maszynowy ≈ 1 µs.

5.2. Obraz 3 – cykl maszynowy (fazy)

Cykl maszynowy 8051
Cykl maszynowy mikrokontrolera 8051

5.3. Ile trwa instrukcja?

Instrukcje w 8051 mogą trwać różnie (np. 1, 2, czasem więcej cykli maszynowych) – zależnie od:

Na starcie wystarczy Ci zasada: czas programu = (liczba cykli instrukcji) × (czas cyklu maszynowego).

6. Co się dzieje, gdy CPU wykonuje instrukcję?

W uproszczeniu, każda instrukcja to sekwencja kroków:

  1. PC wskazuje adres następnej instrukcji w pamięci programu.
  2. CPU pobiera bajt/bajty instrukcji (opcode i ewentualne argumenty).
  3. CPU dekoduje rozkaz: co zrobić i skąd wziąć dane.
  4. Wykonuje operację (np. w ALU) i zapisuje wynik do rejestru/pamięci/portu.
  5. PC jest aktualizowany (zwykle +1/+2/+3, a przy skoku na nowy adres).

6.1. Obraz 4 – ścieżka danych (PC → pamięć → ALU → wynik)

Wykonanie instrukcji w 8051
Wykonanie instrukcji w 8051 – schemat uproszczony

6.2. Mini-przykład myślowy

Rozważ instrukcję: INC P1 (zwiększ wartość rejestru portu 1 o 1).

Dlaczego to ważne? Bo dzięki temu rozumiesz, że „port” to rejestr w środku, a piny są skutkiem tego, co jest w tym rejestrze i jak zbudowany jest dany port.

7. Szybka ściąga – co warto zapamiętać po tej lekcji