12 2. Co jest w środku ?
—> próbie dzielenia przez zero,
—> parzystej liczbie jedynek w akumulatora,
—> wyborze grupy dostępnych rejestrów wewnętrznych.
• w operacjach mnożenia i dzielenia jeden z argumentów przechowywany jest w akumulatorze, a drugi w rejestrze B Podobnie wynik wykonanej operacji. Jeśli nie przewiduje się użycia tych rozkazów, to rejestr B może być wykorzystany do innych celów.
W czasie wykonywania programu pobierane są dane lub stałe zapisane w pamięci programu (ROM). Przechowywanie dużej liczby zmiennych, np. wyników obliczeń, pomiarów lub transmitowanych danych, wymaga dołączenia do mikrokontrolera zewnętrznej pamięci danych (RAM), jeśli wewnętrzna pamięć jest za mała. Do adresowania obu typów pamięci wykorzystywany jest 16-bitowy wskaźnikowy rejestr danych DPTR (Data Pointer Register).
Jak w każdym komputerze także i w mikrokontrolerach rodziny 51 do wywoływania podprogramów, przechowywania argumentów przenoszonych z jednego podprogramu przy przejściu do wykonywania innego podprogramu tworzony jest stosJ&tosem jest wydzielony fragment wewnętrznej pamięci RAM adresowany wskaźnikiem stosu SP (Stack Pointer). Kolejność odczytu bajtów ze stosu jest odwrotna w stosunku do kolejności ich zapisywania, zgodnie z regułą pamięci UFO (Last In First Out). Bezpośrednio dostępne są tylko bajty adresowane przez wskaźnik stosu SP znajdujące się na wierzchołku stosu, a nie w jego wnętrzu. Sytuację tę można porównać do stery książek ułożonych jedna na drugiej. Dokładając kolejną książkę umieszcza się ją na szczycie stery. Zabierając książkę ze sterty zabiera się książkę leżącą na jej szczycie. Książki leżące we wnętrzu sterty nie są dostępne.
Wszystkie rejestry procesora , poza licznikiem rozkazów PC i wskaźnikowym rejestrem danych DPTRV są rejestrami 8-bitowymi. Umieszczone są w wewnętrznej przestrzeni adresowej co znacznie upraszcza przesyłanie danych, zarówno wewnątrz mikrokontrolera jak i na zewnątrz oraz ułatwia programowanie takich elementów jak liczniki, układ transmisji szeregowej itp.
Rejestry specjalne SFR (Special Function Register) mają szczególne znaczenie (na rysunku 2-2 zostały zacieniowane). Każdy element struktury wewnętrznej ma swoją reprezentację w postaci 1 -bajtowego lub 2-bajtowego rejestru. Wpisanie informacji do tych rejestrów inicjuje działanie poszczególnych bloków funkcjonalnych mikrokontrolera. Dla przykładu wpisanie dowolnej wartości do rejestru SBUF rozpoczyna transmisję szeregową, a wpisanie jedynki logicznej na pozycję czwartego bitu w rejestrze TCON uruchamia licznik TO itd. Rejestry specjalne są pomostem między programem, a wszystkimi urządzeniami peryferyjnymi mikrokontrolera (licznikami, portami równoległymi i szeregowym, strukturą przerwań itp.).
Mikrokontroler 8051 zawiera następujące wewnętrzne układy peryferyjne mające swoje odzwierciedlenie w rejestrach specjalnych:
• dwa 16-bitowe liczniki TO i Tl,
• układ portu szeregowego z programowaną szybkością transmisji, synchroniczną lub asynchroniczną,
• kontroler przerwań reagujący na dwa sygnały zewnętrzne i trzy sygnały wewnętrzne wytwarzane przy przepełnieniu licznika TO i Tl, zakończenia nadawania lub odbioru danych łączem szeregowym,
• układ redukcji mocy pobieranej przez mikrokontroler, co jest szczególnie istotne przy konstrukcji urządzeń zasilanych bateryjnie.
Pytania i problemy
1. 1 KB to ile bajtów ?
2. Z ilu linii złożona jest magistrala danych i adresowa w mikrokontrolerze 8051 ?
3. Czym różni się pamięć EPROM i flash ROM ?
4. Czy do mikrokontrolera 8051 można dołączyć 128 KBajtową zewnętrzną pamięć programu lub danych ?
5. Patrząc na rysunek 2-2 wymienić przeznaczenie portu PO, P2 i P3.
6. Jaką rolę pełni licznik rozkazów PC ?
7. Do czego służy jednostka arytmetyczno-logiczna ?
8. Jak określany jest status mikrokontrolera ?
9. Czy stos można umieścić w zewnętrznej pamięci RAM ?
10. Po co w mikrokontrolerze rejestry specjalne ?
11. Które rejestry mikrokontrolera 8051 są 16-bitowe ?
12. Czy można bezpośrednio do wyprowadzeń mikrokontrolera 8051 dołączyć rezonator kwarcowy lub ceramiczny ?