A&Q PYTANIA I ODPOWIEDZI Z MIKROKONTROLERÓW



Podobne dokumenty
CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

MIKROPROCESORY architektura i programowanie

Historia mikrokontrolerów

MIKROPROCESORY architektura i programowanie

MIKROKONTROLERY I MIKROPROCESORY

Wstęp Architektura... 13

architektura komputerów w 1 1

2. Architektura mikrokontrolerów PIC16F8x... 13

Hardware mikrokontrolera X51

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Organizacja typowego mikroprocesora

Programowanie w językach asemblera i C

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Logiczny model komputera i działanie procesora. Część 1.

SML3 październik

Projekt z przedmiotu Systemy akwizycji i przesyłania informacji. Temat pracy: Licznik binarny zliczający do 10.

Systemy wbudowane. Wprowadzenie. Wprowadzenie. Mikrokontroler 8051 Budowa

Lista rozkazów mikrokontrolera 8051

Zagadnienia zaliczeniowe z przedmiotu Układy i systemy mikroprocesorowe elektronika i telekomunikacja, stacjonarne zawodowe

LEKCJA TEMAT: Zasada działania komputera.

Technika Mikroprocesorowa

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Technika mikroprocesorowa I Wykład 4

Mikroprocesor Operacje wejścia / wyjścia

3.2. Zegar/kalendarz z pamięcią statyczną RAM 256 x 8

Opis mikrokontrolera AT89C2051

Architektura mikrokontrolera MCS51

Zerowanie mikroprocesora

Architektura mikrokontrolera MCS51

ARCHITEKTURA PROCESORA,

WPROWADZENIE Mikrosterownik mikrokontrolery

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Podział układów cyfrowych. rkijanka

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

Asembler - język maszynowy procesora

organizacja procesora 8086

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

Ćw. 7: Układy sekwencyjne

LICZNIKI PODZIAŁ I PARAMETRY

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Statyczne badanie przerzutników - ćwiczenie 3

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Lista rozkazów mikrokontrolera 8051 część pierwsza: instrukcje przesyłania danych, arytmetyczne i logiczne

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Mikrokontroler 80C51

Porty wejścia/wyjścia w układach mikroprocesorowych i w mikrokontrolerach

Budowa i zasada działania komputera. dr Artur Bartoszewski

Mikrokontroler Intel dr inż. Wiesław Madej

Przykładowe pytania DSP 1

dwójkę liczącą Licznikiem Podział liczników:

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Technika mikroprocesorowa I Wykład 2

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

WFiIS CEL ĆWICZENIA WSTĘP TEORETYCZNY

Metody obsługi zdarzeń

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

Struktura i działanie jednostki centralnej

Architektura komputerów

Informacje ogólne o układzie 8051.

Zapoznanie się z podstawowymi strukturami liczników asynchronicznych szeregowych modulo N, zliczających w przód i w tył oraz zasadą ich działania.

UKŁADY CYFROWE. Układ kombinacyjny

Wykład Mikroprocesory i kontrolery

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

Instrukcja do ćwiczenia : Matryca komutacyjna

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Podstawy Informatyki Elementarne podzespoły komputera

PRZERZUTNIKI: 1. Należą do grupy bloków sekwencyjnych, 2. podstawowe układy pamiętające

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Przerwania, polling, timery - wykład 9

Ćwiczenie 9 Częstościomierz oparty na µc 8051(8052)

Architektura komputerów

Technika mikroprocesorowa. W. Daca, Politechnika Szczecińska, Wydział Elektryczny, 2007/08

TECHNIKA MIKROPROCESOROWA

Pamięci półprzewodnikowe w oparciu o książkę : Nowoczesne pamięci. Ptc 2013/

Budowa systemów komputerowych

Architektura komputerów. Asembler procesorów rodziny x86

Architektura komputerów

2.1 Porównanie procesorów

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Techniki mikroprocesorowe i systemy wbudowane

Obszar rejestrów specjalnych. Laboratorium Podstaw Techniki Mikroprocesorowej Instytut Mikroelektroniki i Optoelektroniki PW

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Mikrokontroler ATmega32. System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe

UKŁAD SCALONY. Cyfrowe układy można podzielić ze względu na różne kryteria, na przykład sposób przetwarzania informacji, technologię wykonania.

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

dokument DOK wersja 1.0

Cyfrowe Elementy Automatyki. Bramki logiczne, przerzutniki, liczniki, sterowanie wyświetlaczem

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Kod produktu: MP01611

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

4. Karta modułu Slave

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

BADANIE PRZERZUTNIKÓW ASTABILNEGO, MONOSTABILNEGO I BISTABILNEGO

Transkrypt:

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

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)

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 2 16 =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.

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: F F xtal 12 gdzie F xtal 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

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.

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).

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

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.

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)XDATA A MOVX A,@R0 11100010b A (256*P2+R0)XDATA MOVX @R1,A 11110011b (256*P2+R1)XDATA A 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.

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

- 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 wykonywana operacja instrukcji MOVX @R0,A 11110010b (256*P2+R0)XDATA A MOVX A,@R0 11100010b A (256*P2+R0)XDATA MOVX @R1,A 11110011b (256*P2+R1)XDATA A 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 MOVX P2,#3cH MOVX @R0,A ;R0-58H ;P2-3Ch ;(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).

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ą indeksoworejestrowo 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.

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 0 0 0 0 1 1 1 0 2 1 1 3 synchroniczna, 8bitów asynchroniczna, 8 bitów asynchroniczna, 9 bitów asynchroniczna, 9 bitów częstotliwość taktująca f osc /12 zmienna f osc /64 lub f osc /32 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

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

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 F xtal 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 6 7 8 9 10 11 12 IE0 TF0 IE1 TF1 RI+TI TF2+EXF2 IADC IEX2 IEX3 IEX4 IEX5 IEX6 F F xtal 12 przerwanie zewnętrzne INT0 przerwanie od licznika T0 przerwanie zewnętrzne INT1 przerwanie od licznika T2 przerwanie od nad. i odb. portu szeregowego 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 0003h 000Bh 0013h 001Bh 0023h 002Bh 0043h 004Bh 0053h 005Bh 0063h 006Bh

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:

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.

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.