20
A&Q PYTANIA I ODPOWIEDZI Z MIKROKONTROLERÓW ZSP4 2012

A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

A&Q

PYTANIA I ODPOWIEDZI Z MIKROKONTROLERÓW

KŁ ZSP4 2012

Page 2: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

Czym jest mikrokontroler ? Mikrokontrolery są układami sekwencyjnymi, synchronicznymi, tzn. wszystkie operacje wykonywane przez układy

procesora odbywają się w określonej kolejności i w ściśle określonych momentach czasowych. Dlatego muszą

współpracować z generatorami impulsów zegarowych. Układy mikroprocesorowe korzystają najczęściej z generatorów

zewnętrznych. Natomiast mikrokontrolery mają wewnętrzny generator, do którego dołącza się z zewnątrz albo tylko sam

rezonator kwarcowy lub ceramiczny oraz dodatkowo dwa kondensatory, ułatwiające wzbudzenie się generatora na

pożądanej częstotliwości.

W większości mikrokontrolerów praca generatora może być zatrzymana odpowiednim rozkazem, co powoduje

zatrzymanie działania wszystkich elementów mikrokontrolera. Ma to na celu zredukowanie do minimum prądu zasilania,

np. w momencie awarii sieci zasilającej.

momentu osiągnięcia założonej częstotliwości. Czas ten wynosi na ogół około 10 ms.

Ponieważ po włączeniu zasilania układy wewnętrzne mikrokontrolera przyjmują stan dowolny, dlatego musi istnieć

możliwość wymuszenia na mikroprocesorze powtarzalnych stanów początkowych wszystkich jego rejestrów. W

komputerach służy do tego przycisk RESET. Mikroprocesory posiadają wejście (RST), na które jeżeli poda się odpowiedni

sygnał, to nastąpi wymuszenie stanów początkowych rejestrów wewnętrznych. Ponieważ stan początkowy procesora musi

być ustalony po włączeniu zasilania, to do tego wejścia dołącza się układ czasowy RC, który wymusza, na wymagany

odcinek czasu, sygnał zerujący. W większości mikrokontrolerów, np. w mikrokontrolerach rodziny '51 wykonanych w

technologii CMOS rezystor jest umieszczony wewnątrz układu. Sygnałem tym, w zależności od typu mikrokontrolera

może być poziom zera logicznego (masa układu), jak na przykład w mikrokontrolerach 80C515 lub poziom jedynki

logicznej (zasilanie) jak w mikrokontrolerach 8051.

W większości układów mikroprocesorowych stosuje się przełączniki, dołączone do linii RST, do ręcznego zerowania

procesorów. Daje to możliwość uruchomienia od początku programu procesora, np. w przypadku testowania lub

zawieszania się programu procesora.

Podstawową jednostką określającą czas wykonywania instrukcji jest cykl maszynowy. Dla rodziny mikrokontrolerów

'51 składa się on z sześciu stanów, oznaczonych od S1 do S6, z których każdy dzieli się na dwie fazy P1 i P2. Czas trwania

jednej fazy jest równy okresowi oscylatora. Wynika stąd, że czas trwania cyklu maszynowego jest 12 razy dłuższy od

okresu oscylatora.

W każdym stanie cyklu maszynowego są realizowane pewne podstawowe procedury związane z wykonywaniem

rozkazów.

Rozkazy są pobierane z pamięci wewnętrznej lub zewnętrznej mikrokontrolera spod adresu wskazywanego przez licznik

rozkazów (PC).

Rozkazy mogą być jedno lub wielobajtowe, a czas ich wykonywania może trwać jeden lub kilka cykli maszynowych. W

rodzinie '51 występują rozkazy jedno, dwu i trójbajtowe, które są wykonywane w jednym, dwóch lub czterech cyklach

maszynowych.

Pobranie pierwszego bajtu rozkazu odbywa się zawsze w takcie S1.

1. Wymień najbardziej znanych producentów mikrokontrolerów. - Microchip, ze swoją rodziną: jednoukładowców” PIC...

- Motorola, lansująca układy 8, 16 i 32-bitowych mikrokontrolerów jednoukładowych

- Intel, produkujący bodaj najbardziej popularne procesory serii 8051...

- Zilog, producent nowoczesnych kontrolerów jednoukładowych – następców poczciwego Z80 (wykorzystywanego w

produkcji sędziwego ZX81, ZX Spectrum)

- SGS-Thompson z rodziną ST62.

- Philips,

- Siemesa

- Dallas –

- Atmel,

2. Ile wyprowadzeń liczy układ 8051 i które z nich pełnią role portów? Wszystkich końcówek jest 40

Końcówki 1..8 (Port P1)

Końcówki 21..28 (Port P2)

Końcówki o numerach 10...17(Port P3)

Końcówki o numerach 32..39 (Port P0)

Page 3: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

3. Jakie funkcje pełni port P0 i czym się różni od P1 i P2? Podstawowe funkcje portu jako dwukierunkowej bramy do wymiany danych są takie same jak w przypadku portów P1 i

P2. Zasadniczą różnicą jest jednak zwiększona obciążalność (do 8 wejść TTL) tego portu oraz fakt nie posiadanie

wbudowanych rezystorów podciągających końcówki portu do plusa zasilania w przypadku odczytu.

Dlatego przy projektowaniu dowolnych układów wyjściowych dołączanych do tego portu należy uwzględnić wspomniane

wartości tak, aby np. odpowiednio spolaryzować bazy tranzystorów.

Drugą bardzo ważną rolą, jaką pełni P0, jest funkcja multipleksowanej magistrali danych (8-bitów:D7...D0) i młodszej

części adresu (A7...A0). multipleksowanej w praktyce znaczy “przełączalnej”, czyli raz na końcówkach portu P0 procesor

może wystawić bajt danych (np. do zapisu do wewnętrznej pamięci danych), w innym przypadku adres, w celu wybrania

potrzebnej komórki z pamięci SRAM, do której ma być zapisana.

4. Jakie funkcje pełni port P1 i P2? Port P1 może pełnić rolę wyjścia informacji binarnej. Tak więc, jeżeli zachodzi potrzeba, procesor może np. wpisać do

portu P1 dowolną liczbę binarną z zakresu 0...255, np. 48. Binarnie liczba 48 = 00110000b. Oznaczenie poszczególnych

końcówek portu P1 wskazują na kolejną pozycje bitu (cyfry liczby binarnej),.

Port (cały lub niektóre z jego pinów), podobnie jak przy zapisie, można ustawić także jako wejście informacji logicznej.

Każde z wyprowadzeń staje się wtedy wyjściem o wysokiej impedancji dzięki temu dowolny poziom logiczny podany z

wyjścia jakiegoś układu cyfrowego może być odczytany poprzez piny portu a informacja czy tym stanem była logiczna ‘1’

czy ‘0’, zostaje wykorzystana przez procesor dla dalszego jego działania w zależności od spełnianej funkcji. Krótko

mówiąc, procesor może odczytać stany logiczne, jakie z zewnątrz podano na końcówki portu.

Poziomy logiczne napięć wejściowych portu P1 (oraz dla każdego innego ) muszą zawierać się w przedziale napięć

zasilania mikrokontrolera, czyli w zakresie 0...5V. Detekcja poziomów logicznych odbywa się jak dla bramek CMOS, stąd

wartości progowe napięć tych stanów są zbliżone do połowy napięcia zasilającego. Istotną informacją jest fakt że w trybie

“odczytu” z portu P1 końcówki są wewnętrznie podczepiane (podciągane )do plusa zasilania poprzez wbudowane w 8051

rezystory, co wymusza odczyt wysoki z portu w wypadku nie podłączenia końcówki poru.

Port P2 spełnia wszystkie funkcje podobnie jak P1. Dodatkowo poprzez końcówki portu P2 podawana jest w razie potrzeby

starsza część adresu (A8...A15) przy dostępie do zewnętrznej pamięci danych (SRAM) a także programu (np. EPROM).

5. Jakie funkcje pełni port P3? Podobnie jak w przypadku portu P1, port P3 może pełnić wszystkie opisane wcześniej funkcje – może być wyjściem lub

wejściem. Port P3 spełnia dodatkowe funkcje.

Piny P3.0 (RXD) i P3.1 (TXD) mogą pełnić rolę portu transmisji szeregowej. W praktyce poprzez te dwa wyprowadzenia

można przesyłać informację (bajty i bity) z i do procesora z innych układów cyfrowych w sposób szeregowy, tzn. bit po

bicie. Przesyłanie to może odbywać się na kilka sposobów:

- synchronicznie – wtedy pin P3.0 pełni role dwukierunkowej magistrali szeregowej, po której przesyłane są dane, zaś pin

P3.1 generuje sygnał taktujący, pełniąc rolę zegara.

- asynchronicznie – kiedy z góry zadajemy prędkość transmisji pomiędzy naszym układem np. łączem RS232c komputera

PC. W takim przypadku końcówka P3.0 –RxD pełni rolę odbiornika przesyłanych szeregowo danych (R oznacza receive –

odbiór), zaś końcówka P3.1 – TxD nadajnika (T-transmitt – nadawanie).

Ponadto rozróżnia się kilka trybów pracy asynchronicznej.

Alternatywą funkcji końcówek P3.2 (INT0) oraz P3.3 (INT1) jest funkcja detekcji przerwań zewnętrznych. Pojęcie

przerwania w tym przypadku odnosi się do zmiany stany logicznego z ”1”na ”0”. W efekcie “we wnętrzu” procesora

8051zostaje ustawiona tak zwana flaga (nazywana także jako “znacznik zgłoszenia przerwania”, co w odniesieniu do

techniki cyfrowej można wyobrazić sobie jako przerzutnik). Konsekwencją tego jest automatyczne przerwanie

wykonywania przez procesor programu i natychmiastowe przejście do wykonania czynności ściśle określonych przez

programistę. Ciąg takich czynności nazywany jest w technice mikroprocesorowej: “procedurą obsługi przerwania”.

Wykrycie zmiany stanu logicznego na końcówkach przerwań INT0 i INT1 wiąże się ze spełnieniem jednego warunku, a

mianowicie, aby czas od wspomnianego ujemnego zbocza sygnału zgłoszenia przerwania do ponownego przejścia w stan

wysoki był odpowiedni długi. Podobnie jak w przypadku warunku sygnału RST, czas ten zależy od częstotliwości zegara

mikroprocesora.

Końcówki (P3.4 i P3.5) oznaczone jako T0 i T1 pełnią dodatkową funkcję wejść uniwersalnych, programowanych

liczników, wbudowanych w strukturę 8051. Procesor zawiera dwa bliźniacze liczniki T0 i T1. Maksymalnie mogą one

zliczać do 216

=65536, po czym zostają wyzerowane. Liczniki te oprócz zliczania impulsów z wejść T0 i T1 mogą także

zliczać impulsy wewnętrzne, pochodzące z generatora mikrokontrolera. W praktyce wykorzystywane jest to np. do

odmierzania określonych odcinków czasu np. przy funkcji zegarka. Liczniki mogą być programowane przez użytkownika,

a więc można np. zmniejszyć pojemność (do 28 lub 213), można także zapisać w nich wartość początkową, zatrzymać je w

dowolnym momencie lub uruchomić.

Pin WR jest sygnałem zapisu do zewnętrznej pamięci danych, a końcówka RD wysyła sygnał do odczytu.

Page 4: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

6. Z jakimi częstotliwościami zegara może pracować MC 8051 i w jaki sposób można ustawiać tę

częstotliwość? W praktyce częstotliwość ta może wynosić od 1,2MHz do 12...16MHz na rynku spotyka się także wersje procesorów

pracujące przy wyższych częstotliwościach nawet do 40MHz, a także przy niskich – nawet do pojedynczych herców w

wypadku procesorów 8051 w wersji statycznej (np. 89C51 firmy Atmel).

Końcówki 18 i 19 (XTAL1 i XTAL2) służą do dołączenia zewnętrznego rezonatora kwarcowego o częstotliwości zależnej

od potrzeb użytkownika, ale także od wersji układu 8051.

Dołączony do tych pinów rezonator kwarcowy po uzupełnieniu o dodatkowe kondensatory o wartości z reguły z przedziału

22...40pF (w zależności od wartości rezonatora), umożliwiają pracę wbudowanemu w 8051 generatorowi, który “napędza”

cały mikroprocesor. Oczywiście od częstotliwości rezonatora ściśle zależy szybkość działania naszego mikrokontrolera.

Częstotliwość, z jaką pracują wewnętrzne układy mikroprocesora, jest określona wzorem:

gdzie Fxtal jest częstotliwością rezonatora kwarcowego.

Powodem takiego podziału częstotliwości rezonatora jest wewnętrzna architektura wszystkich procesorów serii 8051.

Końcówka XTAL1 (pin19) w układach w wersji CMOS może także pełnić rolę wejścia zewnętrznego sygnału zegarowego

o częstotliwości w zakresie, jak opisano w przypadku stosowania rezonatora kwarcowego. Wtedy rezonator i dodatkowe

kondensatory są zbędne. W przypadku gdy mamy do czynienia z wersją w technologii HMOS wejściem takiego sygnału

jest XTAL2 (pin 18). W obu przypadkach pozostały pin powinien być nie podłączony.

7. Jakim napięciem jest zasilany układ 8051 i jaka jest jego wielkość max? Do zasilania mikrokontrolera służy końcówka 40. Napięcie względem końcówki Vss (czyli masy) z reguły nie może

przekroczyć 6,5V. Dlatego układ mikrokontrolera należy zasilać napięciem 5V±0,25V używając do tego celu dowolnego

zasilacza stabilizowanego.

Zasadą przy projektowaniu układów z 8051 jest blokowanie tego wyprowadzenia kondensatorem o wartości 100nF do

masy układu cyfrowego. Praktycznie na płytce drukowanej należy zawsze przewidzieć miejsce na taki kondensator

umieszczając go jak najbliżej samego układu procesora lub po prostu przylutowując go od strony wyprowadzeń na płytce

drukowanej.

Masę układu dołącza się do końcówki 20 (Vss). Podobnie jak w większości układów cyfrowych ostatnie wyprowadzenie w

“dolnym rzędzie” obudowy jest końcówką ujemnego napięcia zasilającego – masy (GND). W przypadku układów CMOS

podaje się oznaczenie Vss co oznacza biegun ujemny napięcia zasilającego. W większości zastosowań pin 40 dołączany

jest do masy przyszłego układu elektronicznego.

8. Krótko scharakteryzuj działanie stosu w układzie 8051. Jak w każdym komputerze także i w mikrokontrolerach rodziny '51 do wywoływania podprogramu przy przejściu do

wykonywania innego podprogramu tworzony jest stos. Stosem jest wydzielony fragment wewnętrznej pamięci RAM

adresowany wskaźnikiem stosu SP. Kolejność odczytu bajtów ze stosu jest odwrotna w stosunku do kolejności ich

zapisywania, zgodnie z regułą pamięci LIFO. 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 sterty książek ułożonych jedna

na drugiej. Dokładając kolejną książkę umieszcza się ją na szczycie sterty. 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.

Stos używany jest do zapamiętywania adresów powrotu z podprogramów wywołanych programowo lub sprzętowo (przez

przerwania), przenoszenia zmiennych między programami, czasowej ochrony rejestrów specjalnych i komórek

wewnętrznej pamięci RAM jeśli są one zmieniane w trakcie wykonywania podprogramów.

Najprościej stos można określić jako bardzo prostą w działaniu strukturę przechowującą bajty. Pod pojęciem

przechowywania rozumiemy oczywiście operację zapisu a następnie odczytu dowolnej zmiennej lub rejestru SFR.

W przypadku takich operacji tylko z udziałem np. wewnętrznej pamięci danych użytkownika, aby dokonać zapisu

(odczytu) musisz daną komórkę pamięci najpierw zaadresować - czyli po prostu podać jej fizyczny adres. W przypadku

korzystania ze stosu adresowanie jest niekonieczne. Przy takim sposobie obsługi konieczne jest jednak zachowanie

12

xtalFF

Page 5: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

sposób przechowywania danych charakteryzuje właśnie stos.

Jak widać wszystkie dane (bajty) przy zapisie odkładane są "na stos" jedna na drugą. Na wierzchołku stosu znajduje się

zawsze ostatnio odłożona dana (w naszym przykładzie oznaczona jako X), toteż aby "dobrać się" do danej leżącej pod nią

(Y) należy najpierw "zdjąć" ze stosu daną X, a potem dopiero odczytać Y. Można to porównać do stosu talerzy

ustawionych jeden nad drugim. Odkładamy talerze na stos i zdejmujemy ze stosu. Nie możemy wyjąć talerza "z głębi"

stosu - dostajemy się do niego dopiero po zdjęciu wszystkich stojących na nim. "Po co jednak jest ten "stos", czy nie jest to

tylko niepotrzebna komplikacja"? Otóż struktura ta spełnia niezmiernie ważną rolę podczas wykonywania programu przez

mikroprocesor. Po pierwsze: stos służy do przechowywania zmiennych lub rejestrów SFR. Po drugie: dostęp do nich

(zmiennych) odbywa się w sposób uporządkowany. Stos umieszczony jest w wewnętrznej pamięci danych użytkownika,

czyli w obszarze o adresach 00h...7Fh. Jak wynika z rysunku ilość tej pamięci zajętej przez stos będzie się zmieniać i

zależeć od tego ile bajtów odłożyliśmy na ten stos. Aby ściśle określić miejsce położenia stosu, w architekturze 8051

znajduje się tzw. licznik stosu, a fachowo mówiąc "wskaźnik stosu". Fizycznie jest on po prostu 8-bajtowym rejestrem w

obszarze SFR, położonym pod adresem 81h. W mnemonice (nazewnictwie) procesorów MCS-51 posiada on symbol SP (z

ang. "Stack Pointer") - wskaźnik stosu.

Jego zadaniem jest automatyczne wskazywanie miejsca aktualnego wierzchołka stosu. Tak więc w przypadku odłożenia

bajtu na stos, wskaźnik SP jest automatycznie zwiększany o 1. W przypadku zdjęcia danej ze stosu jest on zmniejszany.

Sytuację tą wyjaśnia poniższy rysunek:

Stos jest więc hierarchiczną strukturą do przechowywania danych (bajtów) z obszaru wewnętrznej pamięci RAM

(włączając SFR) a położenie jego wierzchołka jednoznacznie określa jego wskaźnik SP. Przy korzystaniu ze stosu

obowiązuje zasada, "ile bajtów odłożyłeś na stos, tyle potem musisz zdjąć", tak aby struktura stosu nie została zakłócona.

W praktyce ma to szczególne znaczenie, bowiem stos wykorzystywany jest nie tylko poprzez świadome działanie

użytkownika lecz także przechowywane są na nim ważne dla działania całego mikrokontrolera adresy powrotów z

podprocedur oraz z procedur oraz obsługi przerwań, czyli innymi słowy mówiąc, aktualne zawartości 16-bitowego licznika

rozkazów PC. Stos jednak składa się z 8-bitowych komórek, a licznik rozkazów jest 16-bitowy. Aby rozwiązać ten

problem procesor na stos odkłada się najpierw młodszy bajt rejestru PC, a następnie starszy bajt, wskaźnik stosu zostaje

więc zwiększony automatycznie o 2. Tak więc w prosty sposób można przechować inne rejestry podwójne np. wskaźnik

adresu zewnętrznej pamięci DPTR, składający się z dwóch 8-bitowych rejestrów DPH (adresy 83h) oraz DPL (adres 82h).

W przypadku rejestru DPTR jak i innych SFR przechowywanie na stosie odbywa się "na żądanie" użytkownika.

Teraz jeszcze kilka informacji. Otóż po wyłączeniu zasilania procesora (lub jego resecie) wskaźnik stosu przyjmuje

domyślnie wartość 07h - czyli po prostu 7, wskazując tym samym, że wierzchołek stosu - adres umieszczenia następnej

danej - po odłożeniu jej na stos położony będzie w wewnętrznej pamięci danych pod adresem 08h (07h + 1 zgodnie z

opisaną wcześniej zasadą). Jeśli więc odłożymy jakiś bajt na stos, najpierw licznik SP zostanie automatycznie zwiększony

o 1, a następnie do komórki o adresie 08h, zostanie wpisany ten bajt. Przy zdjęciu ze stosu kolejność będzie odwrotna,

najpierw zdjęty zostanie nasz bajt, a następnie zmniejszony zostanie wskaźnik SP o 1.

Page 6: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

Wskaźnik stosu SP tak jak każdy rejestr SFR może być dowolnie modyfikowany przez programistę poprzez zapisanie na

nim dowolnej 8-bitowej wartości (0..255).

W praktyce jednak sytuacja tak występuje tylko wtedy, jeżeli chcemy zmienić położenie stosu (czyli go przesunąć) na

początku wykonywania programu. Operacja ta z oczywistych względów ma sens jeżeli stos w danej chwili jest "pusty", w

przeciwnym razie przy lekkomyślnej modyfikacji wskaźnika SP wszystkie dane odłożone wcześniej na stos staną się

niedostępne (przynajmniej z punktu działania samego stosu).

I tak jeżeli chcesz wykorzystywać wewnętrzną. pamięć danych o adresach 08h..20h dla swoich potrzeb (a nie na stos),

musisz na początku swego programu zmodyfikować wskaźnik SP wpisując do niego wartość np. 20h, co jest jednoznaczne

z zawiadomieniem procesora, że stos ma rozpoczynać się od adresu 21h.

Pamiętajmy zatem o stosie jako ważnej strukturze w architekturze 8051 oraz o tym, że tylko umiejętne i świadome z niego

korzystanie przynosi efekty w postaci znacznego przyspieszenia działania programu oraz zmniejszenia jego rozmiarów.

9. Jakie funkcje pełni wewnętrzna pamięć danych układu 8051 i jaka jest jej wielkość? Wewnętrzna pamięć danych

W mikrokontrolerze wewnętrzna pamięć danych przeznaczona jest dla użytkownika do przechowywania argumentów

wartości zmiennych oraz wyników obliczeń arytmetyczno – logicznych. W zależności od typu mikrokontrolera pamięć ta

ma pojemność 128 lub 256 bajtów. Dla 8051 wynosi ona 128B (8052 – 256B).

10. Opisz przestrzeń adresową mikrokontrolera 8051.

W przestrzeni adresowej można wyróżnić kilka obszarów. Dwa główne, to obszar pamięci użytkowej, oraz rejestrów

specjalnych SFR. Pamięć użytkowa zajmuje 128 komórek, adresy 0 – 127 (00h – 7Fh), natomiast obszar SFR obejmuje

adresy 128 - 255 (80h – FFh), z tym że nie wszystkie są wykorzystane przez rejestry specjalne.

I chociaż pamięć użytkownika podzielona jest na obszar, do których dostęp może odbywać się przez tzw. indeksowanie

obszaru, to użytkownik może adresować ją poprzez proste adresowanie.

W pamięci użytkowej komórki o adresach 0..7, 8..15, 16..23 i 24..31 tworzą cztery zbiory uniwersalnych rejestrów

roboczych. Każdy z rejestrów oznacza się symbolami R0...R7. W danej chwili użytkownik ma możliwość dostępu (poprzez

nazwy R0...R7) tylko do jednego “banku” (zbioru) rejestrów roboczych. Przełączanie zbiorów odbywa się poprzez

odpowiednie ustawienie dwubitowego wskaźnika zwanego jako RS – z angielskiego “Register bank Swich”.

Rejestry R0 i R1 z aktywnego banku pełnią rolę wskaźników danych do pośredniego adresowania wewnętrznej pamięci

danych jak i zewnętrznej. W przypadku adresowania pamięci wewnętrznej można adresować cały obszar 8051 czyli adresy

0...7Fh.

11. Jaka może być wielkość zewnętrznej pamięci danych i jakie układy są tu najczęściej stosowane? Do podłączenia zewnętrznej pamięci danych używa się zwykle pamięci statycznych SRAM o ośmiobitowej organizacji

danych i adresowaniu równoległym.

Do kontrolerów serii ’51 można dołączyć maksymalnie 64kB zewnętrznej pamięci danych. Można więc w takim

przypadku zastosować:

2 kostki 6256 (2 x 32kB = 64kB) lub

8 kostek 6264 (8 x 8kB = 64kB) lub

32 kostki 6116 (32 x 2kB = 64kB).

SRAM są niepraktyczne, po pierwsze ze względu na ilość układów scalonych co prowadzi do zwiększenia płytki

drukowanej, po drugie pojawia się konieczność stosowania dodatkowego dekodera adresu (np. układu serii TTL-LS typ

74LS138 – dekoder 1 z 8).

Page 7: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

12. Jak zmienia się wykorzystanie portów mikrokontrolera w przypadku stosowania zewnętrznej pamięci

danych? Zastosowanie zewnętrznej pamięci tak programu jak i danych wiąże się ze zubożeniem typowej “jednoukładowości”

mikrokontrolera, bowiem zajęte zostają porty P0 i P2 procesora. O ile w przypadku pracy z zewnętrzną pamięcią programu

dzieje się tak zawsze: port P0 pracuje jako multipleksowana (na zmianę) szyna danych lub młodszej części adresu, a port

P2 wystawia starsze 8 bitów 16-bitowego adresu, o tyle w przypadku pracy z zewnętrzną pamięcią danych ( bez

zewnętrznej pamięci programu) istnieje możliwość oszczędniejszego gospodarowania portami procesora.

Procesor przy odczycie lub zapisie ... wystawia 16-bitowy adres (A0...A15) ... . Do tego potrzebne są 2 porty, które w

takim przypadku nie nadają się do dodatkowego wykorzystania, jako np. wyjścia sterowania przekaźnikami, lub

czymkolwiek innym.

Istnieje jednak możliwość innego odczytu zewnętrznej pamięci danych, nazywana “stronicowaniem”. Ma ona

zastosowanie szczególnie wtedy, kiedy zewnętrzna pamięć danych ma mniejszy rozmiar od maksymalnej przestrzeni

adresowej procesora np. 2kB. Pamięć taka ma tylko 11 linii adresowych (A0...A10), co pozwala na zaadresowanie 2048

komórek pamięci (bajtów). Tak więc pozostałe linie adresowe procesora A11.A15 pozostałyby niewykorzystane gdyby

zastosować odczyt jak w poprzednim przypadku z pełnym adresem A0...A15.

Przy “stronicowanym” sposobie obsługi zewnętrznej pamięci danych, procesor wystawia tylko młodszą część 16-

bitowego adresu (linie AD0...AD7), zaś port P2 pozostaje “nietknięte”. W konsekwencji takiego sposobu obsługi możliwe

będzie zaadresowanie tylko 256 bajtów (2 do potęgi 8 = 256) tej pamięci, a nie jak w naszym przykładzie aż 2kB. No tak,

chyba że przed odczytem przez procesor, sami, za pomocą sygnałów A8...A10 (wystawionych poprzez 3 piny portu P0)

ustawimy niejako “fizyczny” adres 256 bajtowej strony adresowanej pamięci.

Zauważmy przecież że za pomocą tych trzech końcówek można “zaadresować” 8 stron po 256 bajtów każda co w sumie

da nam do dyspozycji pełne 2048 bajtów, czyli 2kB. Zauważmy też że, co najważniejsze, pozostałe końcówki portu P2

pozostają wolne i możemy je dowolnie wykorzystać jako wejścia lub wyjścia cyfrowe.

W celu rozróżnienia przedstawionych dwóch typów adresowania wprowadzone są dwie różne instrukcje procesora,

których używa programista podczas projektowania układu i pisania programu, w zależności od potrzeb.

Połączenie mikrokontrolera z zewnętrznymi pamięciami

Page 8: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

13. Wyjaśnij sposób tworzenia rejestrów R0 – R7, wykorzystywanych do adresowania pośredniego. W 128-bitowym segmencie wewnętrznej pamięci RAM o adresach od 0 do 7Fh rozmieszczone są rejestry R0 i R1, które

wykorzystywane są przy adresowaniu pośrednim. Oprócz nich konstruktorzy mikrokontrolera dali użytkownikom do

dyspozycji 6 następnych rejestrów oznaczonych kolejnymi symbolami cyfrowymi: R2, R3, R4, R5, R6, R7.

W ten sposób mamy w mikrokontrolerze 8 rejestrów.

14. Co to są banki rejestrów ? Banki rejestrów tworzy osiem rejestrów (R0, .., R7). Takich banków mamy 4 oznaczonych symbolami RB0 (bank numer

0), .., RB3 (bank numer 3).

Z powyższego rysunku wynika, że wszystkie banki rejestrów rozmieszczone są w początkowym obszarze wewnętrznej

pamięci RAM mikrokontrolera. Oznacz to, że do każdego z rejestrów możemy odwołać się przez:

podanie jego symbolu i numeru banku rejestrów, np. rejestr R7 w banku RB1

podanie adresu komórki wewnętrznej pamięci RAM, np. adres 0Fh dla tego samego rejestru.

Pomimo, że mamy do dyspozycji 4 banki rejestrów, każdy po 8 rejestrów (łącznie 32 rejestry), to tylko programowy dostęp

przez podanie symbolu rejestru możliwy jest tylko do jednego, wybranego banku. Po sprzętowym zerowaniu procesora

(linią RTS) wybrany jest jako domyślny bank RB0, tzn. rejestry R0,..,R7 o adresach od 0 do 7. Adresując bezpośrednio

zewnętrzną pamięć RAM w zakresie 0..1F dostępne są wszystkie 32 rejestry (traktowane jako komórki pamięci).

Poza rejestrami R0,..R7 wszystkie inne rejestry, np. akumulator A, rejestr B, rejestr słowa statusowego PSW, itd., znajdują

się w bloku, segmencie rejestrów specjalnych SFR.

Jeśli w mikrokontrolerach rodziny '51 przewidziano 4 banki rejestrów (RB0, .., RB3) to oznacza to, że wystarczą 2 bity do

określenia numerów banków. Te dwa bity oznaczone symbolami RS0 i RS1 (Register Select) znajdują się w rejestrze

słowa statusowego PSW.

Kodowanie numeru banku rejestrów za pomocą bitów RS1 i RS0 jest binarne, tzn.:

RS1,RS0=00b oznacza zerowy bank rejestrów RB0;

RS1,RS0=11b oznacza trzeci bank rejestrów RB3.

Page 9: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

15. Wyjaśnij, w jaki sposób adresowana jest zewnętrzna pamięć danych RAM. Zewnętrzna pamięć danych RAM, jeśli istnieje potrzeba jej dołączenia do mikrokontrolera wskutek zbyt małej

wewnętrznej pamięci RAM, adresowana jest w dwojaki sposób:

1. Wskaźnikowy rejestr danych DPTR:

Instrukcja: zapis binarny instrukcji: Wykonywana operacja

MOVX @DPTR,A 1111 0000b (DPTR)XDATA A

MOVX A,@DPTR 1110 0000b A (DPTR)XDATA

Jest to standardowy sposób odwoływania się do pamięci. 16-bitowy wskaźnikowy rejestr danych DPTR zawiera pełny

16-bitowy adres komórek pamięci. Ponieważ rejestr ten tworzą dwa połączone rejestry:

DPH jako 8-bitowa, bardziej znacząca część rejestru DPTR;

DPL jako 8-bitowa, mniej znacząca część rejestru DPTR.

W trakcie adresowania komórek pamięci stan obu rejestrów pojawia się na liniach portu P0 (stan rejestru DPL) i P2 (stan

rejestru DPH), tak jak przedstawiono na rysunku. Multipleksowanie stanu obu portów realizowane jest dynamicznie, tylko

na czas wykonywanej instrukcji.

Adresowanie zewnętrznej pamięci RAM za pośrednictwem wskaźnikowego rejestru danych DPTR

2. Zawartością portu P2 i rejestru R0 lub R1:

instrukcja zapis binarny

instrukcji wykonywana operacja

MOVX @R0,A 11110010b (256*P2+R0)XDATAA

MOVX A,@R0 11100010b A (256*P2+R0)XDATA

MOVX @R1,A 11110011b (256*P2+R1)XDATAA

MOVX A,@R1 11100011b A (256*P2+R1)XDATA

Składnia instrukcji jest trochę myląca. Wynika z niej bezpośrednio, że do adresowania zewnętrznej pamięci RAM używany

jest tylko jeden z rejestrów mikrokontrolera, R0 lub R1. Oba rejestry są rejestrami 8-bitowymi,a do zaadresowania pamięci

wymagany jest adres 16-bitowy. W trakcie wykonywania jednej z czterech przedstawionych instrukcji na liniach portu P0

pojawia się zawartość rejestru R0 lub R1 (8 mniej znaczących bitów adresu) ale stan portu P2 nie ulega zmianie. Oznacza

to, że przed wykonaniem instrukcji należy wpisać do portu P2 8-bardziej znaczących bitów adresowanej komórki

zewnętrznej pamięci RAM

Przykładowo do zapisu akumulatora A do komórki pamięci adresie 3C58h należy wykonywać poniższe instrukcje:

MOV R0,#58h ;R0-58H

MOVX P2,#3cH ;P2-3Ch

MOVX @R0,A

W każdej linii tego krótkiego programu pojawił się po znaku średnika (;) komentarz, który ma wyjaśnić, pomóc w

zrozumieniu działania programu. W trakcie asemblacji wszystkie komentarze (od znaku średnika do końca

wiersza ) są pomijane. Oba przedstawione sposoby adresowania zewnętrznej pamięci RAM określane są mianem adresowania pośredniego. We

wszystkich trybach takiego adresowanie, za pośrednictwem jakiegoś rejestru, przed nazwą rejestru pojawia się znak @.

Znak ten świadczy, że adres komórki pamięci podany jest w bezpośrednio po znaku występującym rejestrze, np.:

w instrukcji MOVX A,@DPTR adres komórki podany jest w rejestrze DPTR

w instrukcji MOVX @R1,A rejestr R1 zawiera część adresu komórki zewnętrznej pamięci RAM, 8-mniej znaczących

bitów adresu. Pozostałą część adresu, 8-bardziej znaczących bitów, zawiera port P2.

Page 10: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

16. Jaka jest podstawowa składnia instrukcji (rozkazu) ? Najpowszechniejszym rozkazem są rozkazy, instrukcje przesłań, których składnia jest następująca:

Skrót instrukcji MOV pochodzi od słowa "MOVE" czyli przesunięcia, ruszenia czegoś z miejsca. W rozkazie tym użyto

tylko dwóch argumentów. Pierwszy (dst) do określenia komórki pamięci lub rejestru specjalnego SFR, do których ma być

przesunięta dana. Drugi (scr) także do określania adresu komórki pamięci lub rejestru specjalnego, z których ma być

pobrana dana. Kolejność argumentów jest bardzo ważna. W instrukcjach 2-argumentowych jako pierwszy występuje

zawsze adres docelowy, a jako drugi adres źródłowy. W innych instrukcjach liczba argumentów zmienia się od jednego do

trzech, w zależności od realizowanej funkcji.

17. Co to jest asemblacja? Program zawierający mnemoniki wykonywanych instrukcji jest czytelny dla człowieka. Jeśli te same instrukcje mają być

zrozumiałe dla mikrokontrolera, to muszą zostać przetłumaczone na ciąg zero-jedynkowy. Proces tłumaczenia i kodowania

nazw instrukcji i ich argumentów nazywany jest asemblacją. Wynika z tego, że program będący ciągiem poleceń

tłumaczony jest na kod wynikowy za pośrednictwem programu zwanego asemblerem. Przytoczona powyżej instrukcja

MOV 4Ah,8 zmieniona zostaje na trzy bajty w postaci:

18. Na czym polega różnica między mikrokontrolerami w wersji 8051, 8052, 8751, 8752, 89C51, 89C52? - 8051 posiada tylko 128B pamięci wewnętrznej, pamięć zewnętrzną dołącza się w postaci układów dodatkowych – 6256 -

32KB, 6264 - 8KB, 6116 – 2KB

- 8052 posiada 256B pamięci wewnętrznej, pamięć zewnętrzna jw.

- 8751, 89C51 – pamięć wewnętrzna jw., dodatkowo ma wbudowaną pamięć zewnętrzną o wielkości 4KB

- 8752, 89C52 jw. Ale ma 8KB pamięci zewnętrznej

19. Scharakteryzuj konfiguracje współpracy procesora z wewnętrzną i zewnętrzną pamięcią programu? Procesor może pracować w następujących konfiguracjach:

- tylko z wewnętrzną pamięcią programu (dla kostek 8751,8752)

- z wewnętrzną i zewnętrzną pamięcią programu jednocześnie, w tym przypadku zewnętrzna pamięć programu stanowi jak

gdyby “przedłużenie” pamięci wewnętrznej

- tylko z zewnętrzną pamięcią programu np. typu EPROM.

Pierwszy tryb jest bardzo wygodny, pozwala na “pełne” wykorzystanie wszystkich zalet mikrokontrolera jednoukładowego

w całym tego słowa znaczeniu. Programista wykorzystując procesor w wersji z wbudowaną pamięcią programu

(8751,8951,xx52) cały kod swego programu umieszcza wewnątrz kości, dzięki czemu ma do dyspozycji wszystkie porty

mikrokontrolera – w tym także P0 i P2. Kostka 87C51 (89C51) ma “tylko” 4kB (8x52 8kB pamięci programu), najczęściej

te “tylko” w zupełności wystarcza, lecz zdarza się że jest to za mało, wtedy konieczne jest dołączenie dodatkowej

zewnętrznej pamięci programu w postaci kostki EPROM. W tym przypadku maksymalna długość programu równa

wielkości obu pamięci zewnętrznej jak i wewnętrznej nie może przekroczyć 64kB – czyli 65536 8-bitowych słów.

Czyli że np. kostki 87C52 (zawierającej 8 kB wewnętrznej EPROM) można dołączyć maksymalnie 56kB EPROM z

zewnątrz.

Trzeci tryb pracy tylko z zewnętrzną pamięcią programu wymaga zwarcia wyprowadzenia EA (pin 31 procesora

8051/52) do masy.

20. Wyjaśnij jakie typ układów kryją się pod symbolami: 8051, 8052, 8751, 8752, 2764, 6116, 6264,

6256, 74LS138 ?

- 8051 – mikrokontroler 128B wewnętrznej RAM

- 8052 - mikrokontroler 256B wewnętrznej RAM

- 8751, 89C51 - mikrokontroler 128B wewnętrznej RAM i wbudowane 4KB zewnętrznej RAM

- 8752, 89C52 - mikrokontroler 256B wewnętrznej RAM i wbudowane 8KB zewnętrznej RAM

- 27C64 – kość RAM o pojemności 8KB

- 6116 - kość SRAM o pojemności 2KB

- 6264 - kość SRAM o pojemności 8KB

Page 11: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

- 6256 - kość SRAM o pojemności 32KB

- 74LS138 – dekoder 1 z 8

- 74HCT573(74573) – 8-bitowy bufor

21. Co to jest adresowanie pośrednie, podaj przykład instrukcji zawierającej taki sposób adresowania.

Adresowanie pośrednie polega na wykorzystaniu zawartości jakiegoś rejestru np. DPTR jako

argumentu rozkazu.. Przy tym sposobie adresowania przed nazwą rejestru stosuje się znak @.

Obecność tego znaku oznacza, że adres komórki pamięci podany jest w rejestrze, którego nazwa

podana jest bezpośrednio po znaku @. Przykład takiego adresowania:

- MOVX A,@DPTR – adres komórki podany jest w rejestrze DPTR;

- MOVX @R1,A – rejestr R1 zawiera część adresu komórki zewnętrzne pamięci RAM, 8

mniej znaczących bitów adresu. Pozostałą część adresu, 8 bardziej znaczących bitów,

zawiera port P2

22. Scharakteryzuj sposób adresowania zewnętrznej RAM za pomocą wskaźnikowego rejestru danych

DPTR.

Instrukcja: zapis binarny instrukcji: Wykonywana operacja

MOVX @DPTR,A 1111 0000b (DPTR)XDATA A

MOVX A,@DPTR 1110 0000b A (DPTR)XDATA

Jest to standardowy sposób odwoływania się do pamięci. 16-bitowy wskaźnikowy rejestr danych DPTR zawiera

pełny 16-bitowy adres komórek pamięci. Ponieważ rejestr ten tworzą dwa połączone rejestry:

DPH jako 8-bitowa, bardziej znacząca część rejestru DPTR;

DPL jako 8-bitowa, mniej znacząca część rejestru DPTR.

W trakcie adresowania komórek pamięci stan obu rejestrów pojawia się na liniach portu P0 (stan rejestru DPL) i

P2 (stan rejestru DPH), tak jak przedstawiono na rysunku. Multipleksowanie stanu obu portów realizowane jest

dynamicznie, tylko na czas wykonywanej instrukcji.

Adresowanie zewnętrznej pamięci RAM za pośrednictwem wskaźnikowego rejestru danych DPTR

23. Scharakteryzuj sposób adresowania zewnętrznej RAM zawartością portu P2 i rejestru R0 i R1.

instrukcja zapis binarny

instrukcji wykonywana operacja

MOVX @R0,A 11110010b (256*P2+R0)XDATAA

MOVX A,@R0 11100010b A (256*P2+R0)XDATA

MOVX @R1,A 11110011b (256*P2+R1)XDATAA

MOVX A,@R1 11100011b A (256*P2+R1)XDATA

Składnia instrukcji jest trochę myląca. Wynika z niej bezpośrednio, że do adresowania zewnętrznej pamięci

RAM używany jest tylko jeden z rejestrów mikrokontrolera, R0 lub R1. Oba rejestry są rejestrami 8-bitowymi,a

do zaadresowania pamięci wymagany jest adres 16-bitowy. W trakcie wykonywania jednej z czterech

przedstawionych instrukcji na liniach portu P0 pojawia się zawartość rejestru R0 lub R1 (8 mniej znaczących

Page 12: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

bitów adresu) ale stan portu P2 nie ulega zmianie. Oznacza to, że przed wykonaniem instrukcji należy wpisać do

portu P2 8-bardziej znaczących bitów adresowanej komórki zewnętrznej pamięci RAM

Przykładowo do zapisu akumulatora A do komórki pamięci adresie 3C58h należy wykonywać poniższe

instrukcje:

MOV R0,#58h ;R0-58H

MOVX P2,#3cH ;P2-3Ch

MOVX @R0,A ;(256*P2+R0)A

W każdej linii tego krótkiego programu pojawił się po znaku średnika (;) komentarz, który ma wyjaśnić, pomóc

w zrozumieniu działania programu. W trakcie asemblacji wszystkie komentarze (od znaku średnika do końca

wiersza ) są pomijane.

24. Scharakteryzuj odczyt danych z pamięci programu ROM wewnętrznej albo zewnętrznej. Wewnętrzna lub zewnętrzna pamięć programu zawiera oprócz kodu programu także stałe wykorzystywane w programie.

Ze względu na swój charakter, pamięć ROM (EPROM, EEPROM, Flash ROM), możliwy jest jedynie odczyt danych.

Wybór typu pamięci, wewnętrznej lub zewnętrznej, mikrokontroler dokonuje testując linię EA w trakcie zerowania:

EA=0, zewnętrzna pamięć programu

EA=1, wewnętrzna pamięć programu

Stan linii EA nie ma znaczenia jeśli licznik rozkazów PC zawiera adres większy niż adres wewnętrzny pamięci programu.

Przykładowo jeśli mikrokontroler 8051 zawiera 4KB-ową wewnętrzną pamięć programu to dla stanu licznika rozkazów

PC:

PC=0000h..0FFFh i EA-0 –mikrokontroler wykonuje program z zewnętrznej pamięci programu;

PC=0000h..0FFFh i EA=1 – mikrokontroler wykonuje program z wewnętrznej pamięci programu;

PC-1000h..0FFFFh - mikrokontroler wykonuje program z zewnętrznej pamięci programu, niezależnie od stanu linii EA

Pamięć programu (wewnętrzna lub zewnętrzna) adresowana jest na trzy różne sposoby:

1a. przez drugi lub przez trzeci bajt wykonywanej instrukcji. Sytuacja taka występuje przy pobieraniu 8-bitowych stałych z

pamięci programu, np. przy inicjalizacji wartości początkowych rejestrów komórek pamięci, np.:

Instrukcje Zapis binarny instrukcji Wykonywane

operacje

MOV A,#3Ch 0111 0100b 0011 1100b A 3Ch

MOV R0,#6 0111 1000b 0000 0110b R0 6

MOV 35,#4Bh 0111 0101b 0010 0011b

0100 1011b

(35) 4Bh

Dwie pierwsze instrukcje są instrukcjami 2-bajtowymi. Pierwszy bajt zawiera kod wykonywanej instrukcji i informację,

adres docelowego rejestru. Drugi bajt zawiera wartość stałej, która wpisywana jest do akumulatora A (MOV A,#3Ch) i

rejestru R0 (MOV R0,#6).

Page 13: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

W trzeciej instrukcji (MOV 35,#4Bh) pierwszy bajt zawiera kod wykonywanej instrukcji, drugi adres komórki

wewnętrznej pamięci RAM (35) zamienianej na liczbę szesnastkową (23), a trzecia wartość stałej pobieranej z pamięci

programu (4Bh).

Z powyższej tabeli przedstawiono również zapis binarny wykonywanych instrukcji (zrozumiały dla mikrokontrolera) oraz

wykonywane operacje. Strzałka oznacza kierunek przepływu danych, wartość ujęta w okrągłe nawiasy (35) jest adresem

komórki pamięci, w tym przypadku wewnętrznej pamięci RAM. Należy zwrócić uwagę na sposób zapisu stałych, które

poprzedzone są zawsze znakiem #. Pominięcie tego znaku powoduje, że odwołujemy się do komórki pamięci RAM lub

rejestrów specjalnych SFR. Ten sposób adresowania nazywany jest adresowaniem natychmiastowym.

1b. przez drugi i trzeci bajt wykonywanej instrukcji. Sytuacja taka występuje przy inicjalizacji wartości początkowej

16-bitowego wskaźnikowego rejestru danych DPTR:

Instrukcja: zapis binarny instrukcji: wykonywana operacja

MOV DPTR,#2E59h 1001 0000b 0010 1110b 0101 1001b DPTR 2E59h

Przedstawiona 3-bajtowa instrukcja jest jedyną instrukcją, w której wpisywana jest do rejestru DPTR stała 16-bitowa.

Pierwszy bajt zawiera kod operacji, bajt drugi i trzeci wpisywaną stałą. Ten sposób adresowania także nazywany jest

adresowaniem natychmiastowym.

2. sumą zawartości 8-bitowego akumulatora A i 16-bitowego wskaźnikowego rejestru danych DPTR. Liczba zawarta w

akumulatorze A traktowana jest jako liczba całkowita bez znaku, co oznacza, że jej zakres zmienności ograniczony jest do

przedziału 0..255.

instrukcja: zapis binarny: wykonywana operacja

MOVC A,@A+DPTR 1001 0011b A (A+DPTR)

Aby wykonać dodawanie zawartości 8-bitowego akumulatora A i 16-bitowego wskaźnikowego rejestru danych DPTR,

zawartość akumulatora A rozszerzana jest znakowo z 8 bitów do 16 bitów o bajt równy 00. Adresowanie pamięci

programu określane jest jako adresowanie za pomocą rejestrów bazowych ( w tym przypadku za pomocą indeksowo-

rejestrowo pośrednie.

Pobieranie danych z pamięci programu i wymiana danych z/do zewnętrznej pamięci RAM

3. sumą zawartości 8-bitowego akumulatora A i 16-bitowego licznika rozkazów PC. Podobnie jak poprzednio liczba

zawarta w akumulatorze A traktowana jest jako liczba całkowita bez znaku:

instrukcja: zapis binarny

instrukcji:

wykonywana operacja

MOVC A,@A+PC 1000 0011b A (A+PC)

Zawartość akumulatora A jest rozszerzona znakowo z 1 do 2 bajtów. Różnica między tym, a poprzedni, rozkazem

polega na tym, że po pobraniu kodu instrukcji licznik rozkazów PC zwiększany jest o 1. W ten sposób licznik rozkazów PC

wskazuje na pierwszy bajt następnej instrukcji znajdującej się po wykonywanym rozkazie MOVC A,@A+PC. W podanej

instrukcji pamięć programu adresowana jest za pomocą rejestru bazowego jakim jest licznik rozkazów PC (adresowanie

indeksowo-rejestrowo pośrednie). W dwóch ostatnich rozkazach wskaźnikowy rejestr danych DPTR i bieżąca wartość

licznika rozkazów PC traktowane są jako wskaźniki (adresy początkowe) do tablic umieszczonych w pamięci programu

ROM. Zawartość akumulatora A traktowana jest jako indeks tablicy. Wielkość tych tablic ograniczona jest do 256 bajtów,

ze względu na 8-bitową zawartość akumulatora z pamięci programu kolejnych znaków komunikatów, np.: pomiarowego,

sterowanego urządzenia itp.

Page 14: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

25. Jaka jest rola portu szeregowego i jakie rodzaje transmisji on obsługuje?

Zadaniem portu szeregowego jest zapewnienie komunikacji poprzez łącze szeregowe między mikrokontrolerem a urządzeniami

zewnętrznymi. Dane są wysyłane bit po bicie rozpoczynając od najmniej znaczącego bitu. Dane mogą być wysyłane i przyjmowane

synchronicznie lub asynchronicznie.

Przy transmisji synchronicznej przesyłanym danym towarzyszy sygnał synchronizujący, względem którego określa się stany

przesyłanych bitów. Zaletą transmisji synchronicznej jest jej odporność na dewiacje częstotliwości sygnału taktującego, natomiast

wadą - dwie linie przesyłowe: jedna dla danych, a druga dla sygnału taktującego.

Przy transmisji asynchronicznej (UART) przesyłane są tylko dane, a sygnały taktujące są wytwarzane w nadajniku i odbiorniku

niezależnie od siebie. Dlatego dla poprawnego odbierania danych nadajnik i odbiornik muszą być taktowane sygnałem o takiej

samej częstotliwości. Wymaga to generatorów o wysokiej stabilności i uzgodnienia co do prędkości transmisji. Dla ułatwienia

nawiązania łączności prędkości transmisji zostały unormowane. Są one podane w normie opisującej łącze szeregowe RS 232.

Opisany poniżej port szeregowy jest identyczny dla całej rodziny mikrokontrolerów '51. W mikrokontrolerach spoza rodziny '51

transmisja szeregowa może być realizowana zupełnie inaczej.

W rodzinie '51 port szeregowy może pracować w czterech trybach. Tryby pracy różnią się między sobą rodzajem transmisji

(synchroniczna, asynchroniczna), liczbą przesyłanych bitów w jednej ramce i źródłem sygnałów taktujących port szeregowy. Tryb

pracy portu szeregowego, źródło jego taktowania itd. są wybierane poprzez odpowiednie ustawienie znaczników w rejestrze SCON:

Rola znaczników jest następująca:

SM0, SM1- wybór trybu pracy

tryb pracy rodzaj transmisji częstotliwość taktująca

0 0 0 synchroniczna,

8bitów fosc/12

0 1 1 asynchroniczna, 8

bitów zmienna

1 0 2 asynchroniczna, 9

bitów fosc/64 lub fosc/32

1 1 3 asynchroniczna, 9

bitów zmienna

26. Jakie końcówki mikrokontrolera służą do odbioru i nadawania danych, podaj przykłady instrukcji

pozwalających na sterowanie pracą portu szeregowego P3. Mikrokontroler 8051 i pochodne posiadają sprzętowy port szeregowy (w skrócie UART), dzięki któremu możliwe jest

wysyłanie i odbieranie informacji w postaci szeregowej, czyli "bit po bicie". Procesor posiada dwie dedykowane końcówki,

które wchodzą w skład portu P3 procesora. Są to:

RxD - (P3.0) wejście szeregowe ("Recieve Data")

TxD - (P3.1) wyjście szeregowe ("Transmit Data").

Końcówki te mogą być wykorzystywane jako uniwersalne wejścia-wyjścia procesora, dzięki instrukcjom zapisu do portu

P3, np.:

MOV P3,#dana

lub indywidualnym sterowaniem każdej końcówki

SETB P3.0 {ustawienie "1" na końcówce RxD

CLR P3.1 {ustawienie "0" na końcówce TxD}

27. Do czego służy układ UART w mikrokontrolerze 8051 przedstaw jego krótki opis.? Układ ten służy do asynchronicznej transmisji danych. Posiada dwie końcówki RxD-P3.0 – wej szeregowe oraz TxD- P3.1

– wyj. Szeregowe. Elementem, z którego wysyła się dane jest rejestr SBUF, znajdujący się pod adresem 99h w pamięci

wewnętrznej danych, w obszarze rejestrów specjalnych SFR. Oprócz niego jest jeszcze dodatkowy rejestr SCON sterujący

wszystkimi funkcjami portu takimi jak: tryby pracy, sygnalizowanie stanów transmisji, aktywowanie odbiornika portu

szeregowego. Jest to realizowane przez ustawienie odpowiednich znaczników SCON.0..7. Znaczniki te przesyłane są po

dwukierunkowej linii P3.0 (RxD) i odbierane i nadawane za pomocą rejestru SBUF

28. Jakie funkcje pełnią w 8051 porty- podaj ich krótki opis, przedstaw schemat ideowy portu P0? Porty umożliwiają dołączenie do mikrokontrolera takich urządzeń zewnętrznych jak: klawiatura, pole odczytowe,

przekaźniki. Porty mogą być cyfrowe – do przesyłania danych cyfrowych i logicznych oraz analogowe – np. wejścia

przetwornika A/C. Wszystkich portów jest cztery oznaczone są P0, P1, P2, P3. Są one dwukierunkowe, każdy zawiera

Page 15: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

osiem linii, z których każda może pracować jako niezależna linia wejścia lub wyjścia. Każdy z portów zawiera przerzutnik

D, będący elementem rejestru danego portu umieszczonego w obszarze SFR.

29. Jakie rozkazy pozwalają ustawiać stany portów? Stan wyjść linii portów można ustawić rozkazami typu MOV, ale ma to tę niedogodność, że rozkazem tym ustawia się

jednocześnie wszystkie linie danego portu. Wygodniej jest użyć rozkazów logicznych operujących na bajtach lub

pojedynczych bitach.

W rodzinie mikrokontrolerów ’51 są wykonywane następujące operacje logiczne na bajtach:

CPL – negacja logiczna,

CLR – zerowanie bitów,

ANL – iloczyn logiczny,

ORL – suma logiczna,

XRL – różnica symetryczna.

Pierwsze dwie operacje są wykonywane wyłącznie w akumulatorze. Natomiast pozostałe mogą być wykonywane

również poza akumulatorem na wszystkich rejestrach obszaru SFR i komórkach pamięci wewnętrznej RAM.

Na pojedynczych bitach można wykonywać operacje:

CLR – zerowanie bitu,

SETB – ustawianie bitu w stan 1,

CPL – negacja bitu,

ANL – iloczyn logiczny,

ORL – suma logiczna.

30. Budowa i przeznaczenie ALU Jednostka artytmetyczno-logiczna wykonuje podstawowe działania arytmetyczne i logiczne. Należą do nich dodawanie

arytmetyczne (binarne i dziesiętne), odejmowanie, mnożenie, dzielenie, porównywanie, przesunięcie o jeden bit w lewo

lub w prawo, suma i iloczyn logiczny, różnica symetryczna oraz negacja. Wynik operacji wykonywanych w jednostce

arytmetyczno-logicznej może mieć wpływ na kolejność wykonywanych rozkazów, działania programu. Z jednostką

arytmetyczno-logiczną są funkcjonalnie powiązane trzy rejestry o ściśle sprecyzowanym przeznaczeniu: akumulator A,

rejestr statusowy PSW, rejestr B oraz licznik rozkazów PC.

- Akumulator jest umieszczony pod adresem E0h (224 dziesiętnie). Rejestr ten służy jednostce ALU za miejsce pobrania

argumentu oraz umieszczenia wyniku większości operacji arytmetyczno-logicznych.

Rejestr ten może być adresowany bitowo (podobnie jak bajty spod adresów 20h ... 2Fh), dzięki czemu możliwe jest

testowanie jego bitów bez potrzeby wykonywania dodatkowych operacji logicznych. Dodatkowo rejestr A poza funkcjami

związanymi z jednostką ALU służy do pobierania i umieszczania bajtów w zewnętrznej pamięci danych.

- rejestr B - drugi po akumulatorze ważny rejestr współpracujący z ALU, 8-bitowy,. Służy on do umieszczenia jednego ze

składników mnożenia lub dzielenia, po wykonaniu jednej z tych operacji w rejestrze tym umieszczany jest: w przypadku

mnożenia starszy bajt 16-bitowego wyniku mnożenia dwóch liczb 8-bitowych; w przypadku dzielenia reszta z dzielenia

dwóch liczb 8-bitowych.

Oczywiście zarówno rejestr B, jak i akumulator A, mogą być wykorzystywane dowolnie jako rejestry uniwersalne.

- Rejestr PSW (ang. "Program Status Word - słowo stanu programu ") - trzeci ważny rejestr związany z ALU. Rejestr ten

wchodzi w skład SFR a jego adres to D0h (208 dziesiętnie). W skład tego rejestru wchodzi osiem bitów nazywanych

znacznikami, z których cztery informują o przebiegu wykonania informacji arytmetyczno-logicznych.

- Licznik rozkazów PC („Program counter”) - służy do adresowania pamięci programu. Szesnasto-bitowy adres

umożliwia zaadresowanie 216=65536 komórek pamięci, tzn. 64 KB. Należy pamiętać, że 1 KB = 210=1024 bajty. Z

zaadresowanej komórki pamięci programu procesor pobiera rozkaz, który złożony jest z jednego, dwóch lub trzech bajtów.

Po pobraniu każdego bajtu rozkazu następuje zwiększenie licznika rozkazów PC o jeden (licznik rozkazów jest

inkrementowany). W ten sposób licznik rozkazów PC wskazuje na adres pierwszego bajtu następnego do wykonania

rozkazu. Przy pobieraniu rozkazów z zewnętrznej pamięci programu jej adres przesyłany jest za pośrednictwem portu P0 i

Page 16: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

P2, a bajty rozkazów przesyłane są poprzez port P0. Zawartość licznika rozkazów PC może być zmieniana odpowiednimi

rozkazami, co umożliwia wykonywanie skoków do różnych fragmentów programu.

31. Jakie jest przeznaczenie rejestrów specjalnych SFR i jakie rejestry zalicza się do tej grupy? Służą one do wprowadzenia (np. przez programistę) składników działania . Do rejestrów specjalnych SFR zalicza się:

- Accumulator (A) - adres 0E0h (rw-00h).,

- rejestr B - adres 0F0h (rw-00h) ,

- rejestr PSW - 0D0h (rw-00h). "słowo stanu programu (ang. "Program Status Word").

- Wskaźnikowy rejestr danych DPTR (Data Pointer Register) - adresy: 82h, 83h (rw-00h każdy) służący do adresowania .

- Wskaźnik stosu SP (Stack Pointer) - adres 81h (rw-00h).

32. Co się kryje pod pojęciem „Układy czasowo – licznikowe”? Pod pojęciem tym kryją się dwa 16-bitowe liczniki T0 i T1 oraz dodatkowy licznik T2 który występuje w procesorze

8052. Najogólniej mówiąc każdy z tych liczników a właściwie układów czasowo-licznikowych jest tak uniwersalnym

blokiem, że z wykorzystaniem jego można dokonać następujące dwie operacje:

- za pomocą T0 (T1lub T2) można zliczać impulsy z zewnętrznego wejścia licznikowego; pin 14 dla T0 i pin 15 dla T1

(tryb licznika)

- można zliczać wewnętrzne impulsy pochodzące z układu taktującego procesor, w każdym przypadku będzie to sygnał o

częstotliwości:

gdzie Fxtal – częstotliwość oscylatora kwarcowego W przypadku wykorzystania układu licznikowego w obu przypadkach należy wiedzieć że:

- maksymalna liczba zliczonych impulsów jest określona pojemnością 16-bitowego licznika, czyli 2 do potęgi 16 = 65536

(licznik zlicza od 0 do 65536 po czym po nadejściu kolejnego impulsu jest zerowany oraz z zależności od potrzeb jest

generowanie odpowiednie przerwanie);

- licznik można w dowolnym momencie uruchomić (zezwolić na zliczanie) lub zatrzymać komendę;

- do licznika można w każdej chwili wpisać dowolną wartość (16-bitowa liczbę), co spowoduje że licznik będzie zliczał

impulsy od tej wartości aż do przepełnienia; wpisu takiego najlepiej jest dokonać w czasie gdy licznik jest zatrzymany;

- dodatkowo licznik można “bramkować” czyli uzależnić jego pracę lub zatrzymanie w zależności od stanu panującego na

wejściach:INT0 dla licznika T0 oraz INT1 dla licznika T1;

- oprócz tego licznik T1 (jak i T2 w 8052) może “taktować” zbudowany port szeregowy w specjalnym trybie;

33. Co to jest przerwanie i jak jest realizowana obsługa przerwań w 8051 Przerwanie (interrupt) to sposób pracy procesora polegający na tym, że pod wpływem sygnału zewnętrznego lub

pochodzącego z układu wewnętrznego mikrokontrolera, procesor przerywa wykonanie bieżącego programu i przechodzi

do wykonywania podprogramu związanego z sygnałem przerwania. Podprogram obsługi przerwania jest zakończony

specjalnym rozkazem, który powoduje, że procesor powraca do wykonywania przerwanego programu. Aby móc

kontrolować przerwany program, przed wejściem do podprogramu obsługi przerwania, procesor musi zapamiętać miejsce,

w którym nastąpiło przerwanie. Odbywa się to poprzez zapisanie zawartości licznika rozkazów do buforu pamięciowego

nazywanym stosem.

W zależności od typu procesora czy mikrokontrolera, w momencie przejścia procesora do obsługi przerwania, na stosie

oprócz zawartości licznika rozkazów mogą być składowane automatycznie również zawartości innych rejestrów. Ale w

rodzinie '51 wywołanie przerwania, albo rozkaz CALL wywołujący podprogram, powoduje, że na stosie jest chowana

tylko zawartość licznika rozkazów. Zawartość pozostałych rejestrów, np. rejestru PSW, DPTR itp. lub komórek pamięci

muszą być chowane programowo.

Również w zależności od typu procesora, adres (interrupt vector) od którego rozpoczyna się podprogram obsługi

przerwania jest określany w różny sposób. W jednych procesorach może być stały, umieszczonym pod ściśle określonym

adresem pamięci programu - tak jest w rodzinie '51, w innych może być określany programowo lub przez urządzenie

zewnętrzne.

Lp. znacznik źródło przerwania adres

1

2

3

4

5

IE0

TF0

IE1

TF1

RI+TI

przerwanie zewnętrzne INT0

przerwanie od licznika T0

przerwanie zewnętrzne INT1

przerwanie od licznika T2

przerwanie od nad. i odb. portu szeregowego

0003h

000Bh

0013h

001Bh

0023h

6

7

8

9

10

11

12

TF2+EXF2

IADC

IEX2

IEX3

IEX4

IEX5

IEX6

przerwanie od licznika T2 i wejścia T2EX

przerwanie od przetwornika A/C

przerwanie zewnętrzne INT2

przerwanie zewnętrzne INT3, komparator CRC

przerwanie zewnętrzne INT4, komparator CC1

przerwanie zewnętrzne INT5, komparator CC2

przerwanie zewnętrzne INT6, komparator CC3

002Bh

0043h

004Bh

0053h

005Bh

0063h

006Bh

12

xtalFF

Page 17: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

W mikrokontrolerach rodziny '51 adresy podprogramów obsługi przerwań są umieszczone w początkowym obszarze

pamięci programu.

Do wykrywania przerwań zewnętrznych służą linie INT0 i INT1. Mogą one reagować albo na poziom sygnału („0”) albo

na zbocze opadające. Wykrywanie przez procesor zmiany poziomu sygnału na wejściu przerwań zewnętrznych polega na

testowaniu stanu wejścia w każdym cyklu maszynowym. Jeżeli w jednym cyklu maszynowym występuje jeden stan, a w

drugim drugi stan, to jest to traktowane przez układ przerwań jako zmiana poziomu. Dlatego, by układ poprawnie

zareagował na sygnał przerwania, zarówno stan wysoki jak i niski powinny trwać przynajmniej przez jeden cykl

maszynowy.

Przy przerwaniach zewnętrznych reagujących na poziom, przed zakończeniem podprogramu obsługi przerwania, sygnał

wejściowy powinien przejść do poziomu wysokiego lub należy zablokować to przerwanie, gdyż w przeciwnym przypadku

nastąpi ponowne wejście do obsługi tego przerwania.

Stan znaczników wywołujących przerwania jest sprawdzany w fazie S5P2 każdego cyklu maszynowego. W następnym

cyklu maszynowym po wykryciu sygnału przerwania następuje rozpoznanie źródła przerwania oraz ustalenie kolejności

obsługi przerwania, jeśli wystąpiło kilka sygnałów przerwań równocześnie. W dwóch kolejnych cyklach maszynowych jest

zapamiętywana na stosie zawartość licznika rozkazów, do licznika rozkazów jest wpisywany adres przerwania i jest

ewentualnie zerowany znacznik wywołujący przerwanie, jeżeli jest to znacznik zerowany sprzętowo.

Wejście do procedury obsługi przerwania może być opóźnione jeżeli:

jest obsługiwane przerwanie, które nie może być przerwane. W tej sytuacji musi być ono najpierw zakończone, potem jest

wykonywany jeden rozkaz z przerwanego programu i dopiero wtedy może być obsłużone kolejne przerwanie.

nie został zakończony aktualnie wykonywany rozkaz. Najpierw musi być zakończony rozkaz, by procesor przeszedł do

obsługi przerwania.

Z powyższego wynika wniosek, że czas od momentu nadejścia sygnału przerwania do momentu wejścia do procedury

obsługi przerwania może być różny.

Mikrokontroler nie obsługuje sygnału przerwania, który przyszedł gdy przerwanie było zablokowane.

Jeżeli do trzeciego cyklu maszynowego procedury przerwania nadejdzie następny sygnał przerwania o wyższym

poziomie niż aktualny, to zostanie on obsłużony w pierwszej kolejności. Po wejściu do procedury obsługi przerwania

system przerwań zostaje zablokowany dla innych przerwań, chyba że nadejdzie przerwanie o wyższym priorytecie.

Odblokowanie systemu następuje po rozkazie RETI. Rozkaz ten ponadto powoduje przepisanie dwóch bajtów ze szczytu

stosu do rejestru rozkazów PC. Zakończenie podprogramu obsługi przerwania rozkazem RET również odtworzy zawartość

rejestru rozkazów, czyli nastąpi powrót do wykonywania przerwanego programu, ale nie nastąpi odblokowanie systemu

przerwań dla następnych przerwań !

Gdy równocześnie nadejdzie kilka sygnałów przerwań żądających obsługi, to o kolejności ich obsłużenia decyduje

priorytet ustalony arbitralnie przez producenta. Oznacza to, że przerwanie o wyższym priorytecie zostanie obsłużone przed

przerwaniem o niższym priorytecie.

Lp. Źródło przerwania Priorytet

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

IE0

IADC

TF0

IEX2

IE1

IEX3

TF1

IEX4

RI+TI

IEX5

TF2+EXF2

IEX6

najwyższy

najniższy

W mikrokontrolerach rodziny '51 wprowadzono mechanizm umożliwiający nadanie wybranym przerwaniom

bezwzględnego pierwszeństwa, tzn. mają one możliwość przerwania wykonywanego podprogramu obsługi innego

przerwania. Przerwaniom można nadać odpowiedni poziom. Jeżeli w trakcie obsługi przerwania nadejdzie sygnał

przerwania o wyższym poziomie, to procesor przerwie wykonywanie przerwania z poziomu niższego, wykona obsługę

wyższego i ponownie przejdzie do wykonywania obsługi przerwania.

Do ustalania poziomów przerwania służą rejestry poziomu przerwań. W zależności od typu mikrokontrolera mogą

występować jeden lub dwa rejestry.

W mikrokontrolerach 8xC51/52 występuje rejestr IP:

Page 18: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

X – zarezerwowane

PT2 – licznik (mikrokontroler 8xC52)

PS – port szeregowy

PT1 – licznik T1

PX1 – przerwanie zewnętrzne INT1

PT0 – licznik T0

PX0 – przerwanie zewnętrzne INT0

Należy zwrócić uwagę, że w mikrokontrolerach 8xC51/51 rejestr IP znajduje się pod adresem, pod którym w

mikrokontrolerach 80C515/535 znajduje się rejestr IEN1.

Ustawienie w rejestrze IP w stan 1 znacznika dla wybranego źródła przerwania powoduje, że przerwanie to osiąga

wyższy poziom od przerwań, których znaczniki mają stan 0. W ten sposób wyróżnione przerwanie będzie obsłużone jako

pierwsze, jeśli zgłosi się kilka przerwań, lub spowoduje przerwanie obsługiwanego przerwania i zostanie samo obsłużone.

Jeśli kilka źródeł przerwań zostanie wyróżnionych wyższym poziomem, to, gdy zgłoszą się równocześnie, o kolejności

obsłużenia zadecyduje priorytet, według podanej wyżej tabeli.

34. Co to jest cykl maszynowy mikrokontrolera 8051? Cykl maszynowy jest podstawową jednostką określającą czas wykonywania instrukcji. Dla rodziny mikrokontrolerów '51

składa się on z sześciu stanów, oznaczonych od S1 do S6, z których każdy dzieli się na dwie fazy P1 i P2. Czas trwania

jednej fazy jest równy okresowi oscylatora. Wynika stąd, że czas trwania cyklu maszynowego jest 12 razy dłuższy od

okresu oscylatora.

W każdym stanie cyklu maszynowego są realizowane pewne podstawowe procedury związane z wykonywaniem

rozkazów.

Rozkazy są pobierane z pamięci wewnętrznej lub zewnętrznej mikrokontrolera spod adresu wskazywanego przez licznik

rozkazów (PC).

Rozkazy mogą być jedno lub wielobajtowe, a czas ich wykonywania może trwać jeden lub kilka cykli maszynowych. W

rodzinie '51 występują rozkazy jedno, dwu i trzyj-bajtowe, które są wykonywane w jednym, dwóch lub czterech cyklach

maszynowych.

35. Scharakteryzuj wykonywanie rozkazu jednobajtowego.

Jeżeli rozkaz jest jednobajtowy, to jest on wykonywany w jednym cyklu maszynowym, a bajt następnego rozkazu jest

pobierany w takcie S1 kolejnego cyklu maszynowego.

Page 19: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany

36. Scharakteryzuj wykonywanie rozkazu dwubajtowego.

Większość rozkazów dwubajtowych jest wykonywana w jednym cyklu maszynowym, z tym że drugi bajt rozkazu jest

pobierany w takcie S4 cyklu maszynowego.

37. Scharakteryzuj wykonywanie rozkazu trzybajtowego.

Rozkazy trójbajtowe są wykonywane w dwóch cyklach maszynowych. W jednym cyklu maszynowym, w taktach S1 i S4, są

pobierane dwa bajty rozkazu, a w takcie S1 drugiego cyklu maszynowego jest pobierany trzeci bajt rozkazu. Bajt nowego

rozkazu jest pobierany w takcie S1 trzeciego cyklu maszynowego.

38. Scharakteryzuj sposób wykonywania rozkazu jednobajtowego w kilku cyklach maszynowych W rodzinie '51 występują również rozkazy jednobajtowe i dwubajtowe, które są wykonywane w dwóch lub czterech cyklach

maszynowych. W czterech cyklach maszynowych są wykonywane tylko rozkazy mnożenia (MUL AB) i dzielenia (DIV AB).

Po pobraniu każdego bajtu rozkazu następuje automatyczne zwiększenie o jeden licznika rozkazów.

Znajomość liczby cykli maszynowych potrzebnych na wykonanie poszczególnych rozkazów jest konieczna w przypadku

generowania przez mikrokontroler odcinków czasów o dużej dokładności. Sygnały o krótkich czasach uzyskuje się najczęściej

przez wykonanie programu wymagającego odpowiedniej liczby cykli maszynowych.

Page 20: A&Qzsp4.malbork.pl/files/6-pytania_i_odpowiedzi_z... · 2019-09-05 · odpowiedniej kolejności w zapisie i odczycie tak aby nasze cenne dane nie "pomieszały się". Otóż taki uporządkowany