8 2. Co jest w środku ?
Wewnętrzna lub zewnętrzna pamięć programu jest pamięcią typu ROM (Read Only Memory). Jej zawartość jest ustalana w trakcie produkcji mikrokontrolera. Takie rozwiązanie jest możliwe jedynie w przypadku długich, liczących co najmniej kilka tysięcy mikrokontrolerów z tym samym programem. Jeśli serie są krótsze, a w szczególności są to pojedyncze egzemplarze, prototypy, jako pamięci wykorzystuje się:
• pamięci HPROM, programowane elektrycznie ale kasowane optycznie przez naświetlanie promieniami UV (promieniowanie ultrafioletowe); wiele pamięci jednokrotnie programowanych (OTP) jest wykonywanych jako pamięci EPROM,
• pamięci flash ROM, programowane i kasowane elektrycznie, które są znacznie tańsze niż pamięci EPROM, a ich kasowanie trwa kilkanaście ms (kasowanie pamięci EPROM trwa zwykle kilka minut).
Oba typy pamięci mogą być pamięciami zarówno wewnętrznymi jak i zewnętrznymi.
Do przechowywania danych, które są zmieniane w trakcie wykonywania programu służą pamięci RAM (Random Access Memory). Wewnętrzna pamięć RAM w mikrokontrolerze 8051 liczy tylko 128 bajtów, a w mikrokontrolerze 8052 i nowszych zwykle 256 bajtów. Rozmiar zewnętrznej pamięci danych zależy tylko od potrzeb użytkownika ale nie może przekroczyć 64 KB(ajtów). Problem polega na tym, że do wymiany danych z zewnętrzną pamięcią RAM konstruktorzy mikrokontrolera przewidzieli tylko 2 rozkazy do zapisu danych i 2 rozkazy do ich odczytu. We wszystkich wymianach bierze udział wyłącznie jeden wyspecjalizowany wewnętrzny rejestr. Powoduje to znaczne spowolnienie wykonywanego programu. Dlatego jeśli czas wykonywania obliczeń ma być krótki, to do przechowywania danych należy wykorzystywać tylko wewnętrzną pamięć danych.
Magistrale (adresowa, danych i sterująca) występujące w mikrokontrolerach rodziny ’51 mają różną wielkość, w zależności od tego, czy dotyczą wnętrza mikrokontrolera, czy komunikują się z zewnętrznymi pamięciami (rysunek 2-1):
• magistrala adresowa:
—» jeśli współpracuje z wewnętrzną lub zewnętrzną pamięcią programu ROM oraz z zewnętrzną pamięcią danych RAM liczy 16 linii, co powoduje, że maksymalna wielkość tych pamięci ograniczona jest do 2,h= 64 KB(ajtów); pełny adres zawierają 2 bajty,
—> jeśli współpracuje z wewnętrzną pamięcią danych RAM i wewnętrznymi układami peryferyjnymi (liczniki, łącze szeregowe itp.) liczy tylko 8 linii; z tego powrodu wewnętrzna pamięć RAM ograniczona jest do 21~256 bajtów,
• wewnętrzną i zewmętrzną magistralę danych tworzy 8 linii; dane przesyłane sa wiec bajtowo.
• magistrala sterująca jest bardzo zróżnicowana. Liczba linii tworzących tę magistralę zależy od typu układu. Dla pamięci jest to 1 lub 2 linie, dla układu sterowania znacznie więcej, zależnie od typu mikrokontrolera (liczników, przerwań itp.).
Struktura wewnętrzna mikrokontrolera 8051 jest bardziej złożona niż przedstawiono to na rysunku 2-1. Złożoność jest efektem większej liczby wewnętrznych elementów niż udostępnionych użytkownikowi, programiście. Są to przede wszystkim dodatkowe rejestry wykorzystywane przez jednostkę a-rytmetyczno-logiczną w trakcie wykonywania niektórych wewnętrznych przesłań, bufory portów PO .. P3, układy korekcji stanu licznika rozkazów, rejestry dekodujące realizowane instrukcje itd. Schemat blokowy mikrokontrolera 8051 przedstawia rysunek 2-2.
Mikrokontroler 8051 oferowany jest przez wiele firm w obudowie z 40 wyprowadzeniami. Jeśli policzyć wszystkie elementy struktury wewnętrznej mikrokontrolera, które mikrokontroler wykorzystuje do komunikowania się z układami zewnętrznymi, tzn.:
• 8-bitową magistralę danych,
• 16-bitową magistralę adresową,
• linie sterujące dostępem do zewnętrznej pamięci programu (F.A, PSEN ) i zewnętrznej pamięci danych ( RD, WR ),
• cztery 8-bitowe porty pełniące rolę wejść lub wyjść cyfrowych (PO, .. , 1
P3),
wejście i wyjście układu transmisji szeregowej,
• po dwie linie sterujące pracą każdego z dwóch wewnętrznych liczników,
• dwa wejścia zewnętrznych przerwań,
• dwie linie do dołączenia rezonatora kwarcowego, jedna linia sprzęto
wego zerowania mikrokontrolera oraz dwa wyprowadzenia do dolą- j/ czenia zasilania mikrontrolera, —
to okaże się, że liczba wyprowadzeń mikrokontrolera jest znacznie mniejsza niż wymienione potrzeby. Takie rozwiązanie jest możliwe wskutek pełnienia wielu różnych funkcji przez jedno i to samo wyprowadzenie:
• porty PO i P2 służą do przesyłania adresów do zewnętrznej pamięci programu i danych,
• przez port PO przesyłane są dodatkowo wszystkie dane z/do zewnętrznej pamięci programu i danych,
• port P3 pełni rolę wejść wewnętrznych liczników, łącza szeregowego, wejść kontrolera przerwań oraz steruje kierunkiem przesyłem danych z/do zewnętrznej pamięci danych (linie RD , WR ).