Rejestry specjalne (SFR, Special Function Registers) to specjalne bajty, dzięki którym możemy sterować mikrokontrolerem. Wpisując do tych rejestrów odpowiednie dane możemy na przykład wybrać jeden z trybów pracy timera czy uruchomić bardzo ważny dla nas system przerwań. W tych rejestrach sprzęt umieszczony w naszym scalaku zapisuje także informacje o sobie. Odczytując odpowiednie pola możemy sprawdzić na przykład, czy nie nastąpiło przepełnienie po mnożeniu dwóch liczb.
Rejestry zajmują część pamięci RAM. Trzeba w związku z tym pamiętać, że niektóre pola są już zajęte i zapisanie do nich informacji może przypadkowo zmienić działanie naszego programu. Pozostałe wolne pola również nie powinny być używane, ponieważ w nowszych modelach mogą się w tych miejscach pojawić nowe rejestry. W przypadku, gy nasz stary program wpiszemy do takiego nowoczesnego uC, może się okazać, że program nie działa prawidłowo.
Poniżej znajduje się mapa pamięci z zestawieniem rejestrów SFR:
| Â | Adresowalne bitowo | Nieadresowalne bitowo | Â | ||||||
| F8h | Â | Â | Â | Â | Â | Â | Â | Â | FFh |
| F0h | B | Â | Â | Â | Â | Â | Â | Â | F7h |
| E8h | Â | Â | Â | Â | Â | Â | Â | Â | EFh |
| E0h | ACC | Â | Â | Â | Â | Â | Â | Â | E7h |
| D8h | Â | Â | Â | Â | Â | Â | Â | Â | DFh |
| D0h | PSW | Â | Â | Â | Â | Â | Â | Â | D7h |
| C8h | T2CON | Â | RCAP2L | RCAP2H | TL2 | TH2 | Â | Â | CFh |
| C0h | Â | Â | Â | Â | Â | Â | Â | Â | C7h |
| B8h | IP | Â | Â | Â | Â | Â | Â | Â | BFh |
| B0h | P3 | Â | Â | Â | Â | Â | Â | Â | B7h |
| A8h | IE | Â | Â | Â | Â | Â | Â | Â | AFh |
| A0h | P2 | Â | Â | Â | Â | Â | Â | Â | A7h |
| 98h | SCON | SBUF | Â | Â | Â | Â | Â | Â | 9Fh |
| 90h | P1 | Â | Â | Â | Â | Â | Â | Â | 97h |
| 88h | TCON | TMOD | TL0 | TL1 | TH0 | TH1 | AUXR | CKCON | 8Fh |
| 80h | P0 | SP | DPL | DPH | Â | Â | Â | PCON | 87h |
| Â | 0/8 | 1/9 | 2/A | 3/B | 4/C | 5/D | 6/E | 7/F | Â |
Klikając na nazwę rejestru można przeczytać jego dokładny opis. Opisy dodaję stopniowo, więc nie wszystkie pola mogą być uzupełnione.


