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ę