41
Mikrokontroler Intel 8051 dr inż. Wiesław Madej

Mikrokontroler Intel 8051 - Politechnika Koszalińskakscps.weii.tu.koszalin.pl/pliki/4142_Intel 8051.pdf · Mikrokontroler Intel 8051 •Wprowadzony na rynek w 1980 roku •Następca

Embed Size (px)

Citation preview

MikrokontrolerIntel 8051

dr inż. Wiesław Madej

Mikrokontroler Intel 8051

• Wprowadzony na rynek w 1980 roku

• Następca rodziny 8048

• Intel zakooczył produkcję w marcu 2006

• Obecnie produkowany przez różne firmy np. (Atmel, Analog Devices, Cypress, Maxim i inne)

Cechy charakterystyczne I’8051

• mikrokontroler 8-io bitowy (szyna danych 8bit, adresowa 16bit)

• architektura CISC

• możliwośd podłączenia zewnętrznej pamięci programu i/lub danych (64kB)

• rejestry konfiguracyjne (SFR)

Wewnętrzna pamięd danych (RAM)

• Dolny obszar pamięci RAM:

•4 banki rejestrów (00h – 1Fh)

•16 bajtów ogólnego zastosowania (20h–2Fh)

•pamięd ogólnego zastosowania (30h – 7Fh)

• Obszar rejestrów specjalnych (SFR) 80h-0FFh

• Górny obszar pamięci (tylko adresowanie

• pośrednie)

Organizacja pamięci RAM

Pamięć o adresach 80h – 0FFh jest jednoznacznie rozróżnialna dzięki różnemu rodzajowi adresowania

Mapa dolnego obszaru RAM

Po wyzerowaniukontrolera aktywnymbankiem rejestrów jest RB0

Stos w kontrolerach I‘8051

• umieszczony tylko w wewnętrznej pamięci danych

• położenie kooca stosu określa wskaźnik stosu SP (stack pointer)

• wykorzystywany do zapamiętywania adresów powrotów procedur oraz jako podręczna pamięd danych

Taktowanie mikrokontrolera

• 8051 posiada wbudowany oscylator

• Piny przeznaczone do podłączenia rezonatora są przeważnie oznaczane jako XTAL

• Istnieje możliwośd podłączenia zewnętrznego sygnału zegarowego

• Nowe wersje kontrolerów z rdzeniem ’51 mogą mied wbudowane dodatkowe układy pozwalające na zmianę częstotliwości taktowania podczas wykonywania programu (np. pętle synchronizacji fazowej PLL)

Zerowanie kontrolera I‘8051

• Zerowanie ma na celu wprowadzenie procesora w stanpoczątkowy pracy po włączeniu zasilania

• Główne zadania układu zerowania:

– Załadowanie licznika PC wartością 0000h

– Przyjecie przez wskaźnik stosu wartości 07h

– Rejestry wyjściowe portów (ale niekoniecznie wyprowadzenia) przyjmują wartośd 0FFh

– Rejestry peryferiów przyjmują takie wartości, aby układ peryferyjny pozostał nieaktywny

Zerowanie nie zmienia zawartości wewnętrznej pamięci danych (np. gdy zerujemy kontroler przy włączonym zasilaniu)

Porty mikrokontrolera• Komunikacja ze światem zewnętrznym• W standardowym 8051 są 4 porty ośmiobitowe:

P0,P1,P2,P3 (są także zmodyfikowane wersje kontrolerów o dwóch portach (np.P3 i P1)

• Porty P0 i P2 są predefiniowane do obsługi zewnętrznych pamięci: ROM i RAM

• Funkcje tzw. alternatywne portów: /WR, /RD, szyna danych P0 i szyna adresowa P0 P2

• Linie portów typu open collector – wejścia komparatora analogowego

• Obecnie porty służą także do programowania wewnętrznej pamięci programu (EEPROM, FLASH)

Układy peryferyjne I’8051

• Liczniki T0 i T1• Interfejs szeregowy UART (Universal Asynchronous

Receiver Trasmitter)• Komparatory analogowe• Liczniki czuwające (watchdog)• Nowsze kontrolery maja wewnętrzna pamięd danych

EEPROM, a także mogą byd wyposażone w sprzętowe interfejsy szeregowe np.: I2C, SPI, CAN czy nawet USB; ponadto w zaawansowanych konstrukcjach można spotkad wielokanałowe przetworniki A/C, multipleksery, czujniki temperatury, modulatory PWM

Liczniki T0 i T1

• Wybór trybu pracy i sterowanie za pomocą rejestrów TCON i TMOD

• Praca jako licznik lub czasomierz

• Max. częstotliwośd pracy w trybie licznika (zliczanie impulsów zewnętrznych) wynosi 1/24 częstotliwości zegarowej (detekcja opadającego zbocza)

• Cztery tryby pracy

Interfejs szeregowy - UART

• Cztery tryby pracy

• Przy pracy asynchronicznej transmisja fullduplex

• Pojemnośd bufora – 1 bajt (SBUF)

• Dwa niezależne rejestry SBUF:

– do zapisu danych (nadawanie)

– do odbioru danych

• Sterowanie łączem – rejestr SCON

Interfejs szeregowy – tryb 0

• Stała prędkośd transmisji równa 1/12 częstotliwości zegarowej kontrolera

• Taktowanie za pomocą linii TxD

• Nadawanie i odbiór danych linia RxD

• Nadawanie inicjalizowane zapisem bajtu do rejestru SBUF

• Bity sygnalizujące koniec nadawania (TI) i koniec odbioru (RI) musza byd zerowane programowo.

Interfejs szeregowy – tryb 1

• Transmisja asynchroniczna

• Nadawanie danych inicjalizowane zapisem do rejestru SBUF

• Odbiór danych wyzwalany opadającym zboczem linii RxD

• Warunkiem odebrania ramki danych jest RI=0 i albo SM2=0, albo ważny(=1) bit stopu (jeśli SM2=1,to bajt będzie odebrany, gdy będzie ważny (=1) bit stopu). Odebrany bit stopu jest przesyłany do bitu RB8 (SCON)

Interfejs szeregowy – tryb 2

• Podobny do trybu 1,ale jest kilka różnic:

– Za bitem D7 (przed bitem stopu) jest nadawany (odbierany) bit TB8 (RB8) – 9 bit danych

– Przy odbiorze ramki danych do RB8 jest wpisywany 9 bit, a nie bit stopu

– Warunkiem odbioru jest RI=0 i albo SM2=0, albo 9 bit danych równy 0 (gdy SM2=1, to dane są odbierane tylko wtedy, gdy 9 bit danych jest równy 1).

– Inne dostępne szybkości transmisji

Interfejs szeregowy – tryb 3

• Prawie identyczny z trybem 2 pracy UARTu

• Jedyna różnica polega na innej prędkości transmisji

Licznik czuwający - watchdog

• Przepełnienie licznika powoduje wyzerowanie kontrolera

• Pozwala na prawidłowa prace systemu nawet po zawieszeniu programu (reset)

• Projektant używając watchdog’a musi cyklicznie programowo (przed jego przepełnieniem) go zerowad

• Zależnie od typu układu różne sterowanie licznikiem watchdog (rejestry WCON lub WMCON)

• W trybie (obniżonego poboru mocy) zamrożenia (Power Down) watchdog zatrzymuje sie

Watchdog – zasada działania(watchdog włączony)

Układ przerwao w I’8051

• Szybkie reagowanie na zdarzenia w systemie

• Szybsze oprogramowanie (nie trzeba cyklicznie sprawdzad np. układów peryferyjnych)

• Dostępne są także przerwania zewnętrzne

• Po zakooczeniu obsługi przerwania kontroler powraca do wykonywania programu głównego od miejsca, gdzie został zawieszony (program)

Układ przerwao c.d.

W 8051 o wejściu do procedury obsługi przerwaniadecydują m.in. bity pochodzące od układówperyferyjnych (oprócz komparatora) – tzw. wskaźnikiprzerwania, oraz bity określające, czy dane przerwaniejest aktywne.

Ponadto można zablokowad cały układ przerwaojednym bitem.

Układ przerwao c.d.Przerwania występujące w kontrolerach I‘8051

Układ przerwao - priorytetyW przypadku zgłoszenia przerwania przez więcej ni 1 układ, układprzerwao musi rozstrzygnąd, które peryferia najpierw obsłużyd. Służydo tego celu priorytet przerwao, tzn. w wymienionej sytuacji najpierwzostanie obsłużone przerwanie o wyższym priorytecie. Jeśli podczasobsługi przerwania przyjdzie przerwanie o priorytecie jeszcze wyższym,to układ przerwao przejdzie do obsługi nowego przerwania (o ile jestustawiony bit zezwolenia), a dopiero potem dokooczy obsługępoprzedniego przerwania.

Priorytet poszczególnych przerwao można zmienid, służy do tego celurejestr IP. Naturalny priorytet przerwao przedstawia sie następująco:

Przerwania zewnętrzneW mikrokontrolerze I’8051 są dostępne dwa źródła przerwao

zewnętrznych:- przerwanie /INT0- przerwanie /INT1Oba przerwania mogą zostad aktywowane (zgłoszone), jeśli nastąpi jedna z

dwóch sytuacji:- na wejściu pojawił sie stan niski- na wejściu zostało wykryte zbocze opadające sygnału (w jednym cyklu

masz. jest stan wysoki, a w następnym cyklu masz. jest stan niski.W przypadku przerwao wyzwalanych poziomem stan niski musi zaniknądprzed powrotem z procedury obsługi przerwania, ponieważ układ przerwaomoże uznad, że zostało zgłoszone nowe przerwanie.Przy wyzwalaniu poziomem, wskaźniki przerwao są sterowanebezpośrednio stanem wejśd (co oznacza, że jedynym sposobemprogramowego wyzwolenia przerwania jest zapis zera do przerzutnikarejestru portu).

Obsługa przerwao

Jeśli układ przerwao wykryje, że jakiś wskaźnik przerwania jestustawiony, a bit zezwalający na przerwanie jest aktywny (bitglobalnego zezwolenia też), to zostanie sprzętowo wykonanainstrukcja dalekiego wywołania procedury. Może jednak tonastąpid później. Bedzie tak, gdy:- Jest wykonywana procedura obsługi przerwania o takim

samym lub wyższym priorytecie- Bieżąca instrukcja nie zdążyła się jeszcze wykonad- wykonywana jest instrukcja RETI (powrót z obsługi przerw.) lub

inna modyfikująca bity priorytetu lub bity zezwoleo naprzerwanie

Na koocu procedury należy umieścid rozkaz RETI.

Zmniejszenie poboru mocy

Są dostępne dwa tryby zmniejszonego poboru mocy:

- tryb uśpienia (Idle)

- tryb zamrożenia (Power Down)

Tryb „Idle”

• Zablokowanie sygnału taktującego CPU

• Zawartośd RAM i SFR jest podtrzymywana

• Linie portów utrzymują stan jaki miały w momencie wejścia do trybu Idle

• Funkcje alternatywne portów są aktywne

• Nie są wyłączone układy peryferyjne

• Wyjście z trybu Idle: poprzez wyzerowanie lub przerwanie

• Do ustawienia trybu służy bit IDL (PCON)

Tryb „Power Down”

• Zatrzymanie generatora -> wstrzymanie wszystkich układów peryferyjnych

• Zawartośd RAM i SFR jest podtrzymana

• Można obniżyd napięcie zasilania nawet do 2V

• Wejście w tryb po ustawieniu bitu PD (PCON)

• Praktycznie można opuścid ten tryb wykonując zerowanie kontrolera

• Najmniejszy pobór prądu – około 100uA

Rejestry specjalne SFR

• Umieszczone w wewnętrznej pamięci RAM 80h-0FFh

• Za pomocą rejestrów SFR można sterowad pracą wszystkich układów peryferyjnych

• Zazwyczaj znaczna cześd pamięci w bloku SFR nie jest wykorzystana, ale nie można jej wykorzystad jako normalnej pamięci

• Rejestry o adresach podzielnych przez 8 to rejestry o możliwości pracy na bitach

Najważniejsze rejestry SFR

• Akumulator ACC 0E0h

• Akumulator pomocniczy B 0F0h

• DPH 83h

• DPL 82h

• IE - rejestr zezwoleo na przerwania 0A8h

• IP – rejestr priorytetów przerwao 0B8h

• P0, P1, P2, P3 – rejestry portów

• PCON – tryby zmniejszonego poboru mocy 87h

Najważniejsze rejestry SFR – c.d.

• PSW - rejestr statusowy 0D0h• SBUF - bufor UART’u 99h• SCON - sterowanie UART’em 98h• SP - wskaźnik stosu 81h• TCON - sterowanie liczników T0i T1 88h• TH0 8Ch• TH1 8Dh• TL0 8Ah• TL1 8Bh

Najważniejsze rejestry SFR – c.d.

• TMOD - steruje trybami pracy liczników T0 i T1 89h

• WCON - licznik watchdog’a 96h

• WMCON - licznik watchdog’a i pamięci danych EEPROM 96h

Tryby adresowania w I‘8051

• Rejestrowe

• Bezpośrednie

• Natychmiastowe

• Pośrednie zawartością rejestru

• Pośrednie sumą zawartości rejestru bazowego i indeksowego

Tryby adresowania w I’8051 – c.d.

Adresowanie rejestrowe – operandem instrukcji jest jeden zrejestrów R0 ..R7 z aktywnego banku rejestrów, akumulator ,rejestr B lub wskaźnik danych DPTR

Adresowanie bezpośrednie – operand jest jawnie podanym 8 –bitowym adresem rejestru SFR, rejestru dolnego obszaru RAM lubbitu adresowalnego bezpośrednio

Adresowanie natychmiastowe – operandem jest stała (8 lub 16bitowa) umieszczona w kodzie programu (pamięd ROM)

Adresowanie pośrednie – określenie adresu za pomocą zawartościR0 lub R1 (z aktywnego banku rejestrów) – odwołanie doprzestrzeni 256 bajtów

Adresowanie sumą zawartości rejestru bazowego i indeksowego –służy do kopiowania bajtu z pamięci programu.

Instrukcje I’8051

• Lista instrukcji zawiera 111 rozkazów

• Instrukcje mogą modyfikowad wskaźniki stanu CPU:P, CY, AC, OV

• Rozkazy mogą wykonywad operacje arytmetyczne,logiczne, skoków bezwarunkowych i warunkowych,obsługi zewnętrznej pamięci RAM, obsługa pamięciprogramu

Lista rozkazów I’8051

Oznaczenia stosowane przy skróconym opisie instrukcji:• Rr - rejestry R0-R7• direct - obszar wewnętrznej pamięci danych (128B) i rejestry SFR• @Ri - adres z rejestrów indeksowych R0 lub R1• bit - bity pamięci danych i SFR adresowalne bezpośrednio• #data - stała 8-bitowa.• #data16 - stała 16-bitowa.• addr16 - adres 16-bitowy (obszar 64kB).• addr11 - adres 11-bitowy (w stronie 2kB).• rel - adres względny -128...+127• /bit - negacja bitu• (n) - rozkaz wykonywany w n cyklach maszynowych. Brak oznaczenia oznacza

1 cykl

Lista rozkazów I’8051 c.d.

• Operacje arytmetyczne:• ADD - dodawanie.

Działanie: A=A+dana.Dozwolone argumenty: A, Rr A, direct A, @Ri A, #dataModyfikowane znaczniki: C, AC, OV.

• ADDC - dodawanie z przeniesieniem.Działanie: A=A+dana+C.Dozwolone argumenty: A, Rr A, direct A, @Ri A, #dataModyfikowane znaczniki: C, AC, OV.

• SUBB - odejmowanie z pożyczką.Działanie: A=A-dana-C.Dozwolone argumenty: A, Rr A, direct A, @Ri A, #dataModyfikowane znaczniki: C, AC, OV.

Lista rozkazów I’8051 c.d.

Operacje logiczne:• ANL - iloczyn logiczny AND.

Działanie: wykonuje logiczny iloczyn na odpowiednich bitach argumentów, wynik zapisuje do pierwszego argumentu.Dozwolone argumenty:A, Rr A, direct A, @Ri A, #data direct, A direct, #data(2)

• ORL - suma logiczna OR.Działanie: wykonuje sume logiczna odpowiednich bitów argumentów, wynik zapisuje do pierwszego argumentu.Dozwolone argumenty: A, Rr A, direct A, @Ri A, #data direct, A direct, #data(2)

• XRL - suma mod 2 (XOR).Działanie: wykonuje sumowanie mod 2 odpowiednich bitów argumentu, wynik zapisuje do pierwszego z nich.Dozwolone argumenty: A, Rr A, direct A, @Ri A, #data direct, A direct, #data(2)

Podsumowanie

• Mikrokontrolery Intel 8051 (MCS-51) są rozbudowanymsystemem mikroprocesorowym znajdującym się wjednym układzie scalonym. Są wykonane wzmodyfikowanej architekturze harwardzkiej. Należą dogrupy mikrokontrolerów CISC.

• Oprócz możliwości programowania mikrokontrolera w asemblerze rodziny MCS-51, istnieje również możliwośd programowania w kompilowanych językach wysokiego poziomu – najczęściej wykorzystywany do tego celu jest język C.

Dziękuję za uwagę