Mikrokontroler Intel 8051

Transkrypt

Mikrokontroler Intel 8051
Mikrokontroler
Intel 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 wyzerowaniu
kontrolera aktywnym
bankiem 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 stan
począ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 przerwania
decydują m.in. bity pochodzące od układów
peryferyjnych (oprócz komparatora) – tzw. wskaźniki
przerwania, oraz bity określające, czy dane przerwanie
jest aktywne.
Ponadto można zablokowad cały układ przerwao
jednym bitem.
Układ przerwao c.d.
Przerwania występujące w kontrolerach I‘8051
Układ przerwao - priorytety
W przypadku zgłoszenia przerwania przez więcej ni 1 układ, układ
przerwao musi rozstrzygnąd, które peryferia najpierw obsłużyd. Służy
do tego celu priorytet przerwao, tzn. w wymienionej sytuacji najpierw
zostanie obsłużone przerwanie o wyższym priorytecie. Jeśli podczas
obsługi przerwania przyjdzie przerwanie o priorytecie jeszcze wyższym,
to układ przerwao przejdzie do obsługi nowego przerwania (o ile jest
ustawiony bit zezwolenia), a dopiero potem dokooczy obsługę
poprzedniego przerwania.
Priorytet poszczególnych przerwao można zmienid, służy do tego celu
rejestr IP. Naturalny priorytet przerwao przedstawia sie następująco:
Przerwania zewnętrzne
W mikrokontrolerze I’8051 są dostępne dwa źródła przerwao
zewnętrznych:
- przerwanie /INT0
- przerwanie /INT1
Oba 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ąd
przed powrotem z procedury obsługi przerwania, ponieważ układ przerwao
może uznad, że zostało zgłoszone nowe przerwanie.
Przy wyzwalaniu poziomem, wskaźniki przerwao są sterowane
bezpośrednio stanem wejśd (co oznacza, że jedynym sposobem
programowego wyzwolenia przerwania jest zapis zera do przerzutnika
rejestru portu).
Obsługa przerwao
Jeśli układ przerwao wykryje, że jakiś wskaźnik przerwania jest
ustawiony, a bit zezwalający na przerwanie jest aktywny (bit
globalnego zezwolenia też), to zostanie sprzętowo wykonana
instrukcja dalekiego wywołania procedury. Może jednak to
nastą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 na
przerwanie
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 z
rejestró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 lub
bitu adresowalnego bezpośrednio
Adresowanie natychmiastowe – operandem jest stała (8 lub 16
bitowa) umieszczona w kodzie programu (pamięd ROM)
Adresowanie pośrednie – określenie adresu za pomocą zawartości
R0 lub R1 (z aktywnego banku rejestrów) – odwołanie do
przestrzeni 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ęci
programu
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, #data
Modyfikowane znaczniki: C, AC, OV.
• ADDC - dodawanie z przeniesieniem.
Działanie: A=A+dana+C.
Dozwolone argumenty: A, Rr A, direct A, @Ri A, #data
Modyfikowane znaczniki: C, AC, OV.
• SUBB - odejmowanie z pożyczką.
Działanie: A=A-dana-C.
Dozwolone argumenty: A, Rr A, direct A, @Ri A, #data
Modyfikowane 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ą rozbudowanym
systemem mikroprocesorowym znajdującym się w
jednym układzie scalonym. Są wykonane w
zmodyfikowanej architekturze harwardzkiej. Należą do
grupy 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ę

Podobne dokumenty