Jaros
ław W. Kłos
Architektura komputer
ó w i programowanie niskopoziomowe
Laboratorium
Pozna
ń 2005
1. Wprowadzenie
2. Budowa mikrokontrolera 8051 i systemu DSM-51
2.1. Mikrokontroler 8051
2.1.1. CPU, podstawowe rejestry
2.1.2. Pamię ć
2.1.3. Cykl rozkazowy
2.1.4. Zintegrowane ukł
ady peryferyjne
2.1.5. Przerwania
2.1.6. Przeglą d instrukcji
2.1.7. Tryby adresowania
2.2. Budowa i obsł
uga systemu DSM-51
2.2.1. Tryby pracy i organizacja pamię ci zewnę trznej w systemie DSM-51
2.2.2. Ukł
ady systemu DSM-51
3. Asembler mikrokontrolera 8051
3.1. Podstawy programowania mikrokontrolera 8051 w systemie DSM-51
3.1.1. Skł
adnia pliku ź ródł
owego
3.1.2. Proces asemblacji
3.1.3. Dyrektywy asemblera i literał
y
3.1.4. Wywoł
ywanie podprogramów EPROMu
3.1.5. Pierwszy program
3.1.6. Pę tle
3.1.7. Rozgał
ę zienia
3.2. Pamię ć
3.2.1. Pamię ć wewnę trzna
•
Rejestry specjalne
•
Banki rejestrów
•
Stos
•
Bity adresowanie bezpośrednio
3.2.2. Pamię ć programu
3.2.1. Obsł
uga tablic w pamię ci programu
3.2.3. Pamię ć zewnę trzna
3.2.4. Obsł
uga urzą dzeń wejścia – wyjścia
3.3. Stos i podprogramy
3.3.1. Modularyzacja programu
•
Interfejs podprogramu
•
Korzystanie z zasobów mikrokontrolera wewną trz podprogramu
3.3.2. Rola stosu przy wywoł
aniu i powrocie z podprogramu
3.3.3. Rekurencja
3.4. Operacje arytmetyczne i logiczne
3.4.1. Reprezentacje liczbowe
•
Liczby NB
•
Liczby U2
•
Reprezentacja BCD
3.4.2. Operacje arytmetyczne
•
Dodawanie i odejmowanie liczb NB i U2 – flagi C i OV
•
Dodawanie i odejmowanie liczb BCD – flaga AV i poprawka dziesię tna
•
Mnożenie i dzielenie
•
Konwersje liczbowe
•
Rotacje
•
Dodawanie i odejmowanie liczb wielobajtowych
•
Operacje na tablicach
3.4.3. Operacje logiczne
•
Suma i iloczyn logiczny
•
Negacja i suma bitowa modulo dwa
•
Stosowanie masek
•
Operacje logiczne na bitach
4. Zintegrowane układy peryferyjne mikrokontrolera 8051
4.1. Porty
4.2. Ukł
ady czasowe
4.3. Sterownik transmisja szeregowej
4.4. Przerwania
5. Układy we-wy w systemie DSM-51
5.1. klawiatura matrycowa
5.2. klawiatura sekwencyjna
5.3. wyświetlacze 7-segmentowe
5.4. wyświetlacz LDC
5.5. port równoległ
y
Dodatki:
A. Lista rozkazów mikrokontrolera 8051
B. Rozkazy zmieniają ce stan flag
C. Dyrektywy asemblera
D. Rejestry specjalne
E. Podprogramy EPROMu w systemie DSM-51
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
1
1.
Wprowadzenie
Skrypt ten powstał
jako materiał
uzupeł
niają cy do zaję ć laboratoryjnych z Architektury
komputeró w i programowania niskopoziomowego prowadzonych na Wydziale Fizyki UAM.
Ć wiczenia prowadzone są z wykorzystaniem Dydaktycznego Systemu Mikroprocesorowego
DSM-51, którego sercem jest mikrokontroler rodziny 8051. Gł
ównym celem tych zaję ć jest
zapoznanie studentów z podstawami programowania niskopoziomowego oraz z budową i
obsł
ugą elementów systemu mikroprocesorowego. Szczególny nacisk poł
ożony jest na
poznanie dział
ania ukł
adów peryferyjnych.
Wybór mikrokontrolera 8051 podyktowany był
prostotą jego budowy i obsł
ugi.
Opanowanie asemblera 8051 i zrozumienie dział
ania prostego systemu mikroprocesorowego
nie przysparza studentom szczególnych trudności. Prostota asemblera 8051 nie jest tu
ograniczeniem, gdyż oddaje najważniejsze i wspólne cechy wię kszości asemblerów bardziej
zł
ożonych procesorów. Ograniczoność zasobów i uboga lista rozkazów wymuszają oszczę dne
korzystanie z pamię ci i rejestrów oraz kształ
tują dobre nawyki programistyczne –
implementacja algorytmów jest tu trudniejsza i wymaga umieję tnego wykorzystania
dostę pnych rozkazów.
W pierwszej czę ści skryptu zarysowano budowę mikrokontrolerów rodziny 8051 oraz
systemu DSM-51. W kolejnym rozdziale przedstawiono podstawy asemblera 8051.
Omówiono: instrukcje i struktury sterują ce przebiegiem programu, tryby adresowania i
rozkazy przesł
ań , pamię ć w systemie mikrokontrolera 8051, obsł
ugę stosu i wykorzystanie
podprogramów; rozdział
zakoń czono opisem instrukcji logicznych i arytmetycznych.
Nastę pnie zamieszczono opis zintegrowanych ukł
adów peryferyjnych mikrokontrolera 8051
oraz przedstawiono system przerwań . Ostatni rozdział
zawiera omówienie wybranych
ukł
adów wejścia-wyjścia systemu DSM-51. W dodatkach zebrano: listę rozkazów
mikrokontrolera 8051, dyrektywy asemblera, mapę pamię ci i wykaz ważniejszych rejestrów
specjalnych oraz spis podprogramów EPROMu w systemie DSM-51.
Materiał
zawarty w skrypcie nie stanowi wyczerpują cej monografii poświę canej
mikrokontrolerowi 8051. Niniejsza praca nie przestawia również wszystkich niuansów
programowania niskopoziomowego. Zainteresowani studenci bę dą zmuszeni się gną ć po
specjalistyczną lekturę . Pomocą może tu posł
użyć zamieszczony w skrypcie spis pozycji
bibliograficznych. Skrypt napisano do ćwiczeń laboratoryjnych prowadzonych na Wydziale
w wymiarze 45 godzin. Stą d też autorzy zmuszeni byli do ograniczenia poruszanej w nim
tematyki i wyboru omawianych zagadnień ; mają jednak nadzieję , iż skrypt ten może być
pomocny w nauce podstaw programowania niskopoziomowego.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
2
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
3
2.
Budowa mikrokontrolera 8051 i systemu DSM-51
W niniejszy rozdział
jest skrótowym omówieniem budowy mikrokontrolera 8051 oraz
systemu DSM-51. Zawiera on podstawowe informacje, z którymi powinien zapoznać się
student przed przystą pieniem do nauki programowania mikrokontrolera i urzą dzeń systemu
DSM-51. W dalszych rozdział
ach, w trakcie nauki programowania, poruszane bę dą
zagadnienia szczegół
owe.
2.1. Mikrokontroler 8051
Przedstawione tu wiadomości, dotyczą ce mikrokontrolera 8051, mają charakter
wprowadzają cy. Ze wzglę du na to że, rozwią zania zastosowane w ukł
adach 8051 są typowe,
stą d poniższy opis można traktować jako ogólną charakterystykę szerokiej klasy
mikrokontrolerów. Mikrokontrolery rodziny 8051 wytarzane są przez wielu producentów w
dużej liczbie wariantów różnią cych się ilością i rodzajem wewnę trznej pamię ci programu
(sposobem jej programowania), ilością wewnę trznej pamię ci danych, typem zintegrowanych
ukł
adów peryferyjnych, liczbą ź ródeł
przerwań , dozwolonymi czę stotliwościami taktowania i
napię ciami zasilania. Przedstawiony niżej opis przedstawia rozwią zania najbardziej typowe,
wspólne dla wię kszości mikrokontrolerów tej rodziny. Zainteresowani szczegół
ami czytelnicy
zmuszeni bę dą się gną ć do pozycji cytowanych w bibliografii.
Termin mikrokontroler oznacza ukł
ad elektroniczny wysokiej skali integracji, który w
swojej strukturze zawiera:
•
mikroprocesor
•
pamię ć
•
urzą dzenia wejścia – wyjścia.
Mikrokontroler stanowi zatem, scalony w jednym ukł
adzie elektronicznym, autonomiczny
system mikroprocesorowy. Podł
ą czają c stosunkowo niewielka liczbę innych elementów
(takich jak czujniki, sygnalizatory, ukł
ady zasilania) można zbudować niewielkim kosztem w
peł
ni funkcjonalne urzą dzenie. Obecnie w wię kszości bardziej zaawansowanych ukł
adów
sterowania i automatyki stosuje się mikrokontrolery. Mikrokontrolery możemy znaleź ć
zarówno w urzą dzeniach gospodarstwa domowego (telewizory, pralki, kuchenki
mikrofalowe), w systemach kontroli czasu i dostę pu (bankomaty, parkomaty, czytniki kart),
jaki i w zastosowaniach przemysł
owych (urzą dzenia pomiarowe, kontrola i sterowanie
procesem technologicznym). Ta zaskakują ca powszechność mikrokontrolerów w różnego
rodzaju aplikacjach wynika z dużej elastyczności urzą dzenia opartego o scalony system
mikroprocesorowy. Dział
anie systemu określa tu program zał
adowany do pamię ci.
Mikrokontroler można zatem potraktować jako „czarną skrzynkę ” o określonej liczbie wejść i
wyjść, której funkcja wyznaczona jest nie tyle przez jej budowę lecz przez wykonywany
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
4
przez nią program. Ł adują c inny program można realizować inne funkcje na tej samej
platformie sprzę towej.
mikrokontroler
mikroprocesor
pami
ę ć
programu
pami
ę ć
danych
zintegrowane uk
łady wejś cia-wyjś cia
porty
pami
ę ć
programu
pami
ę ć
danych
uk
łady
wej
ś cia
wyj
ś cia
uk
łady
wej
ś cia
wyj
ś cia
magistarala wewn
ę trzna
magistarala zewn
ę trzna
Rys.1. Schemat blokowy mikrokontrolera.
Projektowanie urzą dzenia w oparciu o mikrokontrolery jest szczególnie wskazane w
nastę pują cych przypadkach:
•
budowa ukł
adu w oparciu o konwencjonalne ukł
ady logiczne jest nieopł
acalna
(Zaprojektowanie ukł
adu w oparciu o konwencjonalne ukł
ady logiczne może być
nieopł
acalne ze wzglę du na duża liczbę użytych podzespoł
ów i wysokie koszty
projektowania – sprzę towa implementacja pewnych funkcji może być bardzo trudna i
skomplikowana)
•
nie istnieje wyspecjalizowany ukł
ad realizują cy dane zadanie
(Na rynku istnieje wiele wysoko-wyspecjalizowanych ukł
adów elektronicznych. Nie
ma uzasadnienia projektowanie ukł
adu zegarka cyfrowego na bazie mikrokontrolera, o
ile nie jesteśmy zainteresowani jakimiś nietypowymi funkcjami)
•
szybkość dział
ania ukł
adu nie jest najważniejsza
(Dział
anie programu polega na wykonywaniu cią gu standardowych operacji –
instrukcji. Projektują c ukł
ad z konwencjonalnych ukł
adów logicznych, można
zbudować bloki funkcjonalne realizują ce bardziej wyspecjalizowane funkcje. Dzię ki
temu cał
y bę dzie dział
ał
efektywniej)
•
istotna jest ł
atwość wprowadzania zmian i ulepszeń
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
5
(W przypadku mikrokontrolera możliwa jest zmiana sposobu dział
ania urzą dzenia
poprzez zmianie programu zał
adowanego do mikrokontrolera)
•
urzą dzenie wykorzystuje urzą dzenia wejścia-wyjścia, które są zintegrowane w
mikrokontrolerze
(Stosują c mikrokontroler zawierają cy w swej strukturze wszystkie potrzebne w
projektowanym urzą dzeniu ukł
ady wejścia – wyjścia ograniczamy do minimum ilość
podzespoł
ów)
Sercem każdego mikrokontrolera jest mikroprocesor. Zasadniczymi elementami
mikroprocesora są :
•
jednostka arytmetyczno – logiczna
•
ukł
ady sterują ce
•
ukł
ad obsł
ugi przerwań
•
rejestry dostę pne programowo
Zadaniem jednostki arytmetyczno – logicznej (ALU), jak wskazuje nazwa, jest
wykonywanie operacji arytmetycznych takich jak: dodawanie, odejmowanie, mnożenie,
dzielenie oraz logicznych: negacja, suma i iloczyn logiczny. Lista dostę pnych operacji
arytmetyczno-logicznych jest określona dla danego typu mikroprocesora. Szczególną rolę ,
przy wykonywaniu operacji arytmetycznych i logicznych, peł
ni rejestr zwany akumulatorem
(A). Do akumulatora ł
adowany jest zwykle jeden z argumentów operacji. Ponadto najczę ściej
wynik operacji zapisywany jest również w akumulatorze.
R0
R1
R2
R3
R4
R5
R6
R7
ALU
A
PSW
PC
IR
SP
dekoder
rozkaz
ó w
pami
ę ć
programu
uk
ład obsługi
przerwa
ń
pami
ę ć
danych
uk
łady
wej
ś cia
wyj
ś cia
B
mikroprocesor
Rys.2. Uproszczony schemat mikroprocesora układó w rodziny 8051. Linie ciągłe, kreskowane
i kropkowane oznaczają odpowiednio przesłania: danych, adresó w i sygnałó w sterujących.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
6
Ukł
ady sterują ce odpowiedzialne są za wymianę sygnał
ów sterują cych pomierzy
poszczególnymi elementami mikroprocesora w tzw. cyklu rozkazowym. Wykonywanie
programu polega na pobieraniu kolejnej instrukcji z pamię ci programu, interpretacji pobranej
instrukcji a nastę pnie jej wykonaniu. Adres komórki pamię ci programu pod którym
rozpoczyna się kod kolejnej instrukcji zawarty jest w liczniku rozkazów (PC). Każda
instrukcja ma przypisany unikatowy kod. Kod ten w fazie pobierania instrukcji zapisywany
jest do rejestru rozkazów (IR). Nastę pnie tzw. dekoder rozkazów na podstawie kodu rozkazu
wysył
a sygnał
y sterują ce do odpowiednich ukł
adów mikroprocesora. W odpowiedzi na te
sygnał
y ma miejsce przetwarzanie lub przesył
anie danych. Jeśli przesł
anie danych dotyczy
pamię ci to do mikroprocesor wpisuje bufora adresu (MAR) adres żą danej komórki pamię ci.
Dane przesył
ane mię dzy mikroprocesorem a pamię cią danych wymieniane są za
pośrednictwem rejestru buforowego danych (MBR).
Każdy cykl rozkazowy skł
ada się z jednego lub kilku tzw. cykli maszynowych (patrz
rozdział
cykl rozkazowy). Ukł
ad obsł
ugi przerwań w każdym cyklu maszynowym sprawdza
stan tzw. linii przerwań . Poprzez te linie ukł
ady wejścia/wyjścia przesył
ają sygnał
y żą dania
przerwania. Sygnał
przerwania oznacza, że w urzą dzeniu wystą pił
o pewne zdarzenie, które
wymaga obsł
ugi ze strony mikroprocesora (np.: na wejściu portu pojawił
y się dane, licznik
uległ
przepeł
nieniu). Po odebraniu sygnał
u żą dania przerwania ukł
ad identyfikuje ź ródł
o
przerwania, a nastę pnie na podstawie stanu rejestru maski przerwań (IE) i rejestru priorytetów
przerwań (IP) podejmuje decyzję o rozpoczę ciu lub zaniechaniu obsł
ugi przerwania. Obsł
uga
przerwania polega na zawieszeniu wykonywania programu i rozpoczę ciu wykonywania
specjalnego kodu (procedury) w celu obsł
ugi urzą dzenia zgł
aszają cego przerwanie. Gdy
procedura obsł
ugi przerwania zostanie zakoń czona, ukł
ad obsł
ugi przerwań wznawia
dział
anie zawieszonego programu.
Każdy mikrokontroler zawiera w swojej strukturze pamię ć. Ze wzglę du na peł
nioną
funkcję możemy wyróżnić nastę pują ce rodzaje pamię ci wewnę trznej
•
pamię ć programu
•
pamię ć danych
Pamię ć programu zawiera kody wykonywanych instrukcji oraz bloki danych. Jest to
pamię ć nieulotna (tzn. jej zawartość jest zapisana wzglę dnie trwale i nie ulega zniszczeniu
przy wył
ą czeniu zasilania). Pamię ć ta przeznaczona jest tylko do odczytu. Oznacza to, że
program nie ma możliwości modyfikacji sam siebie oraz, że dane umieszczone w pamię ci
programu są traktowane jak stał
e (tzn. ich wartości nie mogą ulec zmianie). Wśród instrukcji
assemblera nie ma zatem rozkazu, który umożliwiał
by zapis do pamię ci programu.
Zawartość wewnę trznej pamię ć programu mikrokontrolera jest ustalana w trakcie procesu
technologicznego (pamię ć ROM) lub w procesie tzw. programowania pamię ci programu
(pamię ci EPROM, PROM, FLASH). W tym drugim wariancie mikrokontroler podł
ą cza się
tzw. programatora. Urzą dzenie to wysył
a specjalne sygnał
y sterują ce do mikrokontrolera i w
określonych odstę pach czasu ł
aduje dane do pamię ci programu. Dane te programator pobiera
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
7
zwykle poprzez port równoległ
y (bą dź szeregowy) z komputera PC, gdzie program
asemblerowy został
uprzednio napisany i przetł
umaczony na kody bajtowe.
W wewnę trznej pamię ci danych wykonywany program umieszcza tymczasowe dane i
wyniki obliczeń . Pamię ć danych (RAM) jest pamię cią ulotną (tzn. jej zawartość ulega
zniszczeniu przy wył
ą czeniu zasilania). Oprócz tymczasowych danych i wyników obliczeń w
pamię ci wewnę trznej mikrokontrolera zawarte są również wszystkie jego rejestry i struktura
zwana stosem.
Wewnę trzna pamię ć programu i pamię ć danych poł
ą czona jest z pozostałymi
elementami mikrokontrolera (jednostka arytmetyczno logiczna, rejestry, urzą dzenia
wejścia - wyjścia) poprzez wewnę trzną magistralę danych, magistralę adresową i magistralę
sterują ca. Każda magistrala zorganizowana jest w nastę pują cy sposób. Do linii magistrali ma
równoległ
y dostę p kilka ukł
adów (mikroprocesor, pamię ć danych, pamię ć programu, liczne
ukł
ady wejścia wyjścia). Tylko jedno z nich peł
ni rolę nadajnika (wysył
a dane na magistralę ).
Wysł
ane na magistrale dane przeznaczone są tyko dla jednego urzą dzenia, pozostał
e znajdują
się w stanie wysokiej impedancji (tzn. są odł
ą czone od magistrali). Na podstawie
odpowiednich adresów i sygnał
ów sterują cych wystawionych na magistralę określane jest
miejsce ź ródł
owe lub docelowe dla danych.
Wię kszość mikrokontrolerów posiada możliwość podł
ą czenia zewnę trznej pamię ci
programu i zewnę trznej pamię ci danych. W przypadku pamię ci programu aktywny może być
tylko jeden jej rodzaj (pamię ć zewnę trzna albo wewnę trzna). O tym czy wykonywany jest
program z zewnę trznej czy też z wewnę trznej pamię ci programu decyduje specjalny sygnał
doprowadzony z zewną trz do mikrokontrolera. Natomiast wewnę trzna i zewnę trzna pamię ć
danych posiadają odrę bne przestrzenie adresowe. Inne rozkazy przeznaczone są do wymiany
danych z zewnę trzną i wewnę trzną pamię cią danych. Stą d też obia typy pamię ci mogą być
wykorzystywanie równocześnie. Zewnę trzna pamię ć danych i zewnę trzna pamię ć programu
podł
ą czone są do mikrokontrolera poprzez zewnę trzne magistrale: danych, adresową i
sterują cą . Zewnę trzna magistrala danych i zewnę trzna magistrala adresowa są wyprowadzane
na koń cówki portów mikrokontrolera. W przypadku braku zewnę trznej pamię ci danych i
zewnę trznej pamię ci programu porty te peł
ną swą tradycyjna rolę – sł
użą do wymiany
sygnał
ów wejścia/wyjścia.
W zależności od typu mikrokontrolera może on zawierać różne rodzaje urzą dzeń
wejścia/wyję cia. Do wystę pują cych najpowszechniej można zaliczyć:
•
porty równoległ
e
•
porty szeregowe
•
ukł
ady licznikowo – zegarowe
•
przetworniki analogowo – cyfrowe
•
przetworniki cyfrowo – analogowe
Porty równoległ
y posiada szereg koń cówek (zwykle jest to wielokrotność ośmiu), przez które
równocześnie odbywa się wymiana danych. Dzię ki temu przez port równoległ
y można w tym
samym czasie nadać (lub odebrać) wiele bitów danych. Gdy port równoległ
y posiada osiem
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
8
koń cówek można w jednej chwili czasu nadać lub odebrać cał
y bajt. W odróżnieniu od portu
równoległ
ego, port szeregowy wymienia dane za pośrednictwem jednej linii, na której w
kolejnych odstę pach czasu pojawiają się poszczególne bity nadawanego (lub odbieranego)
bajta. Aby nadać (lub odebrać) cał
y bajt należy nadać (lub odebrać) kolejne jego bity.
Rola przetwornika analogowo – cyfrowego polega na zamianie sygnał
u analogowego
podanego na wejście przetwornika na jego reprezantację cyfrową . Sygnał
em analogowym jest
zwykle napię cie elektryczne, które może przybierać dowolne wartości w zadanym zakresie.
Zakres ten podzielony jest na szereg przedział
ów. Każdemu z przedziałów przyporzą dkowany
jest inny kod binarny. Przetwornik pobiera próbkę sygnał
u wejściowego i sprawdza w którym
przedziale zakresu się ona mieści. Nastę pnie przyporzą dkowuje próbce odpowiedni kod
binarny.
Przetwornik cyfrowo – analogowy generuje na swoim wyjściu sygnał
analogowy
odpowiadają cy cyfrowemu kodowi binarnemu podmenu na jego wejście. Ze wzglę du na to
że, liczba kodów binarnych reprezentują cych wartości analogowe jest zawsze skoń czona, na
wyjściu przetwornika cyfrowo-analogowy pojawiają się sygnał
u analogowe o ściśle
określonych poziomach.
Zadaniem ukł
adów licznikowo – zegarowych jest zliczanie impulsów sygnał
ów
pochodzą cych ze ź ródeł
zewnę trznych lub odmierzanie czasu. Sygnał
em zewnę trznym może
np. być napię cie na styczniku podł
ą czonym do odpowiedniego portu mikrokontrolera. Ilość
zliczonych impulsów daje informację o liczbie zał
ą czeń stycznika. Pomiar czasu obywa się
poprzez zliczanie określonej ilości cykli zegara mikrokontrolera. Ukł
ad dział
a wówczas jako
dzielnik czę stotliwości, a przepeł
nienie licznika daje informację o upł
ynię ciu określonego
interwał
u czasu.
2.1.1. CPU – podstawowe rejestry
Rejestry są rodzajem szybkiej i ł
atwo dostę pnej dla mikroprocesora pamię ci. Zasadniczy
proces interpretacji kodu i przetwarzania danych odbywa się za pomocą rejestrów. Nie
wszystkie rejestry mikroprocesora są bezpośrednio dostę pne dla programisty. Czę ść
rejestrów, bardzo istotna dla procesów zachodzą cych wewną trz mikroprocesora, jest
niedostę pna programowo. Wykonywany program nie może bezpośrednio zmienić ich
wartości. Stan tych rejestrów nie może być też wykorzystany do pamię tania wyników dział
ań
bą dź sterowania przebiegiem programu. Do rejestrów niedostę pnych programowo można
zaliczyć wspomniane wcześniej: rejestr rozkazów (IR), bufor adresów (MAR) i bufor danych
(MBR). W bieżą cym rozdziale zostaną omówione wył
ą cznie dostę pne programowo rejestry
mikroprocesora.
Operacje arytmetyczno – logiczne wykonywane są najszybciej gdy ich argumenty
umieszczone są w rejestrach. Wyniki operacji wraz z informacją o możliwych bł
ę dach
zapisywane są w specjalnie przeznaczonych do tego celu rejestrach. Rejestry są stosowane
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
9
przy odwoł
ywaniu się komórek pamię ci, kontrolują przebieg programu – stan pewnych
rejestrów jest istotny przy wykonywaniu skoków, obsł
udze przerwań i podprogramów.
Oprócz rejestrów mikroprocesora (CPU) mikrokontroler zawiera szereg rejestrów
sł
użą cych do obsł
ugi zintegrowanych urzą dzeń wejścia/wyjścia. Rejestry te zostaną
szczegół
owo omówione w dalszej czę ści skryptu poświę conej zintegrowanym ukł
adom
peryferyjnym 8051.
Mikrokontroler 8051 jest mikrokontrolerem 8 – bitowym. Oznacza to, że jego rejestry
(poza pewnymi wyją tkami) są 8 – bitowe. Stą d też jednostka arytmetyczno logiczna w
jednym cyklu rozkazowym może w zasadzie wykonać operacje tylko na pojedynczych
bajtach. Konsekwencją tego jest fakt że, wię kszość operacji arytmetyczno – logicznych
mikroprocesora wykonywana na liczbach jednobajtowych. Aby wykonać dodawanie liczb
dwubajtowych należy napisać wł
asną procedurę , która doda do siebie mł
odsze, a nastę pnie
starsze bajty argumentów z uwzglę dnieniem ewentualnego przeniesienia. Dodawanie
mł
odszych i starszych bajtów są operacjami na liczbach jednobajtowych i mogą być
wykonanie przez mikroprocesor bezpośrednio.
Do najważniejszych rejestrów CPU zalicza się :
•
Akumulator
Akumulator (A) jest rejestrem, który jest zaangażowany przy wykonywaniu operacji
arytmetyczno – logicznych. W akumulatorze przechowywany jest zwykle jeden z
argumentów operacji arytmetycznej lub logicznej. Po wykonaniu operacji wynik najczę ściej
przesył
any jest do akumulatora. Oznacza to, że w wyniku wykonania operacji arytmetyczno –
logicznej zwykle ulega nadpisaniu wartość jednego z jej argumentów – przechowywana
uprzednio w akumulatorze. Z tego wzglę du akumulator ł
aduje się tylko tymczasowymi
danymi, które mają być argumentami operacji arytmetyczno – logicznych. Aby zachować
wynik operacji należy przesł
ać go z akumulatora do pamię ci bą dź innego rejestru.
Akumulator wykorzystywany jest również w operacjach skoków warunkowych. Operacje te
testują zawartość rejestru i w zależności do wyniku testu wykonują skok bą dź pomijają
wykonanie skoku. Operacje skoków warunkowych są używane do budowania podstawowych
struktur sterują cych przebiegiem programu asemblerowego takich jak rozgał
ę zienia i pę tle.
Wynik operacji arytmetycznej operacji arytmetycznej lub logicznej może dzię ki zastosowaniu
skoków warunkowych z testem akumulatora zadecydować o dalszym przebiegu programu.
•
Rejestr pomocniczy B
Rejestr pomocniczy B (zwany również akumulatorem pomocniczym) używany jest przy
operacjach mnożenia i dzielenia. Asembler 8051 pozwala na bezpośrednie mnożenie oraz
dzielenie (cał
kowite) jedynie akumulatora i rejestru B. Przy wykonywaniu dzielenia dzielną
pobierana jest z akumulatora, natomiast dzielnik – z rejestru B. Po wykonaniu operacji
dzielenia iloraz zawarty jest w akumulatorze, a reszta z dzielenia zostaje zapisana w rejestrze
B. Ze wzglę du na to, iż wynikiem mnożenia liczb jednobajtowych jest (w ogólności) liczna
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
10
dwubajtowa, wynik mnożenia nie może być zawarty w cał
ości w akumulatorze. Po
wykonaniu mnożenia w akumulatorze znajduje się tylko mł
odszy bajt iloczynu. Starszy bajt
wyniku przesył
any jest do rejestru B.
•
Rejestr stanu
Wybrane bity rejestru stanu (PSW) peł
nią rolę tzw. flag. Flagi sygnalizują pewne krytyczne,
wymagają ce obsł
ugi, sytuacje wystę pują ce podczas wykonywania operacji arytmetycznych.
Należą do nich: przeniesienie lub pożyczka przy dodawaniu i odejmowaniu liczb naturalnych
(flaga przeniesienia C), przekroczenie zakresu liczb ze znakiem przy dodawaniu i
odejmowaniu (flaga przepeł
nienia OV), pożyczka lub przeniesienie pomię dzy starszą i
mł
odszą czę ścią bajta podczas dodawania i odejmowania (flaga przeniesienia pomocniczego
AC), przekroczenie zakresu jednego bajta przy mnożeniu liczb naturalnych (flaga OV),
wystą pienie dzielenia prze zero (flaga OV). Rejestr stanu zawiera również tzw. flagę
parzystości. Jej ustawienie oznacza, że w akumulatorze liczba bitów równych jeden jest
parzysta. Flaga ta w przeciwień stwie do flag: C, OV i AC które, zmieniają się po wykonaniu
operacji arytmetycznych, modyfikowana przy każdym wpisie do akumulatora (może się
zatem zmienić np. po wykonaniu operacji przesł
ania danych). Dwa bity w rejestrze stanu
oznaczane jako F0 i F1 peł
nią rolę flag (bitów) ogólnego zastosowania i mogą być
wykorzystane przez programistę do innych celów. Bity RS0 i RS1 sł
użą do wyboru obszaru
pamię ci w którym przechowywana jest zawartość ośmiu rejestrów: R0, R1, ... , R7 (obsł
uga
banków rejestrów R0-R7 zostanie omówiona w odrę bnym podpunkcie).
Tabela 1. Oznaczenia i funkcje kolejnych bitó w rejestru stanu (PSW)
numer
bitu
oznaczenie
opis
7
CY
flaga przeniesienia
6
AC
flaga przeniesienia pomocniczego
5
F0
bit ogólnego przeznaczenia
4
RS1
3
RS0
bity wyboru banku rejestrów roboczych
2
OV
flaga przepeł
nienia
1
F1
bit ogólnego przeznaczenia
0
P
flaga parzystości
•
Banki rejestrów R0-R7
Mikrokontroler 8051 dysponuje ośmioma rejestrami ogólnego zastosowania (zwanymi
również rejestrami roboczymi) oznaczonymi: R0, R1, R2, ... , R7. W rejestrach tych
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
11
przechowuje się wszystkie tymczasowe dane na których mikroprocesor wykonuje się bieżą ce
operacje. Mogą to być: dane pobrane z pamię ci, pośrednie wyniki operacji arytmetyczno –
logicznych, iteratory używane w pę tlach, wskaź niki danych, itp.. Podobnie jak w przypadku
akumulatora zawartość rejestrów R0-R7 może być testowana przy pomocy skoków
warunkowych (lista dostę pnych instrukcji jest w tym przypadku uboższa). Zawartość
rejestrów roboczych zapisana jest w wewnę trznej pamię ci mikrokontrolera. Pierwsze 24 bajty
pamię ci wewnę trznej został
y podzielone na 4 ośmiobajtowe banki. W zależności od stanu
bitów RS0 i RS1 (w rejestrze stanu) rejestry robocze przypisane są do jednego z czterech
banków (przedstawia to Tabela 2).
Tabela 2. Adresy wewnę trznego RAM’u przypisane każdemu z bankó w rejestró w roboczych.
bity wyboru banku
RS1
RS0
numer
banku
adresy rejestrów
roboczych
0
0
0
00-07(00-07)
H
0
1
1
08-15(08-0F)
H
1
0
2
16-23(10-17)
H
1
1
3
24-31(18-1F)
H
Po (re)starcie mikrokontrolera rejestr stanu jest wyzerowany. Oznacza to, że rejestry robocze
są domyślnie przypisane do najniższego banku. Mechanizm zmiany banku rejestrów
roboczych może być wykorzystany w dwojaki sposób. (1) W wyją tkowych sytuacjach
programista może potrzebować wię cej niż ośmiu rejestrów roboczych, wówczas uaktywniają c
inny bank nie traci wartości zapisany uprzednio w rejestrach roboczych. Zmiana aktywnego
banku rejestrów uniemożliwia jednak bezpośrednie korzystanie z uprzednio wybranego
banku. Rejestry R0-R7 zwią zane są wówczas z innym obszarem pamię ci. (2) W przypadku
procedury obsł
ugi przerwań i niektórych podprogramów zachodzi konieczność zachowania
wartości rejestrów roboczych tak by procedura obsł
ugi przerwania (lub podprogram) mogł
a
nienależnie korzystać z rejestrów R0-R7, a po jej zakoń czeniu możliwe był
o odtworzenie
poprzednich ich wartości i kontynuowanie dział
ania programu. W procedurze obsł
ugi
przerwania (lub w podprogramie) można wówczas aktywować inny bank rejestrów
roboczych, a tuż przed jej zakoń czeniem aktywować bank używany w programie gł
ównym.
Dwa spośród rejestrów roboczych – rejestry R0 i R1 – wykorzystywane są jako
wskaź niki przy odwoł
ywaniu się do komórek zewnę trznej i wewnę trznej pamię ci danych.
Wspomniany sposób adresowania zostanie szczegół
owo omówiony w rozdziale poświę conym
trybom adresowania.
•
Wskaź nik danych DPTR
Wskaź niki danych (DPTR) jest jednym z dwóch 16-bitowych rejestrów mikrokontrolera
8051. Rejestr ten używany jest jako wskaź nik przy odwoł
ywaniu się do danych zawartych w
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
12
zewnę trznej pamię ci danych i pamię ci programu. Wykorzystanie rejestru DPTR bę dzie
omówione wyczerpują co w rozdziale „Tryby adresowania”.
•
Licznik rozkazów
W liczniku rozkazów (PC) przechowywany jest adres komórki pamię ci programu spod której
ma być pobrany kolejny kod rozkazu. Przed wykonaniem rozkazu licznik rozkazów musi być
zwię kszony liczbę bajtów jaką zajmuje w pamię ci programu bieżą cy kod rozkazu. Dzię ki
temu po wykonaniu rozkazu nowa wartość licznika rozkazów bę dzie wskazywał
a adres pod
którym rozpoczyna się nastę pny rozkaz.
Licznik rozkazów jest rejestrem 16-bitowym. Rejestr ten jest jedynym z dostę pnych
programowo rejestrów mikrokontrolera którego wartości nie można odczytać ani zapisać.
Zmiana wartości licznika rozkazów dokonuje się w toku wykonywania programu. Ma to
miejsce w nastę pują cych sytuacjach. (1) Przed wykonaniem każdego rozkazu (licznik
rozkazów zwię kszany jest o ilość bajtów jaką zajmuje bieżą cy rozkaz). (2) Przy
wykonywaniu skoku (do licznika rozkazów ł
adowany jest adres pamię ci programu pod który
wykonywany jest skok). (3) Przy wywoł
aniu podprogramu lub procedury obsł
ugi przerwanie
oraz w momencie powrotu z podprogramu lub procedury obsł
ugi przerwania. W opisanych
powyżej przypadkach zmiana licznika rozkazów odbywa się automatycznie. Programista nie
ma możliwości ingerencji w te procesy. Nie może bezpośrednio zmienić wartości licznika
rozkazów ponieważ nie ma możliwości zaadresowania tego rejestru.
Gdy stał
e zapisane w pamię ci programu znajdują się w bezpośrednim są siedztwie
kodu programu wówczas istnieje możliwość odwoł
ani się do nich poprzez jeden z trybów
adresowania. W trybie tym adres danych opracowywany jest jako suma licznika rozkazów
oraz przesunię cia. Zawartość licznika rozkazów wskazuje miejsce w kodzie w którym koń czy
bieżą cy rozkaz – czyli rozkaz który odwoł
uje się do danych. Przesunię cie określa ilość bajtów
w kodzie programu jakie dzieli dane od rozkazu odwoł
ują cego się do nich. Wyznaczanie
adresu odbywa się automatycznie. Nie jest wiec w tym przypadku potrzebna programiście
jawna znajomość wartości licznika rozkazów.
•
Wskaź nik stosu
W każdym mikroprocesorze istnieje struktura nazywana stosem. Zgodnie z nazwą dostę p do
danych zgromadzonych na stosie nie jest swobodny. Ze stosu można odczytać (zdją ć) tylko te
dane, które został
y zapisane do (wrzucone na) stosu jako ostatnie. W mikrokontrolerze 8051
stos umieszczony jest w wewnę trznej pamię ci danych. Wrzucanie danych na stos polega na
zapisie kolejnych komórek pamię ci począ wszy od pewnego adresu bazowego (dna stosu).
Przy zrzucaniu danych ze stosu nastę puje odczyt kolejnych, coraz bliższych dnu stosu,
komórek pamię ci. Aby oba procesy mogł
y przebiegać w kontrolowany sposób potrzebny jest
rejestr, zwany wskaź nikiem stosu (SP), w którym przechowuje się adres wierzchoł
ka stosu.
Wskaź nik stosu wskazuje adres komórki pamię ci pod którym zapisano ostatnie dane
wrzucone na stos. W przypadku gdy stos jest pusty wskaź nik stosu zawiera adres mniejszy o
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
13
jeden od adresu bazowego. Do zapisu i odczytu danych ze stosu sł
użą dwa specjalne rozkazy.
Przez wrzuceniem danych na stos mikroprocesor automatycznie zwię ksza o jeden
(inkrementuje) wskaź nik stosu. Przy zrzucaniu danych ze stosu kolejność wskaź nik stosu jest
zmniejszany o jeden (dekrementowany) dopiero po odczycie danych.
W przeciwień stwie do licznika rozkazów programista na możliwość odczytu i zapisu
wskaź nika stosu. Odczyt wskaź nika stosy pozwala kontrolować ilość pamię ci jaką zajmuje
stos. Natomiast zapis do wskaź nika stosu umożliwia, na począ tku programu, gdy stos jest
pusty, wybór innego adresu bazowego dla stosu.
•
Rejestr maski przerwań
Wię kszość mikroprocesorów ma możliwość odbioru sygnał
ów z kilku ź ródeł przerwań . Aby
mieć możliwość sprawnej obsł
ugi przerwań wprowadzono mechanizm za pomocą którego
można blokować sygnał
y przerwań . Jest to użyteczne w trzech przypadkach. (1) W pewnych
sytuacjach programista może w ogóle nie być zainteresowany obsł
ugą przerwań . Ewentualne
sygnał
y żą dania przerwania zakł
ócałyby niepotrzebnie pracę programu. Należy wówczas
zablokować wszystkie sygnał
y przerwań . (2) Jeśli podję to się obsł
ugi przerwań z kilu
wygranych ź ródeł
pozostał
e ź ródł
a przerwań nie powinny w żaden sposób wpł
ywać na bieg
programu – ich sygnał
y przerwań powinny zostać zablokowane. (3) W trakcie obsł
ugi
przerwania należy zablokować sygnał
obsł
ugiwanego przerwania aby mieć możliwość jej
wykonania.
Tabela 3. Oznaczenia kolejnych bitó w rejestru maski przerwań (IE).
numer
bitu
oznaczenie
maskowane ź ródł
o przerwania
7
EA
wszystkie ź ródł
a przerwań
6
-
5
-
4
ES
port szeregowy
3
ET1
ukł
ad licznikowy T1
2
EX1
przerwanie zewnę trzne INT1
1
ET0
ukł
ad licznikowy T0
0
EX0
przerwanie zewnę trzne INT1
Sygnał
przerwania powinien być odblokowany tuż przed opuszczeniem procedury obsł
ugi.
Umożliwia to ponowną reakcję na sygnał
przerwania. Mikrokontroler 8051 jest w stanie
odebrać sygnał
y przerwań pochodzą ce z pię ciu ź ródeł
. Trzy ź ródł
a przerwań stanowią
wewnę trzne ukł
ady peryferyjne mikrokontrolera: dwa ukł
ady licznikowo – zegarowe oraz
port szeregowy. Pozostał
e dwa zwią zanie są ukł
adani zewnę trznymi, które mogą być
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
14
podł
ą czone do mikrokontrolera przez dwie linie przerwań . W rejestrze maski stanu (IE) –
zwanym również rejestrem zezwoleń na przerwania – stan bitu EA określa czy
mikrokontroler w ogóle podejmuje obsł
ugę przerwań . Pię ć innych bitów (por. Tabela 3)
umożliwia zablokowanie (maskowanie) poszczególnych ź ródeł
przerwań .
•
Rejestr priorytetów przerwań
Gdy mikroprocesor jest zaangażowany w obsł
ugę przerwania może pojawić się sygnał
z
innego ź ródł
a przerwania. Musi wówczas zostać podję ta decyzja o zawieszeniu (bą dź
kontynuowaniu) obsł
ugi bieżą cego przerwania i podję ciu (bą dź zaniechaniu) obsł
ugi nowego
przerwania. W mikrokontrolerze 8051 każdemu z pię ciu ź ródeł
przerwań można przypisać
wysoki lub niski poziom priorytetu. Na podstawie poziomów priorytetów bieżą cego i nowego
przerwania podejmowana jest decyzja o kontynuowaniu lub zaniechaniu wykonywania
procedury obsł
ugi bieżą cego przerwania. Poziomy priorytetów ź ródeł
przerwań określa stan
poszczególnych bitów rejestru priorytetów przerwań (IP). W Tabeli 4 opisano znaczenie
kolejnych bitów tego rejestru.
Tabela 4. Oznaczenia kolejnych bitó w rejestru maski przerwań (IP).
numer
bitu
oznaczenie
poziom priorytet ź ródł
o przerwania
7
-
6
-
5
-
4
PS
port szeregowy
3
PT1
ukł
ad licznikowy T1
2
PX1
przerwanie zewnę trzne INT1
1
PT0
ukł
ad licznikowy T0
0
PX0
przerwanie zewnę trzne INT1
Szczegół
owy opis obsł
ugi przerwań wraz z przedstawieniem reguł
określają cych
podejmowanie obsł
ugi na podstawie ich priorytetów zostanie przedstawiony w rozdziale
„Przerwania”.
2.1.2. Pamięć
Ze wzglę du na to że, mikrokontrolery rodziny 8051 są mikrokontrolerami ośmiobitowymi,
komórki obsł
ugiwanej przez nie pamię ci są jednobajtowe. Uwaga ta dotyczy zarówno
pamię ci programu jak i pamię ci danych.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
15
Mikrokontrolery 8051 posiadają odrę bne przestrzenie adresowe dla wewnę trznej i
zewnę trznej pamię ci danych. Przestrzeń adresowa pamię ci wewnę trznej ma 256 bajtów
oznacza to, że adresy komórek wewnę trznej pamię ci danych są jednobajtowe. Natomiast
zewnę trzna pamię ć danych adresowana jest dwubajtowo. Wynika stą d, że maksymalny
rozmiar tego rodzaju pamię ci wynosi 64 kilobajty. Do wymiany danych z oboma typami
pamię ci danych sł
użą różne rozkazy przesł
ań . Wewnę trzna pamię ć danych jest bardziej
elastyczna pod wzglę dem możliwości odwoł
ywania się do jej komórek. Mikrokontroler
pozwala stosować kilka trybów adresowania danych pamię ci wewnę trznej, natomiast w
przypadku zewnę trznej pamię ci danych dostę pny jest tylko jeden tryb adresowania (patrz
rozdział
tryby adresowania).
•
Wewnę trzna pamię ć danych
W wewnę trznej pamię ci danych można wyróżnić trzy obszary. (1) W pierwszych 128 bajtach
pamię ci (adresy 0-127) możliwe jest stosowanie dwóch trybów adresowania. (2) Górnemu
obszarowi pamię ci i (3) obszarowi rejestrów specjalnych odpowiada ten sam przedział
adresów (adresy 128-255), lecz oba obszary dostę pne są w innych trybach adresowania.
Przesył
ają c dane do komórki pamię ci o adresie z przedział
u 0-127, w jednym z dwóch
dostę pnych trybów, zapiszemy je w tej samej strukturze fizycznej. Zapis danych pod adresem
z przedział
u 128-255 zostanie dokonany jednym z rejestrów specjalnych lub górnym obszarze
wewnę trznej pamię ci danych w zależności od zastosowanego trybu adresowania.
W obszarze niskich adresów wewnę trznej pamię ci danych (adresy 0-127) znajdują się
4 banki rejestrów roboczych R0-R7. Umieszczono je pod adresami: 0-7, 8-15, 16-23, 24-31.
Obszar niskich adresów przeznaczony jest domyślnie do użytku przez stos. Po restarcie
mikrokontrolera wskaź nik stosu przyjmuje wartość 7. O ile programista nie zmieni wartości
wskaź nika stosu, pierwsze wrzucenie danych na stos spowoduje zapis danych do komórki
pamię ci o adresie 8. Z tego powodu, w mikrokontrolerze 8051 stos zaczyna się wypeł
niać w
miejscu, w którym istnieją trzy wyższe banki rejestrów roboczych. Aby móc jednoczenie
korzystać ze stosu i wyższych banków rejestrów R0-R7 należy przesuną ć wskaź nik stosu do
obszaru wyższych adresów. Adresy (48-127) w dolnym obszarze wewnę trznego RAM’u oraz
cał
y obszar górnej wewnę trznej pamię ci RAM (128-255) przeznaczone są do swobodnego
wykorzystania przez programistę .
W obszarze rejestrów specjalnych przechowywane są wszystkie (z wyją tkiem licznika
rozkazów) dostę pne programowo rejestry mikroprocesora oraz rejestry sł
użą ce do obsł
ugi
zintegrowanych
ukł
adów
peryferyjnych.
W
Tabeli 5
zebrano
adresy
rejestrów
mikrokontrolera omówionych poprzednim rozdziale. Watro zwrócić uwagę , iż 16 bitowy
wskaź nik danych DPTR przechowywany jest w pamię ci w dwóch kolejnych komórkach
oznaczonych DPL i DPH. Pod niższym adresem przechowywany jest mł
odszy bajt wskaź nika
danych (DPH), wyższy adres odnosi się do starszego bajta (DPH). Adresy i znaczenie bitów
rejestrów obsł
ugi ukł
adów peryferyjnych zostaną omówione w dalszej czę ści skryptu.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
16
Tabela 5. Adresy podstawowych rejestró w mikrokontrolera 8051. Pocieniowane komó rki
wskazują rejestry o adresowanych bitach.
rejestr
opis
adres
B
akumulator pomocniczy
240 (F0
H
)
A
akumulator
224 (E0
H
)
PSW
rejestr stanu
208 (D0
H
)
IP
rejestr priorytetów przerwań
184 (B8
H
)
IE
rejestr maski przerwań
168 (A8
H
)
DHP
starszy bajt wskaź nika danych
131 (83
H
)
DPL
mł
odszy bajt wskaź nika danych
130 (82
H
)
SP
wskaź nik stosu
129 (81
H
)
Mikrokontroler 8051 pozwala odwoł
ywać się do poszczególnych bitów w wybranych
komórkach wewnę trznej pamię ci danych. Adresowane bity posiada 16 komórek pamię ci w
niskim obszarze pamię ci oraz 16 rejestrów specjalnych. W niskim obszarze pamię ci bajty z
adresowanymi bitami zajmują cią gł
y obszar (adresy 32-47), natomiast adresowane bity
posiada co ósmy rejestr specjalny (128, 136, 144, ... ,248). Wśród adresowalnych rejestrów
mikroprocesora tylko wskaź nik stosu (SP) oraz wskaź nik danych (DPTR) nie posiadają
adresowalnych bitów. Adresy rejestrów: A, B, PSW, IP, IE dzielą się przez osiem, co
wskazuje iż do bitów tych rejestrów można odwoł
ywać się bezpośrednio. Ł atwo się wykazać,
że mikrokontroler 8051 dysponuje 256-ma adresowanymi bitami (dwie 16 bajtowe grupy
komórek pamię ci). Adres bitu należą cego do jednej z szesnastu komórek niskiego RAM’u
(32-47) adresy można wyznaczyć zgodnie z poniższym wzorem:
adres_bitu = (adres_bajtu-32)*8 + numer_bitu_w_bajcie
gdzie adres_bajtu oznacza adres jednej z szesnastu komórek pamieci (adresy 32-47), a
numer_bitu_w_bajcie określa numer bitu w komórce pamię ci (0 – najmł
odszy bit, 7-
najstarszy bit). Np. trzeci bit w komórce o adresie 39 ma przyporzą dkowany adres równy: 59.
Adresy bitów rejestrów specjalnych można wyrazić wzorem:
adres_bitu = adres_bajtu + numer_bitu_w_bajcie
Wynika stą d, że najmł
odszy bit rejestru specjalnego ma taki sam adres jak komórka pamię ci
w której znajduje się rejestr.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
17
128-255
(80-FF)
H
pami
ęć ogólnego
przeznaczenia
048-127
(30-7F)
H
032-047
(20-2F)
H
024-031
(18-1F)
H
016-023
(10-17)
H
008-015
(08-0F)
H
S
t
o
s
000-007
(00-07)
H
Rys.3. Organizacja wewnę trznej pamię ci danych mikrokontrolera 8051. Obszary
zakreskowane oznaczają pamię ć adresowaną bezpośrednio (poprzez podanie adresu
komó rki), obszary cieniowane – pamię ć adresowaną pośrednio (za pomocą rejestru
wskaźnikowego).
•
Zewnę trzna pamię ć danych
Zewnę trzna pamię ć danych na przestrzeń adresową wynoszą cą 64 kilobajty. Adresy komórek
tej pamię ci są zatem liczbami dwubajtowymi. Do adresowania tego rodzaju pamię ci używa
się dwubajtowego wskaź nika danych DPTR oraz rejestrów roboczych R0 albo R1. W drugim
przypadku w rejestrze R0 lub R1 zapisuje się mł
odszy bajt adresu. Starszy bajt adresu
wystawiany jest na wyjście portu P2. Adresowanie pośrednie zewnę trznej pamię ci danych
przy pomocy rejestrów DPTR, R0 i R1 zostanie omówione w detalach w rozdziale
poświę conym trybom adresowania.
Dostę p do zewnę trznej pamię ci danych na ogół
trwa dł
użej niż w przypadku
wewnę trznego RAM’u (każdy z rozkazów przesł
ania trwa dwa cykle maszynowe). Pamię ć ta
jest też mniej elastyczna niż wewnę trzna pamię ć danych. Zewnę trzny RAM można adresować
tylko w jednym trybie, ponadto wymiana danych odbywa się tutaj zawsze za pośrednictwem
akumulatora. Aby przesł
ać z jednej komórki zewnę trznej pamię ci danych do drugiej należy
najpierw przesł
ać dane do akumulatora, a nastę pnie innym rozkazem wysł
ać zawartość
akumulatora pod docelowy adres.
Programista może wykorzystywać zewnę trzną pamię ć danych w zasadzie bez
wię kszych ograniczeń . Mikrokontroler 8051 nie posiada odrę bnej przestrzeni adresowej dla
zewnę trznych urzą dzeń wejścia/wyjścia, wię c komunikacja mikroprocesora z zewnę trznymi
obszar rejestr
ów
specjalnych
pami
ęć ogólnego
przeznaczenia
kom
órki o
adresowanych bitach
bank 3
rejestr
ów roboczych
bank 2
rejestr
ów roboczych
bank 1
rejestr
ów roboczych
bank 0
rejestr
ów roboczych
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
18
ukł
adami peryferyjnymi odbywa się identycznie jak wymiana danych z zewnę trznym
RAM’em. W przestrzeni adresowej zewnę trznej pamię ci danych wydziela się (kosztem
zmniejszenia ilości zainstalowanej pamię ci RAM) pewien obszar, który zarezerwowany jest
dla ukł
adów wejścia/wyjścia. Organizacja przestrzeni adresowej zewnę trznej pamię ci danych
zostanie omówiona niżej na przykł
adzie systemu DSM-51. W rozdziale „Ukł
ady systemu
DSM-51” zostanie przedstawiony sposób adresowania zewnę trznych ukł
adów peryferyjnych
(umieszczonych na pł
ycie DSM-51) oraz organizacja magistrali systemu DSM-51.
•
Pamię ć programu
Wię kszość mikrokontrolerów 8051 umożliwia korzystanie z wewnę trznej i zewnę trznej
pamię ci programu. Tylko nieliczne modele rodziny 8051 pozbawione są wewnę trznej pamię ci
programu (w systemie DSM-51 zastosowano ukł
ad 80C31 który może korzystać wył
ą cznie z
pamię ci zewnę trznej). Pamię ć programu zintegrowana w ukł
adzie 8051 może zostać
wykonana w wielu technologiach. (1) W przypadku pamię ci typu ROM program wpisany jest
trwale w procesie technologicznym (za pomocą naświetlania maską ). (2) Pamię ci typu
EPROM i (3) EEPROM (flash) mogą być zapisywane w warunkach warsztatowych za
pomocą tzw. programatorów. Urzą dzenia te poprzez porty P1 i P2 przesył
ają się adresy
komórek pamię ci; port P0 wykorzystują natomiast do wysył
ania danych. W trakcie
zapisywania pamię ci programu programator taktuje mikrokontroler sygnał
em zegarowym.
Kasowanie pamię ci EPROM jest możliwe tylko wówczas, gdy w obudowie mikrokontrolera
znajduje się krzemowe okienko pozwalają ce naświetlić strukturę ukł
adu promieniami
ultrafioletowymi. Tań sze ukł
ady w plastykowej obudowie (pozbawione okienka
krzemowego) umożliwiają jedynie jednokrotne zapisanie pamię ci programu. W przypadku
ukł
adów EEPROM kasowanie wewnę trznej pamię ci programu odbywa się poprzez wysł
anie
odpowiednich sygnał
ów sterują cych.
W pewnych sytuacjach zapisany w pamię ci wewnę trznej program musi być chroniony
przez możliwością jego odczytania, dopisania dalszych fragmentów kodu, czy też podł
ą czenia
zewnę trznej pamię ci programu. Zabezpieczenia te można uaktywnić w ukł
adzie wysył
ają c
odpowiednie sygnał
y sterują ce w procesie zapisywania wewnę trznej pamię ci programu.
Ponadto programowalne wersja mikrokontrolera 8051 posiadają w swojej strukturze tzw.
tabelę szyfrują ca. W zależności od wersji mikrokontrolera liczy ona 16, 32 lub 64 bajty. Po
ustawieniu odpowiednich sygnał
ów sterują cych ładowanie tabeli szyfrują cej przebiega
podobnie jak zapisywanie pamię ci programu. Odczyt (weryfikacja) pamię ci programu przez
programator daje wówczas nastę pują cy rezultat:
dane_odczytane = not ( dane_zapisane exor dane_tablicy_szyfrującej[i] )
gdzie
i = adres_danych mod długość _tablicy_szyfrującej
Nieznajomość tablicy szyfrują cej praktycznie uniemożliwia poprawne odczytanie pamię ci
programu.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
19
zewn trzna
pami
ę
ę ć
programu
mikrokontroler
b)
32767
7FFF
(
H
)
0000
0000
H
(
)
w
pami
ewn
ę trzna
ę ć
programu
mikrokontroler
c)
32767
7FFF
(
H
)
0000
0000
H
(
)
w
pami
ewn
ę trzna
ę ć
programu
zewn trzna
pami
ę
ę ć
programu
mikrokontroler
a)
32767
7FFF
(
H
)
0000
0000
H
(
)
65534
FFFF )
H
((
32768
8000
H
(
)
Rys.4. Organizacja pamię ci programu w mikrokontrolerze 8051. (a) Mikrokontroler
wykorzystuje zaró wno wewnę trzną jak i wewnę trzną pamię ć programu. (b) Mikrokontroler
nie posiada, bądź ma wyłączoną (koń có wka EA w stanie niskim) wewnę trzną pamię ć
programu. (c) W systemie istnie tylko aktywna pamię ć wewnę trzna.
Gdy w systemie istnieje zewnę trzna pamię ć programu wówczas należy ustalić z
którego rodzaju pamię ci mikrokontroler rozpocznie pobieranie kodu. Określa to stan jednego
z wyprowadzeń mikroprocesora oznaczonego jako EA. Gdy wyprowadzenie EA jest w stanie
wysokim to pierwsza wykonana instrukcja bę dzie pochodzić z pamię ci wewnę trznej. Po
wykonaniu cał
ego kodu zawartego w wewnę trznej pamię ci programu kolejny bajt kodu
bę dzie poprany z pierwszej komórki pamię ci zewnę trznej. Jeśli wyprowadzenie EA jest w
stanie niskim, to wykonywany jest wył
ą cznie kod zawarty w zewnę trznej pamię ci programu.
Wewnę trzna i zewnę trzna pamię ć programu traktowana jest w sposób jednolity. Z punktu
widzenia mikrokontrolera obie pamię ci tworzą spójna, cią gł
a, 64 kilobajtową przestrzeń
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
20
adresową pamię ci programu. Zgodnie z powyższym możliwe są zatem dwa warianty. (1) Gdy
wyprowadzenie EA znajduje się w stanie niskim to pierwsza komórka pamię ci zewnę trznej
ma wówczas adres równy 0 w przestrzeni adresowej pamię ci programu nie zależnie od tego
czy mikrokontroler posiada bą dź nie wewnę trzną pamię ć programu. Jeśli w mikrokontrolerze
istnie wewnę trzna pamię ć programu to jest ona niewidoczna dla systemu. (2) Jeśli
wyprowadzenie EA jest w stanie wysokim to adres 0 w przestrzeni adresowej odpowiada
począ tkowi wewnę trznej pamię ci programu, a pamię ć zewnę trzna stanowi kontynuacji
pamię ci wewnę trznej – pierwsza komórka zewnę trznej pamię ci danych ma adres równy
pojemności (wyrażonej w bajtach) pamię ci wewnę trznej.
Po (re)starcie mikrokontrolera licznik rozkazów przyjmuje wartość 0. Stą d też
pierwszy bajt kodu jest pobierany spod adresu 0. Pierwszy kod rozkazu asemblerowego musi
zatem być umieszczony pod tymże adresem. Jednakże obszar niskich adresów pamię ci
programu (począ wszy od adresu 3) jest zarezerwowany na procedury obsł
ugi przerwań . Z
tego też wzglę du pierwszy rozkaz kodu asemblerowego jest skokiem, który omija procedury
obsł
ugi przerwań i umożliwia rozpoczę cie wykonywania kodu w obszarze wyższych adresów.
2.1.3. Cykl rozkazowy
Wszystkie procesy zachodzą ce w systemie mikroprocesorowym synchronizowane są
periodycznym sygnał
em generatora określanego zwyczajowo jako sygnał
zegarowy. Kolejne
okresy sygnał
u zegarowego wyznaczają rytm i sekwencję wszystkich procesów
rozgrywają cych się w ukł
adzie. Mikroprocesor (mikrokontroler) jest zatem cyfrowym
ukł
adem sekwencyjnym. Stan ukł
adu sekwencyjnego jest funkcją dyskretnego czasu oraz
historii ukł
adu. Kwanty czasu wyznaczone są tu przez kolejne okresy sygnał
u zegarowego.
Mikrokontrolery
rodziny
8051
mają
możliwość
wykorzystania
zarówno
wewnę trznego generatora sygnał
u zegarowego jak i podł
ą czenia generatora zewnę trznego. W
przypadku stosowania generatora wewnę trznego należy podł
ą czyć do wyprowadzeń
mikrokontrolera jedynie rezonator kwarcowy, który określi czę stotliwość sygnał
u
zegarowego. Niektóre wersje mikrokontrolerów 8051 pozwalają na taktowanie sygnał
em o
czę stotliwości 33 MHz. W systemie DSM-51 zastosowano zegar o czę stotliwości
11.0592 MHz.
Instrukcje (rozkazy) mikrokontrolera wykonywane są w tzw. cyklach rozkazowych. W
czasie trwania cyklu rozkazowego mikroprocesor podejmuje nastę pują ce akcje:
•
pobiera kodu operacji,
•
dekoduje kod operacji,
•
pobiera argumenty (operandy) rozkazu,
•
zwię ksza wartość licznika rozkazów,
•
wykonuje rozkaz,
•
zapisuje wynik.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
21
Pierwsze cztery etapy cyklu rozkazowego nazywa się fazą pobrania; dwa ostatnie są
określane jako faza wykonania.
pobranie
kodu operacji
PC=0
pobranie
argument
ów
dekodowanie
kodu operacji
zwi
ę kszenie
PC
wykonanie
rozkazu
zapisanie
wynik
ów
Rys.5. Cykl rozkazowy.
Pierwszy bajt w kodzie rozkazu jest tzw. kodem operacji. Unikalny, jednobajtowy kod
operacji określa rozkaz jaki ma wykonać mikroprocesor. W pierwszym etapie cyklu
rozkazowego kod ten przesył
any jest do rejestru rozkazów. Nastę pnie ma miejsce proces
dekodowania kodu operacji w ukł
adzie zwanym dekoderem rozkazów. Po zdekodowaniu
kodu operacji mikroprocesor uzyskuje informację o tym jak dł
ugi jest kod rozkazu, gdzie
znajdują się jego argumenty, jaka operację na wykonać i gdzie wysł
ać wynik operacji. W
dalszej kolejności zmieniana jest wartość licznika rozkazów. Licznik rozkazów zwię kszany
jest o dł
ugość kodu rozkazu wyrażoną w bajtach. Powyższa akcja koń czy fazę pobierania. W
fazie wykonania ma miejsce egzekucja rozkazu, oraz zapisanie ewentualnych wyników
dział
ania rozkazu.
Zilustrujmy powyższe rozważania nastę pują cym przykł
adzem. Zał
óżmy, że
mikroprocesor ma wykonać rozkaz polegają cy na zwię kszeniu o jeden komórki pamię ci
wewnę trznego RAM’u o adresie 50. Lina kodu asemblerowego przedstawiają ca taki rozkaz
ma postać.
INC 20
Przyjmijmy, iż w pamię ci programu kod tego rozkazu rozpoczyna się począ wszy od adresu
300. Powyższa linia kodu ź ródł
owego bę dzie reprezentowana w kodzie programu w
nastę pują cy sposób.
300 7
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
22
301 20
W pierwszej kolumnie umieszczono adresy komórek pamię ci programu; kolumna druga
zawiera wartości przechowywane komórkach pamię ci. Cał
y kod rozkazu zajmuje zatem dwa
bajty pamię ci programu. Wartość 7 (umieszczona pod adresem 300) oznacza kod operacji:
„zwię ksz o jeden zawartość komórki wewnę trznego RAM’u o adresie podanym w kodzie
rozkazu”. Liczba 20 znajdują ca się pod adresem 301 jest jedynym operandem rozkazu i
określa adres komórki pamię ci wewnę trznego RAM’u, której wartość ma zostać zwię kszona.
W fazie pobrania do rejestru rozkazów zostanie zał
adowana wartość 7. Dekoder rozkazów na
taj podstawie uzna, iż w kolejnej komórce pamię ci programu zawarty jest adres komórki
wewnę trznej pamię ci danych, której zawartość powinna być zwię kszona o jeden. Ze wzglę du
na to, że rozkaz o kodzie operacji równym 7 ma dł
ugość dwóch bajtów, licznik rozkazów
zostanie zwię kszony o 2. Po zakoń czeniu cyklu rozkazowego pozwoli to pobrać kod operacji
kolejnego rozkazu znajdują cy się pod adresem 302. W fazie wykonywania nastą pi
zwię kszenie o jeden wartości jaka został
a pobrana z komórki wewnę trznego RAM’u o adresie
20 i zapisanie wyniku pod tym samym adresem.
Czas trwania cyklu rozkazowego jest różny w zależności od rodzaju operacji oraz od
liczby, dł
ugości i trybu odwoł
ywania się do argumentów. Jest on jednak zawsze
wielokrotnością czasu trwania tzw. cyklu maszynowego. Wię kszość instrukcji wykonywana
jest w jednym lub w dwóch cyklach maszynowych. Jedynie dwie instrukcje: rozkaz mnożenia
i dzielenia wymagają czterech cykli maszynowych. Cykl maszynowy skł
ada się z sześciu
stanów oznaczonych: S1, S2, S3, ... , S6. Każdy ze stanów trwa dwa okresy sygnał
u
zegarowego (dwa cykle zegarowe). Wynika stą d że na cykl maszynowy przypada 12 cykli
zegarowych.
R
M1
M2
S1
S2
S3
S4
S5
S6
S1
S2
S3
S4
S5
S6
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
Rys.6. Podział cyklu rozkazowego na cykle maszynowe i zegarowe. Przedstawiono rozkaz
wykonywany w dwó ch cyklach maszynowych.
Czas cyklu rozkazowego można zatem wyznaczyć ze wzoru:
cykl_rozkazowy=12*ilość _cykli_maszynowych/czę stoliwość _zegara
Przykł
adowo, czas wykonywania instrukcji mnożenia w systemie DSM-51 wynosi
12*4/(11.0592 MHz)=4,3403
µ
s.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
23
W niektórych z najnowszych wersji mikrokontrolerów rodziny 8051 cykl maszynowy
trawa 6, 4, czy nawet jeden cykl zegarowy. W ukł
adach tych przy niskiej czę stotliwości
zegara można czas wykonywania instrukcji jest stosunkowo krótki.
•
Zerowanie mikrokontrolera
Każdy mikroprocesor wyposażony jest ukł
ad zerowania, który zapewnia rozpoczę cie pracy
ukł
adu w ściele określonym stanie. Po wł
ą czeniu zasilania stan rejestrów i pamię ci
wewnę trznej mikrokontrolera jest nieokreślony. Z tego też wzglę du, każde rozpoczę cie lub
wznowienie pracy mikrokontrolera musi być poprzedzone specjalną procedurą zerowania. Po
jej zakoń czeniu wszystkie rejestry specjalne uzyskują ściśle określone wartości. Do
wię kszości rejestrów specjalnych zostaje wpisano wartość zero. Reguł
a ta dotyczy również
licznika rozkazów. Dzię ki temu po zakoń czeniu procedury zerowania mikrokontroler w
pierwszym cyklu rozkazowym pobiera kod począ wszy od adresu zero w pamię ci programu –
wznawia zatem wykonywanie programu do począ tku. Odmienne traktowane są jedynie:
wskaź nik stosu i porty mikrokontrolera. Do wskaź nika stosu zostaje wpisany adres 7
(pierwszy wpis na stos odbywa się pod adres 8), a do wszystkich czterech portów wysł
ana
wartość 255 (wszystkie linie portów zostają ustawione w stan wysoki). Zerowanie
mikrokontrolera nie zmienia stanu jego pamię ci wewnę trznej. Z tego też wzglę du
przechowywane w wewnę trznym RAM’ie rejestry robocze nie są zerowane.
Sygnał
reset wprowadzany jest poprzez jedną z koń cówek mikrokontrolera oznaczoną
RST. Koń cówka RST zwykle podł
ą czona jest do masy (lub dodatniego bieguna zasilana przy
przeciwnej polaryzacji sygnał
u reset) poprzez kondensator. Dzię ki temu krótko po wł
ą czeniu
zasilania na wejściu RST generowany jest impuls sygnał
u reset. Zerowanie mikrokontrolera
może być również przeprowadzone w trakcie wykonywania programu w przypadku
stwierdzenia jego nieprawidł
owego dział
ania. Zerowanie może być przeprowadzone
automatycznie przez specjalny ukł
ad (określany jako tzw. watchdog) lub wywoł
ane na
żą danie użytkownika (np. przez wciśnię cie odpowiedniego przycisku).
2.1.4. Zintegrowane układy peryferyjne
Do
wystę pują cych
najpowszechniej
zintegrowanych
ukł
adów
peryferyjnych
mikrokontrolerów rodziny 8051 można zaliczyć: porty równoległ
e, ukł
ady licznikowo –
zegarowe oraz port szeregowy. W bieżą cym rozdziale zostanie przedstawiona krótka
charakterystyka każdego z wymienionych ukł
adów. Zamieszczony opis nie bę dzie jednak
wyczerpują cy – zostanie ograniczony do podstawowych informacji dotyczą cych budowy i
obsł
ugi ww. urzą dzeń .
•
Porty równoległ
e
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
24
Wię kszość mikrokontrolerów rodziny 8051 zawiera trzy ośmiobitowe porty. Do obsł
ugi
portów sł
użą trzy rejestry specjalne oznaczone P0, P1, P2, P3. Odczyt danych z któregoś z
wymienionych rejestrów jest równoważny pobraniu danych z odpowiedniego porty. Wysł
anie
danych na jeden z portów odbywa się poprzez wpisanie zadanej wartości do wł
aściwego
rejestru.
Na koń cówkach dowolnego z portów znajdują się przerzutniki, które pamię tają
ostatnio zapisane dane. Odczyt danych z portu może zatem przebiegać w dwojaki sposób. (1)
Można odczytać bezpośrednio stan koń cówek portu, lub (2) dokonać odczytu stanów
zatrzaśnię tych w przerzutnikach. W pierwszym przypadku uzyskamy informację o stanie
zewnę trznych linii podł
ą czonych do portu – w tej sytuacji odczytujemy sygnały zewnę trzne.
W przypadku drugim, dowiadujemy się jakie dane zapisano ostatnio na port – w tych
okolicznościach pobieramy sygnał
wewnę trzny. Z tego wzglę du, dla portów równoległ
ych
ukł
adu 8051 przewidziano dwa sygnał
y odczytu danych sterują ce trójstanowymi buforami,
które podł
ą czają linie wewnę trznej magistrali danych do wyjść przerzutników lub koń cówek
portów.
Na koń cówkach portów umieszczono tranzystory sterowane (zanegowanymi)
wyjściami przerzutników. Jeśli do przerzutnika wpiszemy logiczną jedynkę wówczas kanał
tranzystora bę dzie zablokowany i koń cówka portu uzyska poprzez rezystor pocią gają cy
wysoki potencjał
. Wpisanie zera do przerzutnika udrażnia kanał
tranzystora i powoduje
zwarcie koń cówki portu do masy. Ł atwo zauważyć, że aby prawidł
owo odczytać stan
koń cówek portu należy uprzednio wpisać do portu (przerzutników) jedynki.
CLK
Q
Q
_
D
V
cc
zapis
dane
odczyt
ko
ó wki
ń c
odczyt
przerzutnika
ko
ń cowka
Rys.7. Budowa koń có wki portu.
Kilka instrukcji mikrokontrolera pobiera argument spod komórki pamię ci o podanym
w kodzie rozkazu adresie, a nastę pnie, co charakterystyczne, zapisuje wynik operacji adresem
tego operandu. (Pozostał
e instrukcje umieszczają wynik operacji w akumulatorze.)
Wspomniane instrukcje określa się jako tzw. instrukcje odczyt-modyfikacja-zapis. Jeśli adres
jest adresem portu to instrukcja typu odczty-modyfikacja-zapis odczytuje stany zatrzaśnię te w
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
25
przerzutnikach portu. Inne instrukcje odwoł
ują ce się do portów mikrokontrolera odczytują
natomiast stan koń cówek portów. Ich wykonanie musi być wię c poprzedzone wysł
aniem na
port ‘jedynek’. Po (re)starcie w przerzutnikach portów zapisane są jedynki. Oznacza to, że
pierwszy odczyt portu przez instrukcje typu odczyt-modyfikacja zapis da wartość 255.
W obszarze rejestrów specjalnych portom P0, ... ,P3 został
y przyporzą dkowane
odpowiednio adresy: 128, 144, 160, 176. Jak ł
atwo zauważyć wszystkie porty
mikrokontrolera mają adresowalne bity. Daje to programiście możliwość odczytu i zmiany
stanu pojedynczych bitów w porcie. Jednakże instrukcje które adresują pojedyncze bity
portów są instrukcjami typu odczty-modyfikacja-zapis. Instrukcje te odczytują stany zapisane
w przerzutnikach portów a nie stany wystę pują ce na koń cówkach portów. Watro mieć
świadomość faktu, że wspomniane instrukcje odczytują wewnę trzny stan wszystkich ośmiu
linii portu, a nastę pnie wykonują operację tylko na wskazanym bicie, po czym dokonują
zapisu cał
ego, zmodyfikowanego w ten sposób bajta na port. Powyższe uwagi są bardzo
istotne dla prawidł
owego zrozumienia zasad obsł
ugi portów. Niuanse dotyczą ce
programowania zostaną omówione szerzej w rozdziale 4.1. Porty.
Na portach P0 i P2 zbudowana jest zewnę trzna magistrala danych i zewnę trzna
magistrala adresowa mikrokontrolera. Obie magistrale wymieniają ł
ą cznie 24 sygnały (16
linii magistrali adresowej i 8 linii magistrali danych). Aby skoncentrować obie magistrale na
16 koń cówkach portów prowadzono multipleksowanie sygnał
ów wymienianych przez port
P0. Na port P2 wystawiany jest starszy bajt adresu. Mł
odszy bajt adresy pojawia się na porcie
P0 chwilę póź niej, gdy wystawione uprzednio na koń cówki portu P0 dane zostaną zapisane w
zewnę trznym buforze zatrzaskowym. Port P3 wykorzystywany jest do wymiany kilku
sygnał
ów sterują cych pracą zewnę trznych magistrali oraz sygnałów przerwań . Pozostałe
koń cówki portu P3 używane są przez ukł
ady licznikowe oraz port szeregowy. Jeśli porty P0,
P2 i P3 nie są wykorzystywane do wyżej wymienionych celów mogą sł
użyć do bezpośredniej
wymiany danych tak jak port P1.
Współ
praca mikrokontrolera 8051 z ukł
adami zewnę trznymi (takimi jak pamię ć
danych, pamię ć programu oraz ukł
ady wejścia/wyjścia) w oparciu o zewnę trzne magistrale
zostanie omówiona w kolejnym rozdziale na przykł
adzie systemu DSM-51.
•
Ukł
ady licznikowo – czasowe
Typowy przedstawiciel rodziny ukł
adów 8051 zawiera w swojej strukturze dwa
szesnastobitowe ukł
ady licznikowo – czasowe oznaczane T0 i T1. Ukł
ady te dział
ają jako
dzielniki czę stotliwości i mają możliwość zliczania cykli maszynowych mikrokontrolera lub
impulsów pochodzą cych ze ź ródeł
zewnę trznych. Zliczanie impulsów zewnę trznych odbywa
się przez czwartą i pią tą koń cówkę portu P3. Impulsy z linii P3.4 i P3.5 inkrementują
odpowiednio licznik T0 i T1. Mikrokontroler sprawdza stan czwartej i pią tej koń cówki portu
P3 w pierwszym cyklu zegarowym stanu S3 każdego cyklu maszynowego. Inkrementacja
odpowiedniego licznika ma miejsce wówczas, gdy stan linii P3.4 lub P3.5 ulegnie zmianie w
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
26
kolejnym cyklu maszynowym. Ogranicza to maksymalną czę stotliwość do 1/24
czę stotliwości cyklu zegarowego. Istnieje możliwość zablokowania liczników sygnał
em
zewnę trznej linii przerwań . Sygnał
przerwania z linii INT0 lub INT1 daje możliwość
wstrzymania pracy odpowiedniego licznika – T0 lub T1.
Zawartość liczników przechowywana jest w czterech rejestrach specjalnych. Pod
adresami 138, 139 umieszczono odpowiednio mł
odsze bajty liczników T0 i T1 – oznaczone
jako TL0 i TL1. Natomiast adresy 140 i 141 zawierają ich starsze czę ści – TH0 i TH1.
Ładują c powyższe rejestry można określić począ tkową wartość od której każdy z układów
rozpocznie zliczanie.
Do kontroli pracy i sterowania ukł
adami licznikowo – zegarowymi sł
uży adresowalny
bitowo rejestr specjalny TCON (o adresie 136).
Tabela 6. Oznaczenia kolejnych bitó w rejestru kontrolnego układó w licznikowych (PCON).
numer
bitu
oznaczenie
poziom priorytet ź ródł
o przerwania
7
TF1
flaga przepeł
nienia licznika T1
6
TR1
bit startu/stopu licznika T1
5
TF0
flaga przepeł
nienia licznika T0
4
TR0
bit startu/stopu licznika T0
0-3
-
bity sterują ce zewnę trznymi liniami
przerwań
Każdy z liczników podejmuje prace tylko wówczas, gdy odpowiednia flaga TR0 lub TR1
rejestru zostanie ustawiona. Rejestr TCON zawiera dwie flagi TF0 i TF1, które są sprzę towo
ustawione przez w momencie przepeł
nienia odpowiedniego licznika. Po zał
adowaniu i
uruchomieniu liczników kontrola stanu flag TF0 i TF1 pozwala określić moment w którym
licznik zliczył
zadaną przez nas liczbę impulsów. Licznik zliczają cy cykle maszynowe może
być wykorzystywany do wyznaczania interwał
ów czasowych. Ładują c do licznika inną
wartość począ tkową można odmierzać zadany interwał
wyznaczony czasem, który upł
ywa do
startu do przepeł
nienia licznika.
czas_przepełnienia=czas_cyklu_maszynowego*(pojemność -wartość _początkowa)
Czę stotliwość zegara w systemie DSM-51 został
a tak dobrana, aby można był
o za pomocą
liczników dokł
adnie odmierzać interwał
y 25 milisekundowe. Posł
ugują c się powyższym
wzorem ł
atwo jest sprawdzić, że po zał
adowaniu wartości 90*256 do licznika o pojemności
2
16
jego przepeł
nienie nastę puje po 25ms.
Każdy z ukł
adów licznikowo – zegarowych generuje sygnał
przerwania w chwili jego
przepeł
nienia. W przypadku, gdy ukł
ad pracuje jako zegar tzn. zlicza cykle maszynowe
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
27
mikrokontrolera może być wykorzystany do okresowego wymuszania jakieś akcji. Kod który
ma być wykonywany okresowo umieszczany jest procedurze obsł
ugi przerwania. W
momencie podję cia obsł
ugi przerwania zostanie automatycznie (na drodze sprzę towej)
wyzerowana flaga TF0 (TF1). Po przeł
adowaniu rejestrów TL0 (TL1) i TH0 (TH1) ukł
ad
licznikowo – zegarowy jest gotowy do wygenerowania kolejnego przerwania i powtórnego
wykonanie kodu umieszczonego w procedurze obsł
ugi przerwania. Zostanie ono zgł
oszone po
upł
ywie czasu potrzebnego do nastę pnego przepeł
nienia się licznika. Obsł
uga przerwań
liczników zostanie mówiona szczegół
owo i zilustrowana przykł
adami w dalszej czę ści
skryptu, w rozdziale 4.4 „Przerwania”.
Ukł
ady licznikowe T0, T1 mogą pracować w czterech opisanych niżej trybach. Przy
czym tylko trzy z nich dostę pne są dla licznika T1. Wprowadzenie licznika T1 w zabroniony
tryb 3. skutkuje jego zatrzymaniem.
(1) W trybie 0 ukł
ad pracuje jako licznik 13-bitowy. Starsza czę ść licznika jest
inkrementowana, gdy nastę puje przeniesienie z czwartego bitu mł
odszej czę ści.
Licznik wykorzystuje wię c tylko 5 bitów rejestru TL0 (TL1) i cał
y rejestr TH0
(TH1). Stan trzech najstarszych bitów rejestru TL0 (TL1) jest w tym trybie pracy
nieokreślony. Pojemność licznika wynosi: 2
5
*2
8
=8192.
(2) W trybie 1 licznik wykorzystuje cał
ą dostę pną pojemność rejestrów TL0 (TL1) i
TH0 (TH1). Ukł
ad jest licznikiem 16-bitowym o pojemność równej: 2
8
*2
8
=65536
(3) W trybie 2 pracuje tylko mł
odsza czę ść licznika. Zawartość starszej czę ści licznika
nie ulega zmianie i jest używana do automatycznego przeł
adowania mł
odszej czę ści
licznika po jej przepeł
nieniu. Ukł
ad pracuje jako licznik 8-bitowy z przeł
adowaniem.
Pojemność licznika wynosi zatem: 2
8
=256.
(4) Tryb 3 zarezerwowany jest wył
ą cznie dla licznika T0. W trybie tym licznik pracuje
jako dwa niezależne liczniki 8-bitowe. Licznik pracują cy na rejestrze TL0
wykorzystuje bity sterują ce TR0 i TF0 oraz ma możliwość zliczania impulsów z
koń cówki P3.4 – tak jak cał
y licznik T0 pracują cy w trybach 0-3. Drugi licznik
dział
ają cy na bazie rejestru TH0 korzysta z bitów sterują cych ukł
adu T1 oraz
koń cówki P3.5 jako ź ródł
a impulsów zewnę trznych. Uniemożliwia to kontrole i
sterowanie licznika T1. Ukł
ad licznikowy T1 może być wówczas wykorzystany
jedynie jako generator sygnał
u taktują cego dla portu szeregowego.
Do ustalenia trybu pracy oraz ź ródł
a zliczanych impulsów sł
uży rejestr specjalny TMOD o
adresie 137. Mł
odsza czę ść rejestru odnosi się do licznika T0, starsza wyznacza sposób pracy
licznika T1. Bity 0 i 1 (4 i 5) określają jeden z czterech trybów pracy dla licznika T0 (T1). Za
pomocą bitu 2 (6) wskazuje się ź ródł
o zliczanych impulsów. Ustawienie tego bitu oznacza
taktowanie licznika kolejnymi cyklami maszynowymi, wyzerowanie – wymusza zliczanie
impulsów zewnę trznych. Ustawienie bitu 3 (7) umożliwia blokowanie licznika T0 (T1) przez
sygnał
na linii przerwań INT0 (INT1).
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
28
TL x
TH x
TF x
f
masz.
TR x
GATE x
C/T x
(impulsy zew.)
(5 bit
ów)
T x
/INT x
(8 bit
ów)
a)
1
0
TF x
TL x
TH x
f
masz.
TR x
GATE x
C/T x
(impulsy zew.)
(8 bit
ów)
T x
/INT x
(8 bit
ów)
b)
1
0
TF x
TL x
f
masz.
TR x
GATE x
C/T x
(impulsy zew.)
(8 bit
ów)
prze
ładowanie
T x
/INT x
TH x
(8 bit
ów)
c)
1
0
TF0
TL0
f
masz.
TR0
GATE0
C/T0
(impulsy zew.)
(8 bit
ów)
T0
/INT0
d)
TF1
TH0
f
masz.
TR1
GATE1
C/T1
(impulsy zew.)
(8 bit
ów)
T1
/INT1
1
0
1
0
Rys.8. Praca układó w licznikowych w czterech dostę pnych trybach. Rysunki a), b), c), d)
przedstawiają pracę licznikó w w trybie 0, 1, 2 i 3.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
29
Tabela 7. Oznaczenia kolejnych bitó w rejestru sterującego trybem pracy układó w
licznikowych.
numer
bitu
oznaczenie
licznik
opis
7
GATE
bramowanie wejścia licznika sygnał
em
przerwania INT1
6
C/T
zliczanie cykli maszynowych lub
impulsów z wejścia zewnę trznego
5,4
M1, M0
T1
określenie trybu pracy
3
GATE
bramowanie wejścia licznika sygnał
em
przerwania INT0
2
C/T
zliczanie cykli maszynowych lub
impulsów z wejścia zewnę trznego
1,0
M1, M0
T0
określenie trybu pracy
•
Port szeregowy
Port szeregowy stanowi standardowe wyposażenie wię kszości ukł
adów rodziny 8051. Port
posiada dwie linie sygnał
owe przeznaczone do wymiany danych. Nadawanie i obiór
odbywają się odpowiednio poprzez przez pierwszą i zerową koń cówką portu P3. Lina
nadawania P3.1 jest oznaczona zwyczajowo jako TxD, natomiast linia odbiorcza P3.0 jako
RxD. Port szeregowy, zintegrowany w ukł
adzie 8051, może pracować w trybie transmisji
synchronicznej lub asynchronicznej.
Transmisja synchroniczna jest w tym ukł
adzie transmisją pół
-dupleksową . Oznacza to,
że każdy port może pracować w trybie nadajnika lub odbiornika. Jednakże w tej samej chwili
port nie może peł
nić obu wspomnianych ról. O tym czy port pracuje jako nadajnik czy
odbiornik decyduje programista poprzez odpowiednie ustawienie rejestru sterują cego pracą
portu. Niemożliwość peł
nej transmisji dupleksowej (ang. full-duplex) w trybie
synchronicznym wynika z tego, że nadajnik musi udostę pnić odbiornikowi sygnał
taktują cy.
Kolejne okresy sygnał
u taktują cego informują odbiornik o wysył
aniu z nadajnika
nastę pują cych po sobie bitów. Koń cówka RxD nadajnika jest wykorzystywana do wysył
ania
sygnał
u taktują cego. Po stronie odbiornika sygnał
taktują cy odbierany jest przez linię TxD.
Komunikują ce się ze sobą porty nie mogą zatem wykorzystać obu linii portu do
równoczesnego wysył
ania i odbierania danych.
Zrezygnowanie z sygnał
u taktują cego w trybie transmisji asynchronicznej wymusza
zastosowanie innego mechanizmu, który synchronizował
by wymianę informacji pomię dzy
nadajnikiem a odbiornikiem. Nadajnik wysył
a pakiety ośmiu lub dziewię ciu bitów danych
opakowane dodatkowymi bitami sterują cymi: jednym bitem stopu i jednym bitem startu. Bit
stopu ma zawsze stan niski, natomiast bit startu – wysoki. Gdy porty nie wymieniają danych
sygnał
na linii jest w stanie wysokim. Dane wymienianie pomię dzy portami mają zatem
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
30
postać ramek czasowych, w których bit startu stopu wyznaczają począ tek i koniec pakietu
danych. Transmisja asynchroniczna może odbywać się w trybie full-duplex. Każdy z pary
komunikują cych się ze sobą portów ma do dyspozycji dwie linie: nadawczą TxD i odbiorczą ,
po których może jednocześnie nadawać i odbierać dane.
TxD
RxD
TxD
RxD
a)
nadajnik/odbiornik
dane
nadajnik/odbiornik
dane
TxD
RxD
TxD
RxD
b)
nadajnik
sygna
ł
taktuj
ą cy
odbiornik
dane
Rys.9. Uproszczony schemat połączenia dwó ch urządzeń koń cowych realizujących transmisję
szeregową: (a) „pó łduplexowa” transmisja synchroniczna i (b) dupleksowa transmisja
asynchroniczna.
Z punktu widzenia programisty wysył
anie (odbiór) danych przez port szeregowy
polega na zapisie (odczycie) bajta danych do (z) odpowiedniego rejestru specjalnego. Rejestr
ten o oznaczeniu SBUF (adres 153) peł
ni rolę bufora. Po zapisie bajta do bufora na koń cówkę
TxD zostają wysł
ane kolejne jego bity poczynają c od najmł
odszego. Odbiór polega na
zbieraniu napł
ywają cych poprzez koń cówką RxD bitów. Nowe dane są dostę pne do odczytu z
bufora dopiero po odebraniu cał
ej ramki. Należy mieć świadomość, że rejestr SBUF istnieje
fizycznie w postaci dwóch niezależnych buforów: nadawczego i odbiorczego. Pierwszy
przeznaczony jest tylko do zapisu drugi – tylko do odczytu. Chociaż oba bufory dostę pne są
pod tym samym adresem są rozróżniane poprzez sygnał
y sterują ce wewnę trznej magistrali.
Rozwią zanie to umożliwia prowadzenie transmisji w trybie full-dupleks z jednoczesnym
wysył
aniem i odbieraniem kolejnych bitów danych.
Aby określić moment, w którym bufor nadał
wpisany do niego bajt i jest gotowy do
pobrania kolejnego, zastosowano specjalną flagę oznaczoną TI. Podobnie w przypadku
odbioru, stan flagi RI określa gotowość bufora do odczytu nadesł
anych danych. Wysoki stan
tychże flag sygnalizuje odpowiednio zakoń czenie nadawania i odbioru. Flagi TI i RI są
odpowiednio 1. i 0. bitem rejestru sterują cego pracą portu szeregowego SCON. Dostę p do
bitów rejestru SCON (o adresie 152) jest bezpośredni, gdyż jest on rejestrem adresowalnym
bitowo. Bity sygnalizują ce zakoń czenie nadawania są ustawiane automatycznie (sprzę towo)
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
31
w momencie poprawnego zakoń czenia transmisji. Ustawienie bitów TI oraz RI powoduje
wygenerowanie sygnał
u żą dania przerwania. Gdy przerwanie portu szeregowego nie jest
zamaskowane (ustawione są bity ES i EA w masce przerwań ), to wykonywana jest ta sama
procedura obsł
ugi zarówno w przypadku zakoń czenia nadawania jak i zakoń czenia odbioru.
Kontrolują c stan bitów TI i RI wewną trz procedury obsł
ugi przerwania można rozstrzygną ć
czy przerwanie został
o wywoł
ane na skutek wysł
ania czy odebrania danych. Z tego też
wzglę du zerowanie flag TI i RI nie odbywa się automatycznie w momencie podję cia obsł
ugi
przerwania, tak jak ma to miejsce w przypadku flag sygnalizują cych przepeł
nienie się
liczników.
a)
D0
D1
D2
D3
D4
D5
D6
D7
TxD
RxD
TI
(sygna
ł taktują cy)
D0
D1
D2
D3
D4
D5
D6
D7
(sygna
ł taktują cy)
TxD
RI
RxD
b)
D0
D1
D2
D3
D4
D5
D6
D7
STOP
STOP
START
TxD
TI
c)
D0
D1
D2
D3
D4
D5
D6
D7
STOP
START
RxD
RI
d)
Rys.10. Przebiegi czasowe sygnałó w wymienianych pomię dzy nadajnikiem (a), (c)
i odbiornikiem (b), (d) w trybie transmisji synchronicznej (a), (b) i asynchronicznej (c), (d).
Pracę odbiornika można zablokować zerują c flagę REN w rejestrze SCON (5. bit
rejestru). W przypadku transmisji synchronicznej ustawienie flagi REN jest warunkiem
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
32
koniecznym poprawnej pracy odbiornika. Wyzerowanie tejże flagi w przypadku transmisji
synchronicznej uniemożliwia pracę w trybie full-duplex.
Port szeregowy mikrokontrolera 8051 może pracować w jednym z czterech trybów
różnią cych się sposobem transmisji (transmisja synchroniczna lub asynchroniczna), ilością
bitów w transmitowanych pakietach (osiem lub dziewię ć bitów) oraz możliwością zmiany
szybkości transmisji (transmisja taktowana cyklami maszynowymi lub sygnał
em
przepeł
nienia ukł
adu licznikowego T1)
(1) W trybie 0 wymiana danych odbywa się synchronicznie w ośmiobitowych pakietach.
Prę dkość transmisji jest stał
a i równa czę stotliwości cyklu maszynowego.
f=czę stotliwość _sygnały_zegarowego/12
Nadawanie rozpoczyna się po upł
ywie peł
nego cyklu maszynowego od wpisania
danych do rejestru SBUF. Tylko w czasie transmisji danych generowany jest sygnał
taktują cy. W trakcie i po zakoń czeniu nadawania linia którą przesył
a się sygnał
taktują cy jest w stanie wysokim. Flaga TI zostaje ustawiona po zakoń czeniu
nadawania ósmego bitu danych. Przygotowanie odbiornika do odbioru polega
ustawieniu bitu REN i wyzerowaniu flagi RI. Wraz z pojawiają cym się sygnał
em
taktują cym odbiornik zaczyna próbkować nadsył
ane dane w takt sygnał
u
synchronizują cego. Po odebraniu ósmego bitu flaga RI zostaje ustawiona, a dane są
gotowe do odczytu w rejestrze SBUF.
(2) Tryb 1 jest trybem asynchronicznym. Wymiana danych odbywa się w pakietach
(ramkach) zawierają cych jeden bit startu, osiem bitów danych oraz jeden bit stopu.
Prę dkość transmisji jest określona czasem przeł
adowania liczników T1 pracują cych
niezależnie po stronie odbiornika i nadajnika. Po wpisaniu danych do rejestru SBUF
nadajnik rozpoczyna nadawanie bitu stopu po przepeł
nieniu się licznika T1. Nadanie
bitu startu zmienia stan linii z wysokiego na niski. Sygnał
przepeł
nienia licznika trafia
na wejście 4 bitowego dzielnika czę stotliwości stanowią cego jeden z podukł
adów
portu. Sygnał
z wyjścia dzielnika (o czę stotliwości 16-krotnie niższej niż sygnał
przepeł
nienia licznika T1) taktuje wysył
anie kolejnych ośmiu bitów danych. Po
zakoń czeniu nadawania danych nadajnik ustawia flagę TI, a nastę pnie wysył
a bit
stopu który ustawia linię w stan wysoki. Odbiór rozpoczyna się po wykryciu
opadają cego zbocza na linii. Opadają ce zbocze zeruje 4 bitowy licznik w odbiorniku,
zliczają cy kolejne przepeł
nienia licznika T1 (znajdują cego się w odbiorniku). Kolejne
zerowania 4-bitowego licznika wyznaczają w przybliżeniu granice pomię dzy
poszczególnymi bitami. Odbiornik w poł
owie trwania każdego bitu trzykrotnie
próbkuje linie (ma to miejsce, gdy licznik przyjmuje wartość 7, 8, 9). Stan bitu zostaje
ustalony jako stan wystę pują cej przynajmniej dwukrotnie próbki. Gdy zgodnie z
powyższą zasadą bit startu jest zerowy (opadają ce zbocze może być wynikiem
zakł
óceń na linii), odbiornik pobiera kolejne osiem bitów danych. Jeśli bit startu
okazuje się mieć wartość 1 to odbiornik przerywa odbiór danych i oczekuje na
ponowne przyjście opadają cego zbocza. Dane zostaną zapisane w rejestrze SBUF
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
33
wtedy gdy ramka zakoń czy się bitem stopu znajdują cym się w stanie wysokim. Flaga
RI zostaje ustawiona dopiero po odebraniu bitu stopu. Czę stotliwość transmisji bitów
może być zmniejszona dwukrotnie przez dzielnik czę stotliwości sterowany
najstarszym bitem rejestru PCON o adresie 135. Niski stan bitu SMOD wł
ą cza
dzielnik i dwukrotnie obniża prę dkość transmisji. Bit SMOD nie jest adresowalny,
wię c jego stan można zmienić wykonują c operacje logiczne z użyciem masek na
rejestrze PCON. Szybkość transmisji w trybie 1. jest zatem wyrażona wzorem:
f=czę stotliwość _przepełniania_się _licznika_T1/(16*2
1-SMOD
)
(3) W trybie 2 wymiana danych odbywa się asynchronicznie. W odróżnieniu od
wcześniejszych trybów pracy dane w trybie 2. przesył
ane są pakietach zawierają cych
dziewię ć bitów danych. Po stronie nadajnika ostatni bit danych pobierany jest z 4. bitu
TB8 rejestru sterują cego SCON. Po prawidł
owym zakoń czeniu transmisji ostatni bit
danych zostaje zapisany w 3. bicie RB8 rejestru sterują cego. Dziewię ć bitów danych
poprzedzonych bitem startu i zakoń czonych bitem stopu tworzy ramkę czasową . Bity
startu i stopu są podobnie jak w trybie 2., odpowiednio w stanie niskim i wysokim.
Dziewią ty bit danych może peł
nić rolę bitu kontrolnego. Zwykle stosuje się prostą
kontrolę parzystości. Stan bitu kontrolnego wybrany jest wówczas tak, aby liczba
jedynek (zer) wśród dziewię ciu bitów danych był
a parzysta. Jeśli w trakcie transmisji
nastą pi odwrócenie jednego bitu to stan bitu kontrolnego nie bę dzie odpowiadał
odebranym danym. Proces transmisji i odbioru przebiega wł
aściwie tak samo jak w
trybie 1. Jedyną różnicą jest to, że sygnał
RI w odbiorniku zostaje ustawiony tuż po
odebraniu dziewią tego bitu danych. Odbiornik nie testuje stanu bitu stopu, tylko czeka
na wystą pienie kolejnego opadają cego zbocza na linii – oznaczają cego nadesł
anie
kolejnej ramki danych. Prę dkość transmisji może być regulowana wył
ą cznie stanem
bitu SMOD. Przy niskim stanie bitu SMOD wynosi ona 1/64 czę stotliwości sygnał
u
zegarowego. Wysoki stan bitu SMOD ustawia prę dkość transmisji 1/32 czę stotliwości
sygnał
u taktują cego mikrokontrolera. Prę dkość transmisji w trybie 2. można wyraź ić
wzorem:
f= czę stotliwość _sygnały_zegarowego/(32*2
1-SMOD
)
(4) Tryb 3 jest bardzo podobny do trybu 2.. Tak samo jak w trybie 2., port transmituje
asynchronicznie dziewię ciobajtowe pakiety danych. Jedyną różnicą jest możliwość
określenia prę dkości transmisji poprzez czas przepeł
niania się licznika T1. Prę dkość
transmisji w trybie 3. ustala się identycznie jak w trybie 1.
Przyję ta w systemie DSM-51 czę stotliwość sygnał
u zegarowego pozwala na dokł
adne
ustawienie standardowych prę dkości transmisji portu szeregowego RS-232. Dzię ki temu
system DSM-51 może komunikować się z komputerem PC przez port szeregowy.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
34
Tabela 8. Oznaczenia kolejnych bitó w rejestru kontrolnego i sterującego portu szeregowego
(SCON).
numer
bitu
oznaczenie
opis
7-6 SM1,SM0
określenie trybu pracy
5
SM2
sterowanie pracą w trybie
wieloprocesorowym
4
REN
bit zezwolenia na odbiór (przy
transmisji fullduplex)
3
TB8
ósmy bit danych (np. bit parzystości)
nadajnika
2
RB8
ósmy bit danych (np. bit parzystości)
odbiornika
1
TI
flaga zakoń czenia nadawania
0
RI
flaga zakoń czenia odbioru
Tabela 9. Oznaczenia kolejnych bitó w rejestru kontrolnego i sterującego portu szeregowego
(PCON).
numer
bitu
oznaczenie
opis
7
SMOD
wł
ą czenie/wyłączenia dzielnika
czę stotliwości przez dwa
6-4
-
bity niewykorzystane
3-0
-
bity stosowane do usł
ugi trybu uśpienia
i zamrożenia mikrokontrolera
2.1.5. Przerwania
Sygnał
em żą dania przerwania nazywamy sygnał
pochodzą cy od urzą dzenia zewnę trznego,
który jest dla mikroprocesora informacją o pewnym zdarzeniu wymagają cym jego
interwencji. W odpowiedzi na sygnał
żą dania przerwania mikroprocesor może podją ć obsł
ugę
przerwania. Zawiesza wówczas wykonywanie bieżą cego programu i rozpoczyna egzekucje
tzw. procedury obsł
ugi przerwania. Po jej zakoń czeniu mikroprocesor powraca do
wykonywania zwieszonego programu. Mechanizm przerwań zwalnia mikroprocesor od
potrzeby wykonywania kodu, który nieustannie przepytywał
by stan urzą dzeń zewnę trznych w
celu wykrycia nieoczekiwanych zdarzeń . Testowanie sygnał
ów żą dania przerwania odbywa
się na drodze sprzę towej w każdym cyklu maszynowym mikrokontrolera.
W typowym mikrokontrolerze rodziny 8051 sygnał
y przerwań mogą pochodzić z
pię ciu ź ródeł
: trzech zintegrowanych ukł
adów peryferyjnych – obu ukł
adów licznikowych i
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
35
portu szeregowego oraz dwóch zewnę trznych linii przerwań - INT0 i INT1. Sygnał
em
żą dania przerwania jest ustawienie flagi (tzw. wskaź nika przerwania) sygnalizują cej zajście
pewnego zdarzenia. Flagi te znajdują się w adresowalnych bitowo rejestrach kontrolnych
odpowiednich urzą dzeń . Procedury obsł
ugi przerwań umieszczone są po ściśle określonymi
adresami pamię ci programu. Każdemu ze ź ródeł
przerwań przyporzą dkowany jest inny
wektor przerwania, który określa adres od którego rozpoczyna się procedura jego obsł
ugi W
przypadku mikrokontrolerów 8051 programista nie ma możliwości zmiany wartości
wektorów przerwań . W Tabeli 10 zebrano ź ródł
a przerwań mikrokontrolera 8051 wraz z
dopowiadają cym mi wskaź nikami i wektorami przerwań (adresami procedur obsł
ugi
przerwań ).
Tabela 10. Adresy procedur obsługi przerwań oraz zachowanie się wskaźnikó w (flag)
przerwań przy wywołaniu i podję ciu obsługi przerwania. Ostatnia kolumna przedstawia
odpowiednie bity zezwoleń na przerwanie.
ź ródło przerwania
adres
procedury
flaga
wywoł
anie przerwania
kasowanie
flagi
zezwolenie
linia INT0
03(03)
H
IE0
stanem ‘0’ lub zboczem opad.
sprzę towe
EX0
licznik T0
11(0B)
H
TF0
stanem ‘1’
sprzę towe
ET0
linia INT1
19(13)
H
IE1
stanem ‘0’ lub zboczem opad.
sprzę towe
EX1
licznik T1
17(1B)
H
TF1
stanem ‘1’
sprzę towe
ET1
port szeregowy
35(23)
H
TI,RI
stanem ‘1’
programowe
ES
Warto zwrócić uwagę , że nie wszystkie wskaź niki przerwań są zerowane sprzę towo w
momencie poję cia procedury obsł
ugi przerwania. Wyzerowanie wskaź nika przerwania jest
konieczne, gdyż system przerwań reaguje na stan a nie na zmianę stanu wskaź nika.
Pozostawienie ustawionego wskaź nika przerwania bę dzie skutkować ponownym jego
wywoł
aniem procedury obsł
ugi przerwania.
Tabela 11. Bity rejestru PCON odpowiedzialne za kontrolę zewnę trznych linii przerwań .
numer
bitu
oznaczenie
opis
7-4
-
bity kontrolne ukł
adów licznikowych
3
IE1
bit określają cy stan linii INT1
2
IT1
sposób wywoł
ania przerwania (stanem
lub zboczem)
1
IE0
bit określają cy stan linii INT0
0
IT0
sposób wywoł
ania przerwania (stanem
lub zboczem)
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
36
Pewnym wyją tkiem do tej reguł
y są przerwania zewnę trzne INT0 i INT1. Programista
ma w tym przypadku możliwość wyboru czy przerwania ze ź ródeł
zewnę trznych mają być
wyzwalane (niskim) stanem, czy też (opadają cym) zboczem wskaź nika przerwania. Stan linii
INT0 i INT1 zapisany jest w odpowiednio w 1. i 3. bicie rejestru PCON oznaczonym jako
IE0 lub IE1. Flagi IE0 i IE1 peł
nią rolę wskaź ników przerwań . Sposób wywoł
ania przerwania
(poprzez stan lub zbocze wskaź nika przerwani) jest określony za pomocą bitów nr 0 i 2 tegoż
rejestru oznaczonych jako IT0 i IT1. Niski stan bitów IT0, IT1 wymusza detekcje stanu,
wysoki – zbocza, odpowiedniego wskaź nika przerwania. Detekcja zbocza flag IE0 i IE1
polega na porównywaniu stanu tychże flag w dwóch kolejnych cyklach maszynowych – trwa
zatem dwukrotnie dł
użej niż detekcja stanu.
Stan wskaź ników przerwań testowany jest w stanie S5P2 każdego cyklu
maszynowego. Nastę pnie w cią gu kolejnego cyklu maszynowego ukł
ad obsł
ugi przerwań
podejmuje decyzję o podję ciu bą dź zaniechaniu obsł
ugi przerwania. Gdy zapadnie decyzja o
podję ciu obsł
ugi przerwania mikrokontroler wstrzymuje się z jej wykonaniem do czasu
zakoń czenia bieżą cej instrukcji. Jeśli wykonywana aktualnie trwa dł
użej niż jednen cykl
maszynowy oznacza to oczekiwanie kilka kolejnych cykli maszynowych. Przed wykonaniem
skoku do odpowiedniej procedury obsł
ugi przerwania mikrokontroler odkł
ada na stosie
zawartość licznika rozkazów. Operacja ta wykonywana jest na drodze sprzę towej i trwa dwa
cykle maszynowe. W pierwszym cyklu na stos wrzucany jest mł
odszy bajt licznika rozkazów,
w kolejnym – starszy bajt. Kod procedury obsł
ugi przerwania koń czy się instrukcją powrotu
RETI. Instrukcja ta wykonywana jest w dwóch cyklach maszynowych.
wystawienie sygna
łu
rz
ą dania przerwania
wzka
źnik
przerwania
testowanie stanu
wska
źnika przerwania
podj
ę cie decyzji o
obs
łudze przerwania
oczekiwanie na
zako
ń czenie bieżą cego
cyklu rozkazowego
zapisanie
licznika rozkaz
ó w
na stosie
wykonanie kodu
procedury obs
ługi przerwania
odtworzenie
licznika rozkaz
ó w
ze stosie
kontynuacja
przerwanego programu
Rys.11. Podję cie i zakoń czenie procedury obsługi przerwania. Poszczegó lne komó rki
oznaczają kolejne cykle maszynowe. Cykle rozkazowe zaznaczono za pomocą obramowania
ciągłą linią (dla prostoty przyję to, iż każdy cykl rozkazowy skład się z dwó ch cykli
maszynowych). Założono, że przerwanie jest wyzwalane stanem flagi przerwania.
W tym czasie ścią gany jest ze stosu adres licznika rozkazów i wykonywany skok do miejsca
w którym został
o zawieszone wykonywanie programu. Instrukcja RETI informuje ukł
ad
obsł
ugi przerwań o zakoń czeniu obsł
ugi przerwania. Jeśli sygnał
żą dania przerwania pojawi
się w trakcie wykonywania instrukcji RETI dział
anie ukł
adu obsł
ugi przerwań zostaje
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
37
zawieszone do czasu zakoń czenia powrotu z procedury obsł
ugi i wykonania nastę pnej
instrukcji. Dopiero po tym, w kolejnym cyklu maszynowym, ukł
ad obsł
ugi przerwań
rozpoczyna testowanie wskaź ników przerwań . Ł atwo się przekonać, że podję cie obsł
ugi
przerwania trwa, w najbardziej korzystnym przypadku nieco ponad 3 cykle maszynowe,
natomiast w najmniej sprzyjają cej sytuacji nieco ponad 11 cykli maszynowych (żą danie
obsł
ugi przerwania pojawia się w pierwszym cyklu maszynowym instrukcji RETI, a w
miejscu powrotu znajdują się dwie instrukcje wykonywane w czterech cyklach
maszynowych).
1
0
ET0
IE0
1
0
ET1
IE1
TF1
TI
RI
TF0
EX0
ET0
EX1
ET1
ES
EA
podj
ę cie
obs
ługi przerwania
Rys.12. Działanie systemu maskowania przerwań .
W mikrokontrolerze 8051 podobnie jak w wię kszości mikroprocesorów istnieje
możliwość maskowania przerwań . Przerwanie może zostać obsł
użone tylko wówczas, gdy
programista zezwoli na to, poprzez ustawienie odpowiedniego bitu w masce przerwań .
Najstarszy bit rejestru maski przerwań IA, oznaczony jako EA, jest bitem globalnego
zezwolenia na przerwania. Ustawienie bitu EA jest warunkiem koniecznym uaktywnienia
ukł
adu obsł
ugi przerwań . Przy wyzerowanym bicie EA nie jest podejmowana obsł
uga
przerwań pomimo zgł
aszania żą dań ich obsł
ugi. Pię ć mł
odszych bitów rejestru IA peł
ni rolę
tzw. bitów indywidualnych zezwoleń na przerwanie. Każdemu ź ródł
u przerwań odpowiada
inny bit zezwolenia na przerwanie. Poszczególnym ź ródł
om przerwań przyporzą dkowano
nastę pują ce bity rejestru IA (poczynają c od najmł
odszego): linia zewnę trzna INT0 – EX0,
licznik T0 – ET0, linia zewnę trzna INT1 – EX1, licznik T1 – ET1, port szeregowy – ES.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
38
Podję cie obsł
ugi przerwania zgł
aszanego przez wybrane ź ródł
o jest możliwe tylko wtedy, gdy
ustawiony jest globalny bit zezwolenia na przerwania - EA oraz odpowiadają cy danemu
ź ródłu – indywidualny bit zezwolenia na przerwanie. Po (re)starcie mikrokontrolera rejestr
maski przerwań jest wyzerowany. Zatem obsł
uga przerwań jest domyślnie wył
ą czona. Dobrą
praktyką jest zezwalanie na obsł
ugę tylko tych przerwań , które są przedmiotem naszej uwagi.
W przeciwnym razie przypadkowe wywoł
anie obsł
ugi przerwania, dla którego nie
przygotowano odpowiedniej procedury obsł
ugi jest ź ródł
em trudnych do wykrycia bł
ę dów.
W trakcie wykonywania procedury obsł
ugi przerwania może zostać zgł
oszone żą danie
obsł
ugi innego przerwania. W takiej sytuacji ukł
ad obsł
ugi przerwań musi rozstrzygną ć czy
zawiesić, czy też dokoń czyć wykonywanie bieżą cej procedury obsł
ugi przerwania. Powyższy
arbitraż przeprowadzany jest poprzez porównanie poziomów priorytetu obu przerwań . W
wię kszości mikrokontrolerów rodziny 8051 stosuje się dwupoziomowy system priorytetu
przerwań . Oznacza to, iż każdemu ź ródł
u przerwań można przypisać wysoki lub niski poziom
priorytetu. Reguł
y określają ce możliwości zawieszania procedur obsł
ugi przerwań przez inne
przerwania można zestawić w nastę pują cy sposób.
•
Procedura obsł
ugi przerwania o wysokim poziomie priorytetu nie może zostać
zawieszona przez żadne przerwanie (nawet przez inne przerwanie o wysokim
poziomie priorytetu). Dopiero po zakoń czeniu procedury obsł
ugi przerwania o
wysokim poziomie ukł
ad obsł
ugi przerwań rozpoczyna testowanie stanu wskaź ników
przerwań i podejmuje obsł
ugę zgł
aszanych uprzednio przerwań .
•
Procedura obsł
ugi przerwania o niskim poziomie priorytetu nie może zostać zawiesić
żadnego przerwanie (nawet przez innego przerwania o niskim poziomie priorytetu).
Obsł
uga przerwania o niskim poziomie priorytetu może zostać podję ta dopiero po
zakoń czeniu obsł
ugi innych przerwań .
•
Sygnał
żą dania przerwania o wysokim poziomie priorytetu wstrzymuje wykonywanie
procedury obsł
ugi przerwania o niskim priorytecie. Zostaje ona wznowiona po
zakoń czeniu wykonywania procedury obsł
ugi przerwania o wysokim poziomie
priorytetu.
•
Jeśli sygnał
y żą dania obsł
ugi przerwania o identycznym poziomie priorytetu zostaną
odebrane w tym samym cyklu maszynowym to o kolejności wykonywania procedur
obsł
ugi decyduje porzą dek określony przez rodzaj ź ródł
a przerwania: linia zewnę trzna
INT0, linia zewnę trzna INT1, licznik T0, licznik T1, port szeregowy. Oznacza to, że
w przypadku równoczesnego wykrycia sygnał
ów żą dania przerwania zgłaszanych
przez licznik T0 i port szeregowy w pierwszej kolejność zostanie wykonana procedura
obsł
ugi licznika T0, a dopiero po jej zakoń czeniu ukł
ad usł
ugi przerwań rozpocznie
wykonywanie procedury obsł
ugi przerwania portu szeregowego.
Poziomy priorytet przerwań zmieniać za pomocą bitów rejestru IP. Pię ć bitów rejestru
priorytetu przerwań oznaczonych (począ wszy od najmł
odszego): PX0, PT0, PX1, PT1, PS
odnosi się odpowiednio do nastę pują cych ź ródeł
przerwań : linia zewnę trzna INT0, licznik T0,
linia zewnę trzna INT1, licznik T1, port szeregowy. Ustawienie odpowiedniej flagi tego
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
39
rejestru nadaje odpowiedniemu ź ródł
u przerwań wysoki poziom priorytetu, natomiast
wyzerowanie – przypisuje jemu niski poziom priorytetu. Po (re)starcie mikrokontrolera dla
wszystkich ź ródeł
przerwań ustawione są niskie poziomy priorytetu.
program
g
łówny
przerwanie A
przerwanie B
przerwanie A
program
g
łówny
ż ą danie obsługi
przerwania A
podj
ę cie obsługi
przerwania A
ż ą danie obsługi
przerwania B
wstrzymanie obs
ługi
przerwania A
i podj
ę cie obsługi
przerwania B
zako
ń czenie obsługi
przerwania B
i wznowienie obs
ługi
przerwania A
zako
ń czenie obsługi
przerwania A
czas
a)
program
g
łówny
przerwanie B
program
g
łówny
ż ą danie obsługi
przerwania A
podj
ę cie obsługi
przerwania A
ż ą danie obsługi
przerwania B
zaniechanie obs
ługi
przerwania B
zako
ń czenie obsługi
przerwania A
ponowne odczytanie
ż ą dania obsługi
przerwania B
zako
ń czenie obsługi
przerwania B
czas
b)
podj
ę cie obsługi
przerwania B
Rys.13. Obsługa przerwań o ró żnych poziomach priorytetu. W trakcie obsługi przerwania A
pojawia się sygnał żądania obsługi przerwania B o (a) wyższym poziomie priorytetu lub (b)
niższym (bądź ró wnym) poziomie priorytetu.
2.1.6. Przeglą d instrukcji
W przypadku mikrokontrolera 8051, podobnie jak dla każdego innego mikroprocesora,
można wyróżnić nastę pują ce kategorie instrukcji:
•
instrukcje arytmetyczno – logiczne
Instrukcje arytmetyczno-logiczne są podstawowym narzę dziem obróbki danych. Każda z
instrukcji arytmetyczno-logicznych wykonuje określoną operację na wskazanych
argumentach. W wyniku jej dział
ania opracowywany jest wynik. Operacje arytmetyczne
mogą być jedno lub dwuargumentowe. Pierwszy argument określa jednocześnie lokalizacje
wyniku operacji.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
40
W mikrokontrolerze 8051 operacje arytmetyczne wykonywane są na ośmiobitowych
liczbach cał
kowitych. Wszystkie operacje arytmetyczne dowolne są na liczbach naturalnych
(zapisanych w naturalnym kodzie binarnym). Na liczbach cał
kowitych ze znakiem
(zakodowanych w kodzie uzupeł
nień do dwóch) można wykonywać jedynie operacje
dodawania i odejmowania. Zastosowanie rozkazu tzw. poprawki dziesię tnej pozwala
wykonywać operację dodawania liczb zapisanych w kodzie BCD. Dodawanie liczb BCD
polega na wykonaniu standardowej operacji dodawania liczb binarnych, a nastę pnie
zastosowaniu rozkazu poprawki dziesię tnej, który wprowadza odpowiednią korektę wyniku.
W ukł
adzie 8051 możliwe jest wykonywanie dodawania i dodawania i odejmowania z
uwzglę dnieniem przeniesienia lub pożyczki. Pozwala to efektywnie wykonywać operacje
dodawania i odejmowania liczb wielobajtowych.
Wię kszość operacji arytmetycznych modyfikuje flagi rejestru stanu. Stan flag
przeniesienia (pożyczki) – C, przepeł
nienia – OV i AV – przeniesienia pomocniczego
sygnalizuje wystą pienie pewnych krytycznych sytuacji podczas wykonywania operacji
arytmetycznych takich jak przekroczenie zakresu liczb naturalnych lub liczb ze znakiem,
dzielenie przez zero itp.. Wyją tkiem są tu operacje inkrementacji (dodania jedynki) i
dekrementacji (odję cia jedynki), które nie zmieniają stany flag: C, OV i AC. W Tabeli 12
przedstawiono sposób zmiany flag rejestru PSW przez instrukcje arytmetyczne
mikrokontrolera 8051.
Tabela 12. Modyfikacja flag rejestru PSW przez operacje arytmetyczne. W tabeli posłużono
się nastę pującymi oznaczeniami:
↔ - wskaźnik ustawiany zgodnie z wynikiem operacji, 0 -
wskaźnik zerowany, 1 - wskaźnik ustawiony, – - wskaźnik nie jest zmieniany,(.)
↑ -
przeniesienie z bitu (.), (.)
↓ - pożyczka z bitu (.)
rozkaz
opis
C
AC
OV
uwagi
ADD A,arg
dodawanie
↔
↔
↔
jeśli (A.7)
↑
to CY
←
1, w przeciwnym razie C
←
0
jeśli (A.3)
↑
to AC
←
1, w przeciwnym razie AC
←
0
jeśli ((A.7)
↑
xor (A.7)
↑
) to OV
←
1,
w przeciwnym razie OV
←
0
ADDC A,arg
podawanie z
przeniesieniem
↔
↔
↔
j.w.
DA A
poprawka
dziesię tna
↔
-
-
jeśli (A(7-4)>9 lub C = 1) i (A(7-4)+6>9) to C
←
1
DIV AB
dzielenie
0
-
↔
jeśli przed dzieleniem B = 0 to OV
←
1
MUL AB
mnożenie
0
-
↔
jeśli A * B > 255 to OV
←
1
jeśli starszy bajt (A * B) równa się 0 to OV
←
0
SUBB A,arg
odejmowanie z
pożyczką
↔
↔
↔
jeśli (A.7)
↓
to C
←
1, w przeciwnym razie C
←
0
jeśli (A.3)
↓
to AC
←
1, w przeciwnym razie AC
←
0
jeśli ((A.6)
↓
xor (A.7)
↓
) to OV
←
1,
w przeciwnym razie OV
←
0
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
41
Odrę bną grupą rozkazów arytmetycznych są operacje obrotów. Instrukcja obrotu
polega na cyklicznym przesunię ciu pozycji wszystkich bitów w bajcie. W przypadku obrotu
w lewo stan każdego bitu, z wył
ą czaniem najstarszego, zostaje skopiowany na są siedni,
starszy bit. Cykliczność polega tu na tym, że stan najstarszego bitu jest skopiowany na
pozycję bitu najmł
odszego. Dla obrotu w lewo kierunek przesunię ć jest przeciwny. Bity
kopiowane są na pozycje są siednich, mł
odszych bitów. Najmł
odszy bit zostaje natomiast
przeniesiony w miejsce najstarszego bitu. Jest oczywiste, że osiem kolejnych obrotów
przywraca począ tkowy stan bajta. Jeśli przez koniec i począ tek bajta nie przesuwają się żadne
ustawione bity, to obroty w lewo i w prawo są równoważne odpowiednio mnożeniu i
dzieleniu cał
kowitemu przez dwa.
x7
x6
x5
x4
x3
x2
x1
x0
7
6
5
4
3
1
0
2
x0
x7
x6
x5
x4
x3
x2
x1
7
6
5
4
3
1
0
2
a)
x7
x6
x5
x4
x3
x2
x1
x0
7
6
5
4
3
1
0
2
x6
x5
x4
x3
x2
x1
x0
x7
7
6
5
4
3
1
0
2
b)
C
y
x7
x6
x5
x4
x3
x2
x1
x0
7
6
5
4
3
1
0
2
y
x7
x6
x5
x4
x3
x2
x1
7
6
5
4
3
1
0
2
c)
C
x0
C
y
x7
x6
x5
x4
x3
x2
x1
x0
7
6
5
4
3
1
0
2
x6
x5
x4
x3
x2
x1
x0
y
7
6
5
4
3
1
0
2
d)
C
x7
Rys.14. Graficzna ilustracja operacji obrotów: (a) obrót w prawo, (b) obrót w lewo, (c) obrót
w prawo przez bit przeniesienia, (d) obrót w lewo przez bit przeniesienia.
Dostę pne są również operacje obrotów, w których uczestniczy bit przeniesienia. W wewną trz
bajta bity przesuwane są identycznie jak w przypadku zwykł
ych obrotów. Różnica wynika
stą d, że w „przewijaniu” się koń cówek bajta uczestniczy bit przeniesienia. Oznacza to, iż przy
obrocie w lewo (prawo) do bitu C zostaje skopiowany stan najstarszego (najmł
odszego) bitu,
natomiast zawartość bitu C zostaje przeniesiona do najmł
odszego (najstarszego) bitu.
x7
x6
x5
x4
x3
x2
x1
x0
7
6
5
4
3
1
0
2
x3
x2
x1
x0
x7
x6
x5
7
6
5
4
3
1
0
2
Rys.15. Działanie operacji wymiany kę só w
Łatwo zauważyć, że przy ośmiu sukcesywnych obrotach przez bit przez bit C w lewo (prawo)
bit ten przyjmuje stany kolejnych bitów w bajcie począ wszy do najstarszego (najmł
odszego)
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
42
bitu. Jest oczywiste, że dziewię ć kolejnych obrotów przez bit przeniesienia przywraca
począ tkowy stan bajta. Zwykł
e obroty nie zmieniają stanu flag rejestru stanu. Obroty przez bit
C zmieniają jedynie stan tego bitu.
Wynikiem wykonania czterech kolejnych obrotów lewo lub w prawo jest zamiana
miejscami kę sów w bajcie (cztery mł
odsze i cztery starsze bity wymieniają się pozycjami w
bajcie). Wśród rozkazów mikrokontrolera 8051 istnieje specjalny rozkaz realizują cy taką
wł
aśnie funkcję . Stosują c rozkazy obrotów i rozkaz wymieniają cy kę sy można za pomocą co
najwyżej dwóch instrukcji obrócić zawartość bajt o dowolna ilość pozycji.
Operandami instrukcji logicznych mogą być bajty lub pojedyncze adresowalne bity.
Warto zdawać sobie sprawę , że nawet jeśli formalnie argumentami operacji logicznej są bajty,
to faktycznie operacja wykonywana jest na pojedynczych, odpowiadają cych sobie bitach.
Wynik operacji logicznej jest w tym przypadku bajtem, w którym poszczególne bity są
wynikiem wykonania operacji logicznej na kolejnych odpowiadają cych sobie bitach
należą cych do jednobajtowych argumentów. Wysoki stan bitu utożsamiany jest z logiczną
prawdą , natomiast stan niski – z logicznym fał
szem.
Tabela 13. Tabela prawdy podstawowych funkcji boolowskich
p
q
p and q
p or q p exor q
not p
0
0
0
0
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
0
Mikrokontroler 8051 umożliwia wykonywanie podstawowych operacji logicznych.
Należą do nich operacje algebry boolowskej: negacja, iloczyn logiczny, suma logiczna oraz
suma bitowa modulo dwa. Tabela 13 przedstawia tzw. tabele prawdy dla wymienionych
powyżej operacji logicznych. Tabela prawdy zawiera wszystkie możliwe kombinacje
argumentów operacji logicznej wraz z odpowiadają cymi im wynikami.
•
rozkazy przesł
ań
Rozkaz przesł
ania jest rozkazem dwuargumentowym. Wykonanie operacji przesł
ania
powoduje skopiowanie danych wskazanych przez jeden z jego argumentów pod lokalizację
określoną poprzez drugi argument. Pierwszy argument określa zawsze miejsce przeznaczenia
danych, drugi – wskazuje ich ź ródł
o. Dane ź ródł
owe mogą pochodzić z rejestru, pamię ci
danych, lub też być stał
ą zawartą w pamię ci programu albo w kodzie rozkazu. Lokalizacja
docelowa musi odnosić się do obiektu, w którym dane mogą być zapisywane. Z tego wzglę du
nie może nim być np. pamię ć programu. Najbardziej efektywne i elastyczne są rozkazy
przesł
ań dotyczą ce rejestrów lub wewnę trznej pamię ci programu. Rozkazy przesł
ań
dowoł
ują ce się do danych w zewnę trznej pamię ci danych lub pamię ci programu wykonywane
są wolniej (zawsze w dwóch cyklach maszynowych) i wykorzystują ubogą ilość trybów
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
43
adresowania. Tabela 14 klasyfikuje dostę pne w ukł
adzie 8051 przesł
ania pod wzglę dem
możliwych lokalizacji ź ródł
owych i docelowych.
Szczególny rodzajem rozkazów przesł
ań danych są rozkazy sł
użą ce do obsł
ugi stosu.
Obsł
uga stosu ograniczona jest do dwóch operacji: wrzucania danych na stos i zrzucania
danych ze stosu. W trakcie zapisu danych na stos należy odwoł
ać się do danych, które mają
zostać przechowane na stosie. Przy odczycie ze stosu trzeba określić, gdzie mają zostać
zapisane dane zrzucone ze stosu. Inkrementacja i dekrementacja wskaź nika stosu przy
odpowiednio zapisie na stos i odczycie ze stosu jest wykonywana automatycznie na drodze
sprzę towej.
Tabela 14. Możliwa lokalizacja danych źró dłowych i docelowych dla rozkazó w przesłań
przesł
anie
miejsce ź ródł
owe
miejsce docelowe
rejestr
wewnę trzna pamię ć danych
wewnę trzna pamię ć danych
rejestr
MOV
wewnę trzna pamię ć danych
wewnę trzna pamię ć danych
akumulator
zewnę trzna pamię ć danych
MOVX
zewnę trzna pamię ć danych
akumulator
MOVC
pamię ć programu
akumulator
•
skoki
Skok polega na zmianie naturalnej kolejności wykonywania instrukcji, która wynika z ich
poł
ożenia w kodzie programu. W nieobecności skoków program pozbawiony jest pę tli i
rozgał
ę zień . Wykonywanie programu polega wówczas na pobieraniu i wykonywaniu
instrukcji umieszczonych kolejno w pamię ci programu. Jak wcześniej wspomniano w każdym
cyklu rozkazowym licznik rozkazów zwię kszany jest o wartość równą dł
ugości bieżą cego
rozkazu w kodzie programu. Wykonanie skoku polega na zmianie wartości licznika rozkazów
w taki sposób by nowa wartość wskazywał
a adres w pamię ci programu, pod którym
rozpoczyna się nastę pna sekwencja instrukcji. Skok nie jest zatem trywialny jeśli kolejna
wykonywana instrukcja nie nastę puje bezpośrednio za instrukcją skoku w kodzie programu.
Wyróżnia się dwa rodzaje rozkazów skoku: skoki bezwarunkowe i skoki warunkowe.
Skok bezwarunkowy wykonywany jest zawsze, tzn. niezależnie od stanu wybranych
rejestrów, komórek pamię ci, adresowalnych bitów. W przypadku skoków warunkowych
wykonanie skoku zależy do wyniku testu jaki przeprowadza instrukcja. Jeśli wybrany rejestr,
komórka pamię ci, czy też bit osią ga zadany stan, wówczas skok zostaje wykonany. W
przeciwnym razie wykonywana jest kolejna (umieszczona tuż poniżej w kodzie programu)
instrukcja. Skoki bezwarunkowe wykorzystywane są do budowania nieskoń czonych pę tli
(jeśli skok dobywa się wstecz – w stronę niższych adresów) lub pomijania egzekucji pewnych
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
44
fragmentów kodu, takich jak: procedury obsł
ugi przerwań , bloki danych (jeśli skok odbywa
się wprzód – w stronę wyższych adresów). Skoki warunkowe są gł
ównym narzę dziem
sterowania biegiem programu. Za ich pomocą konstruuje się podstawowe takie struktury
algorytmiczne takie jak rozgał
ę zienia (gdy skok dobywa się wprzód) i skoń czone pę tle (jeśli
skok odbywa się wstecz).
Ze wzglę du na dł
ugość, skoki możemy podzielić na: dł
ugie, średnie i krótkie. Skok
dł
ugi może mieć miejsce w cał
ej 64-kilobajtowej przestrzeni adresowej pamię ci programu.
Argumentem skoku jest wię c liczba dwubajtowa bę dą ca peł
nym, bezwzglę dnym adresem.
Skok średni jest ograniczony do 2-kilobajtowej przestrzeni adresowej w otoczeniu miejsca
wywoł
ania skoku (1023 bajty wprzód i 1024 bajty wstecz). Adres wzglę dny zawarty w
rozkazie skoku jest 11-bitową liczbą cał
kowitą ze znakiem, która określa poł
ożenie
docelowego miejsca skoku wzglę dem miejscem wywoł
ania skoku w pamię ci programu. W
czasie wykonania instrukcji skoku adres bezwzglę dny wyznaczany jest na podstawie bieżą cej
wartości licznika rozkazów:
adres_bezwzglę dny = PC + adres_wzglę dny
Argumentem skoku krótkiego jest jednobajtowa liczba cał
kowita ze znakiem. Argument ten
podobnie jak w przypadku skoku średniego peł
ni role adresu wzglę dnego. Skok krótki,
zgodnie ze swoją nazwą , może być wykonany jedynie 127 bajtów przód i 128 bajtów wstecz
od miejsca wywoł
ania. Adres bezwzglę dny wyznaczany jest tu podobnie jak w przypadku
skoku średniego.
Specyficznym typem instrukcji skoku są rozkaz powrotu z podprogramu oraz rozkaz
powrotu z procedury obsł
ugi przerwania. Adres skoku (powrotnego) zapisywany jest na stosie
w momencie wywoł
ania podprogramu lub podję cia obsł
ugi przerwania. Wykonanie rozkazów
powrotu z podprogramu i powrotu z procedury obsł
ugi przerwania polega na odtworzeniu
zawartości licznika rozkazów zapisanego uprzednio na stosie. Jedyną różnicą pomię dzy
wspomnianymi rozkazami jest konieczność zasygnalizowania ukł
adowi obsł
ugi przerwań
faktu zakoń czenia przerwania przez rozkaz powrotu z procedury obsł
ugi przerwania.
2.1.7. Tryby adresowania
Tryb adresowania określa sposób odwoł
ywania się rozkazu do jego argumentów. Od
zastosowanego trybu adresowania zależy dł
ugość kodu rozkazu (mierzona w bajtach) i czas
jego wykonywania (podawany w cyklach maszynowych). Rozkazy mikrokontrolera 8051
posiadają od jednego do trzech operandów. Jedynie trzy instrukcje nie wymagają
argumentów: rozkaz powrotu z podprogramu, rozkaz powrotu z programu obsł
ugi przerwania
oraz tzw. rozkaz pusty. Zwykle każdy z operandów rozkazu jest adresowany w odmienny
sposób. Stą d poję cie trybu adresowania odnosi się nie do cał
ego rozkazu, lecz do
poszczególnych jego operandów.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
45
W zaawansowanych mikroprocesorach dostę pnych jest wiele wyszukanych trybów
adresowania. W przypadku prostych ukł
adów, do jakich zalicza się mikrokontroler 8051, lista
ta ograniczona jest do najbardziej podstawowych. W mikrokontrolerach rodziny 8051
możemy wyróżnić jedynie pię ć trybów adresowania.
•
adresowanie rejestrowe
W tym trybie adresowania operand przechowywany jest w jednym z rejestrów
mikrokontrolera. Informacja o tym w którym z rejestrów mikroprocesora znajduje się
argument zawarta jest w kodzie operacji. Ilustrują c to przykł
adem: inny kod operacji
zarezerwowany jest dla instrukcji, która inkrementuje zawartość rejestru R1, inny zaś dla
instrukcji inkrementują cej rejestr R2. Jeśli wszystkie operandy instrukcji są adresowane
rejestrowo, to kod rozkazu skł
ada się jedynie z kodu operacji – liczy zatem tylko jeden bajt.
Adresowanie rejestrowe jest szybki szybkim trybem adresowania ze wzglę du na
łatwość dostę pu mikroprocesora do rejestrów. Gdy wszystkie argumenty adresowane są
rejestrowo, to rozkaz wykonywany jest w jednym cyklu maszynowym. Jednakże rejestry
sł
użą na ogół
do tymczasowego przechowywania danych. Dane wejściowe i ostateczne
wyniki są zapisywane w pamię ci. Z tego wzglę du adresowanie rejestrowe stosuje się do
tymczasowych danych, pośrednich wyników operacji itp..
mikroprocesor
PC
rejestr
argument
pami
ę ć
programu
kod operacji
kod rozkazu
Rys.16. Adresowanie rejestrowe
Adresowanie w trybie rejestrowym dotyczy wył
ą cznie akumulatora i rejestrów
roboczych oraz w ograniczony sposób dwubajtowego wskaź nika danych DPTR. Jedynym
bitem dostę pnym w trybie adresowania rejestrowego jest bit przeniesienia.
•
adresowanie bezpośrednie
W trybie adresowania bezpośredniego argument zawarty jest w komórce pamię ci
wewnę trznej. Odwoł
anie do argumentu odbywa się poprzez adres umieszczony w kodzie
rozkazu. Każdy operand adresowany bezpośrednio zwię ksza dł
ugość kodu rozkazu o jeden
bajt. Przykł
adowo: kod rozkazu przesł
ania danych z jednej komórki wewnę trznej pamię ci
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
46
danych do drugiej zajmuje trzy bajty (jeden bajt przeznaczony jest na kod operacji, dwa – na
adresy operandów).
Rozkazy, których operandy adresowane są bezpośrednio wykonywane są dł
użej.
Zwykle trwa to dwa cykle maszynowe. Wyją tkiem są instrukcje w których jeden z operandów
adresowany jest rejestrowo poprzez akumulator.
Adresowanie bezpośrednie dotyczy jedynie pierwszych 128 bajtów wewnę trznej
pamię ci danych, oraz obszaru rejestrów specjalnych. Wszystkie rejestry sł
użą ce do obsł
ugi
zintegrowanych urzą dzeń peryferyjnych oraz takie rejestry mikroprocesora jak: rejestr
pomocniczy B, wskaź nik stosu, rejestr maski i rejestr priorytetów przerwań adresowane są
wył
ą cznie bezpośrednio. Możliwe jest również bezpośrednie adresowanie młodszego i
starszego bajta wskaź nika danych DPTR.
argument
mikroprocesor
PC
pami
ę ć
programu
kod operacji
kod rozkazu
adres
pami
ę ć
danych
Rys.17. Adresowanie bezpośrednie
W trybie adresowania bezpośredniego dostę pne są również: akumulator i rejestry
robocze (rejestry te, jak wspomniano wcześniej mogą być adresowane rejestrowo). Jednakże
w przypadku rejestrów roboczych należy mieć na uwadze, że adresy pod którymi są dostę pne
rejestry R1-R7 zależą do wyboru aktywnego banku pamię ci.
W mikrokontrolerze 8051 obsł
uga stosu odbywa się wył
ą cznie w trybie adresowania
bezpośredniego. Stą d też dane zapisywane na stosie muszą być wskazane przez podanie ich
adresu, a ich póź niejszy odczyt możliwy jest jedynie do wskazanej komórki pamię ci.
Ilustracją tej zasady może być fakt, iż wrzucenie zawartości akumulatora na stos musi się
odbywać jedynie poprzez wskazanie adresu komórki pamię ci w której jest on zapisywany.
Wszystkie adresowalne bity mikrokontrolera dostę pne są w trybie adresowania
bezpośredniego. Odwoł
anie się do wybranego bitu polega wię c na podaniu jego bajtowego
adresu. Wspomniany w poprzednim podpunkcie bit przeniesienia może być zatem
adresowany w dwóch trybach: rejestrowym i bezpośrednim. Reguł
y wyznaczania adresów
bitowych został
y omówione wyżej w rozdziale: 2.1.2 Pamię ć .
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
47
•
adresowanie pośrednie
Adresowanie pośrednie polega na odwoł
ywaniu się do danych za pośrednictwem rejestru
wskaź nikowego. Rejestr wskaź nikowy przechowuje adres komórki pamię ci, w której zawarte
są dane. Ten typ adresowania dotyczy zewnę trznej pamię ci danych oraz cał
ego obszaru
wewnę trznego RAM’u (peł
nych 265 bajtów). Obszar rejestrów specjalnych jest niedostę pny
w trybie adresowania pośredniego.
Rejestrami wskaź nikowymi stosowanymi do adresowania wewnę trznej pamię ci
danych są dwa pierwsze rejestry robocze: R0 i R1. Wykonanie instrukcji, której argumenty są
adresowane pośrednio musi być poprzedzone zał
adowaniem do rejestrów wskaź nikowych
adresów argumentów. Rozpatrzmy to na przykł
adzie. Inkrementacja komórki pamię ci o
zadanym adresie przebiega nastę pują co. (1) Pierwszy rozkaz zapisuje w jednym z rejestrów
R0 lub R1 adres komórki pamię ci. (2) Dopiero nastę pna instrukcja wykonuje inkrementację
zawartości komórki pamię ci o adresie przechowywanym w odpowiednim rejestrze
wskaź nikowym.
rejestr
adres
argument
mikroprocesor
PC
pami
ę ć
programu
kod operacji
kod rozkazu
pami
ę ć
danych
Rys.18. Adresowanie pośrednie
Instrukcje wykorzystują ce adresowanie pośrednie są stosunkowo szybkie i krótkie
(zajmują niewiele bajtów kodu). Jeśli wszystkie argumenty rozkazu adresowane są pośrednio
lub rejestrowo to na kod rozkazu skł
ada się jedynie kod operacji, a rozkaz wykonywany jest
w jednym (wewnę trzna pamię ć danych) lub w dwóch cyklach maszynowych (zewnę trzna
pamię ć danych). W kodzie operacji zawarta jest informacja w jakim rejestrze wskaź nikowym
przechowywany jest adres operandu. Rozkazy wykorzystują ce różne rejestry wskaź nikowe
mają inne kody operacji.
Zewnę trzna pamię ć danych może być adresowana wył
ą cznie w trybie adresowania
pośredniego. Ze wzglę du na to, że pamię ć ta ma 64 kilobajtową przestrzeń adresową rejestr
wskaź nikowy musi być rejestrem dwubajtowym. Wobec tego stosuje się dwa rozwią zania. (1)
Jako rejestr wskaź nikowy wykorzystuje się dwubajtowy rejestr DPTR. (2) Mł
odszy bajt
adresu zapisuje się w jednym z rejestrów: R0 lub R1, a starszy wystawia na koń cówki portu
P2.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
48
Adresowanie pośrednie jest szczególnie wygodne do adresowania cią gł
ych obszarów
danych takich jak liczby wielobajtowe, czy tablice. Zwię kszają c w pę tli adres zawarty w
rejestrze wskaź nikowym można za pomocą tego samego rozkazu dowoł
ywać się do kolejnych
komórek pamię ci. Zastosowanie adresowania pośredniego jest w tym przypadku dużo
bardziej efektywne niż korzystanie z adresowania pośredniego, gdzie adres argumentu musi
być zawarty jawnie w kodzie rozkazu. Stosują c adresowanie bezpośrednie należał
oby
zrezygnować z pę tli i jawnie dowoł
ywać się do poszczególnych komórek pamię ci
umieszczają c w kodach kolejnych rozkazów adresy nastę pują cych po sobie komórek pamię ci.
Nie był
oby wówczas możliwości programowego obliczania adresu argumentu tak jak miał
o to
miał
o to miejsce w przypadku zastosowania adresowania pośredniego.
•
adresowanie natychmiastowe
Z adresowaniem natychmiastowym mamy do czynienia wówczas, gdy argument zawarty jest
w kodzie rozkazu. Argument peł
ni wówczas rolę stał
ej, gdyż w przeciwień stwie do innych
trybów adresowania jego wartość jest ustalona w kodzie programu i w żaden sposób nie
zależy od stanu rejestrów i pamię ci.
argument
mikroprocesor
PC
pami
ę ć
programu
kod operacji
kod rozkazu
Rys.19. Adresowanie natychmiastowe
Z powyższego wynika również, że argument adresowany natychmiastowo nie może
określać żadnej docelowej lokalizacji dla danych. Zatem w przypadku operacji
arytmetycznych i logicznych oraz rozkazów przesł
ań pierwszy argument nigdy nie może być
zaadresowany natychmiastowo.
•
adresowanie indeksowe
Adresowanie indeksowe jest odmianą adresowania pośredniego. Adres argumentu jest tu
sumą zawartości rejestru bazowego i rejestru indeksowego. Ten tryb adresowania stosowany
jest w mikrokontrolerze 8051 do adresowania pamię ci programu. Rolę rejestru bazowego
peł
ni rejestr 16-bitowy: wskaź nik danych DPTR lub licznik rozkazów. Rejestrem
indeksowym, określają cym przesunię cie wzglę dem rejestru bazowego, jest akumulator.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
49
Za pomocą adresowania indeksowego można odwoł
ywać się do danych zawartych w
tzw. blokach danych. Blok danych określa cią gł
y obszar pamię ci programu, w którym
umieszczono dane przeznaczone tylko do odczytu. Egzekucja programu musi przebiegać w
taki sposób by mikrokontroler w kolejnych cyklach rozkazowych nie pobierał
kodu z bloku
danych. Rejestr bazowy zawiera bezwzglę dny adres pierwszego bajta bloku danych.
Zmieniają c wartość rejestru indeksowego można uzyskać dostę p do wybranych bajtów w
bloku danych. Zawartość rejestru indeksowego interpretowana jest jak naturalna liczna
binarna (tzn. liczba bez znaku). Oznacza to, że manipulują c wartością rejestru
wskaź nikowego można zaadresować 256 bajtów danych począ wszy do komórki pamię ci
wskazywanej przez rejestr bazowy.
argument
offset
mikroprocesor
PC
pami
ę ć
programu
kod operacji
kod rozkazu
Rys.20. Adresowanie indeksowe z wykorzystaniem licznika rozkazó w
Gdy rejestrem bazowym jest licznik rozkazów, blok danych musi znajdować się tuż
poniżej rozkazu, który dowoł
uje się indeksowo do zapisanych w tym obszarze pamię ci
danych. Aby zapobiec pobieraniu danych jako kodu, należy umieścić instrukcję skoku
bezwzglę dnego lub rozkaz powrotu z podprogramu pomię dzy blokiem danych a
odwoł
ują cym się do nich rozkazem. Zastosowanie tego zabiegu spowoduje jednak, że
pierwszy bajt danych bę dzie wskazywany wartością rejestru indeksowego równą jeden, dwa
lub trzy (w zależności od użycia instrukcji powrotu z podprogramu, rozkazu skoku krótkiego
lub skoku dł
ugiego).
Zastosowanie rejestru DPTR jako rejestru bazowego zwalnia z konieczności
umieszczania bloku danych w bezpośrednim są siedztwie rozkazu odwoł
ują cego się
indeksowo do danych. Adresowanie indeksowe z wykorzystaniem rejestru DPTR wymusza
jednak wpisanie do tego rejestru stał
ej dwubajtowej określają cej począ tek bloku danych.
Rozkaz przesł
ania stał
ej do rejestru DPTR jest trwa dwa cykle maszynowe i zajmuje trzy
bajty kodu programu.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
50
2.2. Budowa i obsługa systemu DSM-51
Dydaktyczny System Mikroprocesorowy (DSM-51) został
zaprojektowany przez firmę
MicroMade jako pomoc dydaktyczna do nauki architektury systemów mikroprocesorowych i
programowania niskopoziomowego.
System DSM-51 umożliwia wielokrotne ł
adowanie kodu programu użytkownika do
wskazanego obszaru zewnę trznej pamię ci danych. Uruchomienie programu użytkownika jest
możliwe po zmianie trybu pracy dekodera adresów. Ukł
ad ten kontrolują c stan odpowiednich
linii sterują cych sprawia, iż zał
adowany do zewnę trznego RAM’u kod program użytkownika
traktowany jest przez mikrokontroler jako pierwsze 32 kilobajty pamię ci programu. Powyższy
mechanizm umożliwia wielokrotne ł
adowanie i uruchamianie programu użytkownika poprzez
zapis kodu do pamię ci RAM. Jest to rozwią zanie szybsze i mniej kł
opotliwe niż bezpośredni
zapis kodu do pamię ci programu w ukł
adach EPROM (EEPROM). Ł adowanie programu
użytkownika może odbywać się w dwóch trybach. (1) Istnieje możliwość pobrania kodu
programu przez port szeregowy mikrokontrolera. W tym trybie pracy DSM-51 współ
pracuje z
komputerem PC, który przesył
a przez port szeregowy RS-232 uprzednio wyedytowany i
zasemblowany program. (2) Użytkownik może również wprowadzić kod programu
korzystają c z klawiatury systemu DSM-51. W obu przypadkach ł
adowanie kodu do pamię ci
RAM oraz uruchomienie programu użytkownika nadzorowane jest przez specjalny program
zapisany na stał
e w pamię ci EPROM.
Rys.21. Płyta Dydaktycznego Systemu Mikroprocesorowego DSM-51 firmy Micromade.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
51
Sercem sytemu DSM-51 jest mikrokontroler rodziny 8051 w wersji 80C31.
Mikrokontroler 80C31 posiada 128 bajtów wewnę trznej pamię ci danych, dwa ukł
ady
licznikowe, cztery ośmiobitowe porty oraz interfejs szeregowy. Ukł
ad 80C31 nie zawiera
wewnę trznej pamię ci programu.
Na pł
ycie systemu DSM-51 umieszczono liczne ukł
ady wejścia-wyjścia. Są to
zarówno ukł
ady bezpośredniej komunikacji z użytkownikiem jak i szereg portów za
pośrednictwem których możliwa jest wymiana sygnał
ów z urzą dzeniami zewnę trznymi.
Bezpośrednią komunikację z użytkownikiem zapewniają nastę pują ce ukł
ady:
•
dwa typy klawiatur (klawiatura matrycowa i klawiatura obsł
ugiwana sekwencyjnie),
•
dwa rodzaje wyświetlaczy (blok sześciu wskaź ników siedmiosegmentowych i
alfanumeryczny wyświetlacz ciekł
okrystaliczny),
•
proste elementy sygnalizacyjne (diody elektroluminescencyjne, sygnalizator
dź wię kowy).
System DSM-51 posiada szereg zł
ą cz służą cych do komunikacji z układami zewnę trznymi.
Są to:
•
dwa zł
ą cza portów szeregowych (pierwsze wyprowadza na zewną trz linie sterownika
zintegrowanego wewną trz mikrokontrolera, drugie przeznaczone jest do realizacji
transmisji szeregowej w trybie programowym),
•
ukł
ad trzech programowalnych portów równoległ
ych,
•
ośmiokanał
owy przetwornik analogowo-cyfrowy,
•
przetwornik cyfrowo-analogowy,
•
linie wejść-wyjść izolowanych galwanicznie
•
zewnę trzną magistralę systemową DSM-51 umożliwiają cą podł
ą czenie dodatkowych
ukł
adów wejścia-wyjścia.
Wszystkie porty wejściowe systemu DSM-51 mogą generować sygnał
y żą dania przerwania.
Ze wzglę du na to, że mikrokontrolery rodziny 8051 posiadają tylko dwie linie przerwań
zewnę trznych zaistniał
a konieczność zastosowania ukł
adu kontrolera przerwań . Rolą tego
ukł
adu w systemie DSM-51 jest koncentracja sygnał
ów żą dania przerwania na dwóch liniach
przerwań .
Do najważniejszych ukł
adów sterują cych systemu DSM-51 można zaliczyć
•
dekoder adresów
•
kontroler przerwań
•
ukł
ad watchdog
Zarysowana wyżej funkcja dekodera adresów i kontrolera przerwań zostanie omówiona
szerzej w dalszej czę ści skryptu. Watro zaznaczyć, iż ukł
ady te są specyficzne dla systemu
DSM-51 i został
y zaprojektowane specjalnie na jego użytek. Zarówno dekoder adresów jaki i
kontroler przerwań są ukł
adami typu GAL. Ukł
ady tego typu stanową programowalną
matrycę bramek. W matrycy ukł
adu GAL można za pomocą specjalnego programatora
utworzyć żą dany ukł
ad logiczny. Ukł
ad wachdog jest używany do kontroli prawidł
owości
wykonywania programu. Jego rola polega na generowaniu sygnał
u resetu mikrokontrolera w
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
52
przypadku, gdy nie wykonuje on odpowiedniego kodu. Sytuacja taka może być wynikiem
zewnę trznych zakł
óceń . Stan taki określa się potocznie jako „zawieszenie” mikroprocesora.
Pobiera on wówczas i usił
uje interpretować przypadkowe dane znajdują ce się poza obszarem
kodu w pamię ci programu. Wywoł
anie sygnał
u resetu powoduje rozpoczę cie wykonywania
programu począ wszy od pierwszej instrukcji w pamię ci programu. Obsł
uga ukł
adu watchdog
polega na okresowym wysył
aniu specjalnego sygnał
u w trakcie egzekucji programu. Wymaga
to umieszczenia odpowiednich instrukcji w kodzie. Gdy program ulegnie zawieszeniu,
watchdog przestaje obierać sygnał
i po upł
ywie określonego czasu restartuje mikrokontroler.
Rys.22. Mikrokontroler 80C31 na płycie systemu DSM-51. Na rysunku widoczny jest ró wnież
rezonator kwarcowy (f=11.052MHz) oraz dekoder adresó w (AD) i sterownik przerwań (IC).
Duża ilość ukł
adów wejścia-wyjścia znajdują cych się na pł
ycie DSM-51 pozwala na
zapoznanie się z obsł
ugą typowych ukł
adów peryferyjnych. Tak znaczna ilość ukł
adów
(czę sto o dublują cych się funkcjach) nie jest na ogół
stosowana w konkretnych aplikacjach.
Daje natomiast użytkownikowi systemu DSM-51 możliwość przetestowania wielu wariantów
realizują cych to samo zadanie. Pozwala to na szybką naukę budowy i dział
ania ukł
adów
mikroprocesorowych na dział
ają cym fizycznie ukł
adzie bez konieczności podejmowania
żmudnej i czasochłonnej pracy konstrukcyjnej.
2.2.1. Tryby pracy i organizacja pamięci zewnętrznej w systemie DSM-51
Sygnał
y zewnę trznej magistrali danych i zewnę trzna magistrali adresowej wyprowadzone są
poprzez koń cówki portów P0 i P2. Przez port P2 mikrokontroler wystawia starszy bajt adresy.
Port P0 peł
ni podwójną rolę : sł
uży do wystawiania mł
odszej czę ści adresu oraz wymiany
danych. W pierwszym etapie komunikacji mikrokontrolera z pamię cią zewnę trzną ma
koń cówki portów P0 i P2 zostaje wystawiony odpowiednio mł
odszy i starszy bajt adresu.
Fakt ten sygnalizowany jest specjalnym sygnał
em sterują cym mikrokontrolera ALE. Sygnał
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
53
ALE steruje buforem zatrzaskowym podł
ą czonym do koń cówek porty P0. Wysoki stan
wyprowadzenia ALE, sygnalizują cy wystawienie adresu, powoduje przepisanie mł
odszego
bajty adresu na wyjście bufora. Od tej chwili peł
en adres dostę pny jest na wyjściu bufora i
koń cówkach portu P2, a port P0 sł
uży do wymiany danych. Mikrokontroler musi w jakiś
sposób zasygnalizować chę ć odczytu kodu z zewnę trznej pamię ci programu bą dź wymiany
danych z zewnę trzną pamię cią danych. W tym celu po wystawieniu adresu wysył
a
odpowiednie sygnał
y sterują ce. Niski stan wyprowadzenia /PSEN sygnalizuje chę ć odczytu
kodu z pamię ci programu. Logiczne zero na koń cówkach /RD i /WR oznacza odpowiednio
chę ć odczytu i zapisu danych.
P2
P0
ALE
D
0
..
.D
7
PSEN
RD
WR
OE
INT0
INT1
A8...A15
A0...A15
A
0
..
.A
1
5
A
0
..
.A
7
8
0
5
1
OE
WR
RD
OE
WR
pami
ę ć
programu
b
u
fo
r
pami
ę ć
danych
uk
łady
we-wy
d
e
k
o
d
e
r
a
d
re
s
ów
s
te
ro
w
n
ik
p
rz
e
rw
a
ń
Rys.23. Organizacja zewnę trznej magistrali w systemie DSM-51. Dekoder adresó w i
sterownik przerwań pełnią rolę układó w kontrolnych, któ re pośredniczą w wymianie
sygnałó w sterujących pomię dzy mikrokontrolera, a pamię cią zewnę trzną i zewnę trznymi
układami peryferyjnymi.
W urzą dzeniu, przeznaczonym do wykonywania konkretnej funkcji program zapisany
jest nieulotnej pamię ci programu, a dane (pobrane lub obliczone w wyniku dział
ania
programu) są przechowywane w pamię ci danych. W tym przypadku linia /PSEN steruje
bezpośrednio koń cówką /OE ukł
adu pamię ci EPROM (EEPROM) umożliwiają c lub blokują c
odczyt kodu z pamię ci programu. Linie /RD i /WR są natomiast podł
ą czone odpowiednio do
koń cówek /OE i /WR ukł
adu pamię ci RAM. Dzię ki temu sygnał
y /RD i /WR zezwalają bą dź
zabraniają odpowiednio na odczyt lub zapis danych.
W systemie DSM-51 zastosowano 32 kilobajtowy ukł
ad pamię ci RAM oraz ukł
ad
pamię ci EPROM o tej samej pojemności. W pamię ci EPROM zapisano kody procedur
odpowiedzialnych za ł
adowanie kodu programu użytkownika i obsł
ugę ukł
adów wejścia-
wyjścia systemu DSM-51. Ukł
ad dekodera adresów pośredniczy w wymianie sygnał
ów
sterują cych pomię dzy mikrokontrolerem a ukł
adami RAM i EPROM.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
54
starszy b. adresu
m
łodszy b. adresu
dane
P0
a)
P2
ALE
1
PSEN
PSEN
RD lub WR
RD lub WR
b)
c)
1
Rys.24. Przebiegi czasowe przy wymianie danych przez zewnę trzną magistralę
mikrokontrolera: (a) wystawienie adresu i wysłanie (lub pobranie) danych, (b) sygnały
sterujące przy odczycie z pamię ci programu, (c) sygnały sterujące towarzyszące zapisowi (lub
odczytowi) danych do (z) pamię ci danych.
Po uruchomieniu systemu DSM-51 dekoder adresów znajduje się z trybie 0. W tym
trybie pracy sygnał
/PSEN steruje wył
ą cznie dostę pem do pamię ci EPROM. Wykonywany
jest wówczas program zapisany w EPROM, który umożliwia pobranie kodu programu
użytkownika przez port szeregowy bą dź wprowadzenie go przez klawiaturę systemu
DSM-51. 32 kilobajtowa pamię ć EPROM zawiera 15 linii adresowych. Mimo tego w trybie 0
ukł
ad EPROM jest zawsze aktywny. Stan koń cówki /CE aktywują cej ukł
ad jest zawsze niski
niezależnie od stanu najstarszej linii adresowej. Górne 32 kilobajty przestrzeni adresowej
pamię ci programu odnoszą się zatem do tej samej fizycznej pamię ci EPROM. Praktycznie
oznacza to, że adresy 1xxxxxxxxxxxxxxx
B
i 0xxxxxxxxxxxxxxx
B
– różnią ce się o
32 kilobajty – wskazują tą samą komórkę pamię ci programu. W trybie 0 linie /RD i /WR
sterują zapisem i odczytem danych do/z pamię ci RAM. Najstarsza lina adresowa podł
ą czona
jest do koń cówki /CS pamię ci RAM. W odróżnieniu od pamię ci EPROM najstarszy bit adresu
używany jest do uaktywnienia (niskim staniem) ukł
adu pamię ci RAM. Wynika stą d, że
pamię ć RAM dostę pna jest tylko w pierwszych 32 kilobajtach przestrzeni adresowej pamię ci
danych. Starsze adresy są zarezerwowane na tzw. zewnę trzną magistralę systemową oraz
sł
użą do obsł
ugi ukł
adów peryferyjnych systemu.
Uruchomienie programu użytkownika odbywa się poprzez zmianę trybu pracy
dekodera adresów i reset mikrokontrolera. W trybie 1 dekoder adresów uaktywnia pamię ć
RAM zarówno w obszarze niższych 32 kilobajtów pamię ci danych jak i pamię ci programu.
Dla wyższych adresów (pamię ci danych i pamię ci programu) pamię ć RAM jest nieaktywna.
Oznacza to, że podobnie jak w trybie 0, najstarsza linia adresowa jest podł
ą czona do
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
55
koń cówki /CS i steruje uaktywnieniem pamię ci RAM. Obecność pamię ci RAM w przestrzeni
adresowej pamię ci programu i pamię ci danych jest możliwa dzię ki temu, że dekoder adresów
zezwala (niskim stanem koń cówki /OE) na odczyt z pamię ci RAM zarówno w przypadku
zgł
oszenia przez mikrokontroler sygnał
u /PSEN jak i /RD. Sygnał
/WR mikrokontrolera
podobnie jak w trybie 0. steruje zapisem do pamię ci RAM. Pamię ć EPROM jest zał
ą czana
wył
ą cznie dla wyższych adresów pamię ci programu. W tym celu dekoder adresów
wysterowuje koń cówkę /CE pamię ci EPROM zanegowanym sygnał
em najstarszej linii
adresowej. Sygnał
/PSEN tak jak w trybie 0 steruje koń cówką /OE ukł
adu EPROM. Po
odebraniu sygnał
u resetu mikrokontroler zeruje licznik rozkazów zaczyna pobierać kolejne
rozkazy z pamię ci RAM. Nadal jednak w obszarze wyższych 32 kilobajtów pamię ci
programu znajduje się kod programu ł
adują cego i podprogramy obsł
ugi urzą dzeń
peryferyjnych systemu DSM-51.
32767
7FFF
(
H
)
0000
0000
H
(
)
pami
ę ć
programu
pami
ę ć
danych
61440
F000
H
(
)
EPROM
EPROM
RAM
zewn
ę trzna
magistrala
systemowa
uk
łady we.-wyj.
32767
7FFF
(
H
)
0000
0000
H
(
)
a)
32767
7FFF
(
H
)
0000
0000
H
(
)
pami
ę ć
programu
pami
ę ć
danych
61440
F000
H
(
)
EPROM
RAM
RAM
zewn
ę trzna
magistrala
systemowa
uk
łady we.-wyj.
32767
7FFF
(
H
)
0000
0000
H
(
)
b)
32768
8000
H
(
)
65534
FFFF )
H
((
32768
8000
H
(
)
65534
FFFF )
H
((
32768
8000
H
(
)
65534
FFFF )
H
((
32768
8000
H
(
)
65534
FFFF )
H
((
Rys.25. Organizacja pamię ci programu i zewnę trznej pamię ci danych w (a) trybie 0 i w (b)
trybie 1 pracy dekodera adresó w.
Dekoder adresów wypracowuje również sygnał
y aktywują ce dział
anie zewnę trznej
magistrali systemowej i ukł
adów wejścia-wyjścia systemu DSM-51. Ostatnie 4 kilobajty
pamię ci danych przeznaczone są do adresowania urzą dzeń peryferyjnych. Pozostał
e 28
kilobajty górnego obszaru pamię ci danych zarezerwowane jest dla zewnę trznej magistrali
systemowej DSM-51. Jeśli na magistralę adresową wystawiony jest adres z zakresu
wspomnianych 28 kilobajtów, to dekoder adresów wystawia sygnał
oznaczają cy zamiar
wymiany dany poprzez magistralę DSM-51. Sygnał
ten oznaczony jako CSX aktywuje
ukł
ady podł
ą czone do magistrali DSM-51. Na złącze zewnę trznej magistrali wyprowadzona
jest magistrala danych, pię tnaście mł
odszych linii adresowych, sygnał
y sterują ce: /RD, /WR i
CSX. Dekodują c adres ukł
adu wejścia-wyjścia dekoder adresów uwzglę dnia tylko mł
odszy
bajt adresu. Z tego wzglę du cztery ostatnie kilobajty pamię ci danych są podzielone na
szesnaście równoważnych 256-bajtowych obszarów. Oznacza to, że wewną trz każdego z tych
obszarów kolejne adresy odpowiadają tym samym urzą dzeniom peryferyjnym systemu DSM-
51. Adres dowolnego urzą dzenia wejścia-wyjścia ma zatem postać 1111xxxxyyyyyyyy
B
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
56
Przy czym adresy różnią ce się jedynie stanem bitów oznaczonych iksem odnoszą się do tych
samych ukł
adów. Zaletą tego rozwią zania jest uł
atwienie adresowania ukł
adów wejścia-
wyjścia. Odwoł
ują c się do urzą dzenia peryferyjnego ukł
adu DSM-51 za pomocą rejestru
wskaź nikowego R0 lub R1 (patrz rozdział
„tryby adresowania”) nie ma potrzeby wystawiania
starszego bajta adresu na port P2 jeśli uprzednio nie wykonano żadnego zapisu na ten port.
Jak wcześniej wspomniano po (re)starcie mikrokontrolera na wszystkich liniach portu
wystawiona jest logiczna jedynka. Z tego wzglę du mł
odszy bajt adresu zawarty w rejestrach
R0 lub R1 wystarcza do zaadresowania urzą dzenia wejścia peryferyjnego. W Tabeli 15
zawarto mł
odsze bajty adresów ukł
adów systemu DSM-51. Iksy oznaczają dowolną wartość
bitu. Zgodnie z Tabelą 15 dekoder adresów generuje sygnał
y CS aktywują ce określone
ukł
ady. Rozważmy dla przykł
adu adresowanie sterownika wyświetlacza ciekł
okrystalicznego.
Dekoder adresów uaktywni urzą dzenie jeśli speł
nione bę dą nastę pują ce warunki: (1) adres
bę dzie odnosił
się do ukł
adów peryferyjnych (ustawione cztery najstarsze linie adresowe – np.
poprzez wystawienie jedynek na port P2) i (2) wybrany bę dzie jeden z adresów wskazują cy
na wyświetlacz ciekł
okrystaliczny (ustawiony 7. i wyzerowany 6. bit w mł
odszym bajcie
adresu – patrz Tabela 15).
Tabela 15. Adresy układó w peryferyjnych zintegrowanych na płycie systemu DSM-51. Starszy
bajt adresy na zawsze postać : 1111xxxx, młodszy – został umieszczony w pierwszej kolumnie
tabeli. Symbol x oznacza dowolną wartość bitu.
mł
odszy bajt
adresu
oznaczenie
urzą dzenie
00000xxx
CSIC
sterownik przerwań
00001xxx
CSDA
przetwornik C/A
00010xxx
CSAD
przetwornik A/C
00100x01
CSMX
multiplekser analogowy (wejście przet. A/C)
00100x10
CSKB0
klawiatura matrycowa: klawisze 0 ... 7
00101x00
CSKB1
klawiatura matrycowa: klawisze 8 ... 15
00101x01
CS55A
ukł
ad 8255 – rejestr portu A
00101x10
CS55B
ukł
ad 8255 – rejestr portu B
00101x11
CS55C
ukł
ad 8255 – rejestr portu C
00110xxx
CS55D
ukł
ad 8255 – rejestr sterują cy
00111xxx
CSDS
bufor wyboru wyświetlaczy 7-seg.
00110xxx
CSDB
bufor wyboru segmentów wyświetlaczy 7-seg.
01xxxxxx
CSMOD
dekoder adresów
10xxxx00
LCDWC
wyświetlacz LCD – zapis rozkazów
10xxxx01
LCDRC
wyświetlacz LCD – zapis danych
10xxxx10
LCDWC
wyświetlacz LCD – odczyt stanu
10xxxx11
LCDRD
wyświetlacz LCD – odczyt danych
11xxxxxx
CSX
zł
ą cze zewnę trznej magistrali systemowej
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
57
System DSM-51 posiada dwa przyciski oznaczone RESET-ROM i RESET-RAM.
Wciśnię cie którego któregokolwiek z nich powoduje wywoł
anie zerowania mikrokontrolera.
Nie zmienia się natomiast stan innych urzą dzeń systemu wł
ą cznie z pamię cią RAM. Jedyną ,
choć istotną , różnicą w dział
aniu przycisków jest to, iż przycisk RESET-ROM dodatkowo
ustawia dekoder adresów w tryb 0. Zachowanie się systemu zależy do trybu pracy w jakim
znajdował
się on w czasie wciśnię cia jednego z dwóch wspomnianych przycisków.
Dydaktyczny system mikroprocesorowy może pracować w jednym z trzech trybów:
•
tryb 0 – PC CONTROL
Jest to domyślny tryb pracy, w którym znajduje się system po wł
ą czeniu zasilania lub
wciśnię ciu przycisku RESET-ROM. W tym trybie pracy dekoder adresów umieszcza
pamię ć EPROM w dolnych 32 kilobajtach pamię ci programu (tryb 0 dekodera
adresów). Uruchamiane jest zatem oprogramowanie systemowe. Pierwsza czynnością
jaką wykonuje program systemowy jest testowanie stanu klawiatury matrycowej. Jeśli
po zwolnieniu przycisku RESET-ROM lub wł
ą czeniu zasilania program systemowy
wykrył
wciśnię cie klawisza 1 lub 2, to przeł
ą cza on DSM-51 odpowiednio w 1.
(SIMULATOR) lub 2. (ASSEMBLER) tryb pracy. Wykrycie wciśnię cia klawisza 0
tuż to zwolnieniem przycisku RESET-ROM powoduje uruchomienie procedury
testowej systemu DSM-51, w czasie której ma miejsce sprawdzian pamię ci RAM oraz
ukł
adów komunikacji z użytkownikiem – obu klawiatur, dwóch rodzajów
wyświetlaczy oraz pozostał
ych elementów sygnalizacyjnych. Jeśli stan klawiatury
matrycowej był
inny niż opisany powyżej to system pozostaje trybie 0 i uruchamia
procedurę ł
adują cą , która oczekuje na wysył
any z komputera PC kod programu. Dane
pobierane są przez port szeregowy systemu. Komputer PC wysył
a plik w intelowskim
standardzie hex . W pliku tym grupy bajtów kodu programu rozdzielone są sumami
kontrolnymi. Dodatkowo plik zawiera znaczniki, określ ają ce adresy pamię ci
programu, pod którymi mają być umieszczone kolejne grupy bajtów. Program
systemowy pobiera dane wysył
ane przez komputer PC po czym na podstawie sum
kontrolnych sprawdza poprawność odebranych danych; nastę pnie umieszcza kolejne
bajty kodu w odpowiednich komórkach pamię ci RAM. Po zakoń czeniu transmisji
system DSM-51 przeł
ą cza się w tryb 1 (SIMULATOR) i rozpoczyna wykonywanie
programu użytkownika.
Rys.26. Wyświetlacz LCD w trybie 0 pracy systemu DSM-51.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
58
Wciśnię cie dowolnego z przycisków RESET-RAM lub RESET-ROM daje taki
sam skutek – system pozostaje w trybie 0 i rozpoczyna ponowne wykonanie programu
systemowego.
Warto zwrócić uwagę , że manualne przeł
ą czanie systemu w tryb 1 ma sens
tylko wtedy, gdy w pamię ci RAM istnieje zał
adowany wcześniej kod programu
użytkownika. W przeciwnym razie zachowanie systemu jest nieokreślone, gdyż
mikrokontroler bę dzie pobierał
i usił
ował
interpretować przypadkowe dane zawarte w
pamię ci programu. Oprogramowanie systemowe korzysta z zasobów mikrokontrolera
w tym również z jego wewnę trznej pamię ci danych. Sygnał
reset generowany po
wciśnię ciu przycisku RESET-ROM nie wyzeruje danych zapisanych uprzednio przez
program systemowy w rejestrach roboczych czy obszarze stosu. Należy mieć zatem
świadomość że, przy uruchomieniu programu użytkownika za pomocą kombinacji
klawisza RESET-ROM i klawisza 1 stan pamię ci wewnę trznej (i rejestrów roboczych)
może się zmieniać.
•
tryb 1 – SIMULATOR
W tym trybie pracy systemu dekoder adresów pracuje w trybie 1. System DSM-51
pobiera wię c kod programu z pamię ci RAM. Wykonywany jest zatem program
użytkownika. Programista powinien zadbać by program zakoń czył
się w pierwszych
32 kilobajtach pamię ci programu. W przeciwnym razie mikrokontroler rozpocznie
wykonywanie kodu umieszczonego w pamię ci EPROM – czyli podejmie egzekucje
programu systemowego.
Wciśnię cie klawisza RESET-RAM wywoł
uje zerowanie mikrokontrolera, a w
zwią zku z tym również i licznika rozkazów. Powoduje to ponowne wykonanie
programu użytkownika. Stan pamię ci wewnę trznej i zewnę trznej danych nie ulega
zmianie.
Po wciśnię ciu przycisku RESET-ROM nastę puje przeł
ą czenie trybu pracy
dekodera adresów (w tryb 0), zerowanie mikrokontrolera i rozpoczę cie pracy systemu
w trybie 0 (PC - CONTROL) .
Rys.27. Wyświetlacz LCD w trybie 1 pracy systemu DSM-51.
Czę ścią skł
adową systemu DSM-51 jest oprogramowanie komputera PC
sł
użą ce do asemblacji kodu ź ródł
owego i przesył
ania programu użytkownika. W
trybie SIMULATOR możliwe jest uruchomienie programu trybie krokowym.
Sterowanie wykonywaniem kolejnych instrukcji programu użytkownika przejmuje
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
59
wówczas program komunikacyjny na komputerze PC. Obsł
uga programu
komunikacyjnego zostanie przedstawiona w dalszej czę ści skryptu.
•
tryb 2 – ASSEMBLER
W tym trybie pracy użytkownik ma możliwość edycji kodu programu za pomocą
klawiatury matrycowej systemu. Wyświetlacz ciekł
okrystaliczny sł
uży do nawigacji
oraz podglą du kodu i stanu rejestrów w trybie pracy krokowej. Proces edycji,
monitorowania, ł
adowania i uruchamiania programu użytkownika jest sterowany
przez program systemowy.. Aby możliwe był
o wykonywanie programu użytkownika
pod kontrolą programu systemowego, dekoder adresów pracuje w trybie 1. Przy
przeł
ą czaniu systemu DSM-51 w tryb 2. ma miejsce zerowanie pamię ci RAM. Pod
adresem 0 pamię ci RAM zostaje umieszczony rozkaz dł
ugiego skoku do górnego
obszaru pamię ci programu, w którym dostę pny jest program systemowy. Dodatkowo
pod adres 3 pamię ci RAM zostaje zapisany rozkaz dł
ugiego skoku umożliwiają cy
wykonywanie procedury obsł
ugi przerwania INT0 umieszczonej w pamię ci EPROM.
Przerwanie INT0 wykorzystywane jest do obsł
ugi krokowej egzekucji programu
użytkownika.
Rys.28. Wyświetlacz LCD w trybie 2 pracy systemu DSM-51.
Rozpoczę cie pracy nastę puje po wciśnię ciu klawisza Enter. Wyświetlacz
sygnalizuje wówczas możliwość wyboru trzech opcji: (1) EDIT – umożliwia
rozpoczę cie edycji programu, (2) RUN – uruchamia program użytkownika i (3) STEP
– rozpoczyna wykonywanie programu użytkownika w trybie pracy krokowej. Wybór i
zatwierdzanie opcji odbywa się odpowiednio za pomocą klawiszy poziomych strzał
ek
i klawisza Enter.
Po rozpoczę ciu edycji użytkownik na do wyboru trzy kolejne opcje widoczne
na wyświetlaczu: (1) INS – pozwala na wstawienie powyżej bieżą cej linii programu
pojedynczego rozkazu bą dź etykiety, (2) MAIN – wywoł
uje gł
ówne menu (omowione
wyżej), (3) DEL – usuwa widoczną na wyświetlaczu linie programu. W trybie edycji
widoczna jest tylko jedna linia programu. Wciskają c klawisze pionowych strzał
ek
można wyświetlać kolejne linie programu. Wstawienie linii programu odbywa się
poprzez wybór z wyświetlonej listy etykiety lub tzw. skrótu mnemonicznego rozkazu
oraz jego argumentów. Wyboru dokonuje się za pomocą klawiszami strzał
ek. System
pozwala na wprowadzenie do 255 linii programu.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
60
Wybór opcji RUN powoduje uruchomienie programu użytkownika. Program
wprowadzony przez użytkownika jest ł
adowany do pamię ci RAM po wyznaczeniu
kodów operacji i adresów skoków. Pierwszy bajt kodu umieszczany jest pod adresem
256. Uruchomienie programu polega na wykonaniu dł
ugiego skoku (z programu
systemowego ulokowanego w wysokich adresach pamię ci EPROM) pod adres 256 od
którego rozpoczyna się kod programu użytkownika.
Rys.29. Praca w trybie wewnę trznego asemblera 8051: (a) głó wne menu, (b) edycja kodu,
(c) uruchamianie programu w trybie krokowym.
Opcja STEP pozwala na uruchomienie programu użytkownika w trybie pracy
krokowej. Ł adowanie i uruchomienie programu użytkownika przebiega podobnie jak
w przypadku pracy cią gł
ej (opcja RUN). Jedyną różnicą jest uaktywnienie przerwania
zewnę trznego INT0, które wstrzymuje program użytkownika po wykonaniu każdej
instrukcji. Na wyświetlaczu umieszczony jest wówczas kolejny rozkaz. W tym czasie
użytkownik ma możliwość odczytania stanu najważniejszych rejestrów: A, B, PSW,
SP, DPTR, R0-R7 oraz dwóch ostatnich wpisów na stos. Wyboru rejestru odbywa się
za pomocą klawiszy poziomych strzał
ek. Wykonanie kolejnego rozkazu jest możliwe
po przyciśnię ciu klawisza Enter. Obsł
uga przerwania INT0 o wysokim poziomie
priorytetu jest podejmowana po zakoń czeniu każdego cyklu rozkazowego programu
użytkownika. Jest to możliwe dzię ki temu, że sygnał
żą dania przerwania zawsze jest
aktywny (ustawiono niski stan na 2. bicie portu P3).
Wciśnię cie przycisku RESET-RAM powoduje restart mikrokontrolera i
wznowienie pracy nad programem użytkownika, nie zależnie od tego czy sygnał
reset
pojawił
się w trakcie wykonania czy edycji programu. Zachowanie takie wynika z
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
61
umieszczenia pod adresem 0 dł
ugiego skoku do obszaru programu systemowego
kodem obsł
ugi trybu 2. (ASSEMBLER).
Zastosowanie kombinacji klawisza RESET-ROM i klawisza 2 kasuje
zawartość pamię ci RAM, a nastę pnie rozpoczyna pracę systemu DSM-51 w trybie 2.
Nie ma zatem możliwości uruchomienia w trybie pracy krokowej (wewnę trznego
asemblera) kodu zał
adowanego w trybie 0 przez port szeregowy. Po wciśnię ciu
pojedynczego przycisku RESET-ROM system przeł
ą cza się w tryb 0.
Uruchamianie programu użytkownika w trybie krokowym niesie ze sobą liczne
ograniczenia co dostę pności zasobów systemu DSM-51. Program systemowy angażują c się
obsł
ugę programu użytkownika mu blokuje dostę p do wybranych ukł
adów systemu i
pewnych obszarów pamię ci. Nieznajomość tych ograniczeń może prowadzić do trudnych do
zdiagnozowania bł
ę dów. W Dodatku ... umieszczono wykaz ograniczeń nakładanych na
programy uruchamiane krokowo w trybie 1 (komunikacji z komputerem PC) oraz w trybie 2
(pracy wewnę trznego asemblera)
2.2.2. Układy systemu DSM-51
W niniejszym rozdziale zostaną omówione ukł
ady peryferyjne zintegrowane na pł
ycie
systemu DSM-51. Skupiono się wył
ą cznie na budowie i omówieniu zasady działania układów
wejścia-wyjścia. Kody programów obsł
ugi tychże urzą dzeń wraz z przedstawieniem
niuansów ich programowej obsł
ugi są zamieszczone w dalszej czę ści skryptu.
Mikrokontroler 8051 nie posiada odrę bnej przestrzeni adresowej dla zewnę trznych
ukł
adów wejścia-wyjścia. Z tego wzglę du stosuje się zwykle jedno z dwóch rozwią zań :
(1) W pierwszym wariancie urzą dzenia peryferyjne mogą być podł
ą czone
bezpośrednio do portów mikrokontrolera. Wymiana danych z urzą dzeniem odbywa się
wówczas poprzez zapis lub odczyt danych do/z portu. Rozwią zanie to może być jednak
stosowane tylko wtedy, gdy obsł
ugujemy niewielką ilość ukł
adów peryferyjnych. W
przypadku korzystania z zewnę trznej pamię ci programu dwa z czterech portów
mikrokontrolera (porty P0 i P2) są używane do wymiany danych i adresów mię dzy pamię cią a
mikrokontrolerem. Podł
ą czenie zewnę trznej pamię ci danych uniemożliwia korzystanie z
dwóch linii portu P3 (bity 7 i 6) przesył
ają cych sygnał
y sterują ce WR i RD. Pozostał
e
koń cówki portu P3 sł
użą jako: linie portu szeregowego, linie przerwań zewnę trznych oraz
wejścia ukł
adów licznikowych. Do swobodnej dyspozycji pozostaje zatem tylko port P0. Daje
to możliwość wymiany tylko ośmiu sygnał
ów przez adresowalne bitowo linie portu.
(2) Drugim rozwią zaniem, jest wydzielenie w przestrzeni adresowej pamię ci danych
pewnego obszaru przeznaczonego na obsł
ugę urzą dzeń wejścia-wyjścia. Rozwią zanie to,
użyte w systemie DSM-51, niesie ze sobą konieczność zastosowania dekodera adresów. Gdy
mikrokontroler zamierza nawią zać komunikację z wybranym ukł
adem peryferyjnym, dekoder
adresów na podstawie adresu wystawionego na magistralę adresową oraz sygnał
ów
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
62
sterują cych wysył
a do żą danego ukł
adu sygnał
aktywują cy CS. Dzię ki reszta ukł
adów
pozostaje nieaktywna i nie bierze udział
u w wymianie danych. Zapis danych pod odpowiedni
(zarezerwowany dla ukł
adów peryferyjnych) adres w pamię ci danych bę dzie równoznaczny z
wysł
aniem danych do urzą dzenia wyjściowego. Odczyt – spowoduje pobranie danych z
wybranego ukł
adu wejścia. Ze wzglę du na to, iż odczytowi i zapisowi danych towarzyszy
wystawianie przez mikrokontroler innych sygnał
ów sterują cych (odpowiednio RD lub WR),
dekoder adresów może ten sam adres przypisać do dwóch różnych ukł
adów: jednego
wejściowego i drugiego wyjściowego. Przykł
adowo: zapis danych może sterować
wyświetlaczem, a ich odczyt spod tego samego adresu – pobierać dane z klawiatury.
uk
łady
we.-wyj,
256
adres
ów
zewn
ę trzna
magistrala
systemowa
segment 15
32768
8000
H
(
)
65534
FFFF )
H
((
65280
FF00 )
H
((
61695
F0FF )
H
((
61440
F000 )
H
((
segment 0
pami
ę ć
danych
Rys.30. Podział przestrzeni adresowej układó w wejścia-wyjścia na 16 ró wnoważnych
segmentó w.
Jak wspomniano w poprzednim rozdziale, w systemie DSM-51 ostatnie 4 kilobajty
pamię ci danych zarezerwowano na obsł
ugę ukł
adów wejścia-wyjścia. Ze wzglę du na niepeł
ne
dekodowanie adresów (w ukł
adzie dekodera) obszar ten podzielony jest na 16 równoważnych
czę ści. W efekcie daje to 256 rozróżnialnych adresów przeznaczonych na obsł
ugę ukł
adów
peryferyjnych. W praktyce najł
atwiej dowoł
ywać się do ukł
adów wejścia-wyjścia poprzez
ostatnie 265 adresów. Po (re)starcie mikrokontrolera koń cówki portu P2 są w stanie wysokim.
Jeśli zatem nie wykonywano, żadnych zapisów lub odczytów do/z komórek zewnę trznej
pamię ci danych to wystarczy zaadresować ukł
ad jedynie mł
odszą czę ścią adresu za
pośrednictwem rejestru R0 lub R1.
W dalszej czę ści rozdział
u zostaną omówione poszczególne ukł
ady wejścia-wyjścia
systemu DSM-51.
•
Klawiatura matrycowa.
Klawiaturę matrycową stanowi grupa przycisków zaaranżowanych w wiersze i kolumny tak
jak przedstawia to Rys.31 Ukł
ad klawiatury pozwala na odczytanie stanu wybranej kolumny
klawiszy. Obsł
uga polega na uaktywnieniu (ustawieniu odpowiedniego poziomu) jednej z
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
63
linii z kolumn i odczycie stanu wszystkich linii wierszy. Stan danej linii wiersza wskazuje na
wciśnię cie bą dź zwolnienie określonego klawisza w uaktywnionej uprzednio kolumnie.
K1
K2
W1
W2
W3
W4
W5
W6
W7
W8
V
CC
D0
D1
D2
D3
D4
D5
D6
D7
b
u
fo
r
m
a
g
is
tr
a
li
(A0) (A1)
CS
Rys.31. Schemat ideowy 16-klawiszowej klawiatury matrycowej.
Klawiatura w systemie DSM-51 skł
ada się z 16 klawiszy poł
ą czonych w dwie
ośmiowierszowe kolumny. Klawiaturze przypisano dwa kolejne adresy oznaczone CSKB0 i
CSKB1. Każdy z nich przeznaczony do odczytu innej z dwóch kolumn klawiatury.
Tabela 16. Oznaczenia klawiszy przypisanych do poszczegó lnych bitó w rejestró w CSKB1 i
CSKB0.
numer
bitu
rejestr
CSKB0
rejestr
CSKB1
7
7
Ent.
6
6
Esc.
5
5
4
4
3
3
2
2
1
1
9
0
0
8
Oba adresy mają przeciwne stany dwóch najmł
odszych bitów. Dzię ki temu dwie najmł
odsze
linie adresowe mogą być używane do wyboru jednej z dwóch kolumn klawiatury. W systemie
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
64
DSM-51 uaktywnienie kolumny klawiatury dobywa się niskim stanem linii adresowej. Z tego
wzglę du niski stan linii wiersza odpowiada wciśnię ciu klawisza. W Tabeli 16 pokazano jak
przyporzą dkowane są kolejne bity rejestrów CSKB0 i CSKB1 do poszczególnych klawiszy.
Osiem linii wierszy podpię te jest przez tzw. bufor magistrali do zewnę trznej magistrali
danych mikrokontrolera. Bufor magistrali skł
ada się z trójstanowych bramek, które w
momencie otrzymania z dekodera adresów sygnał
u CS podpinają linie danych do magistrali.
Gdy sygnał
CS nie jest wysterowany bramki pozostają w stanie wysokiej impedancji. Linie
kolumn podł
ą czone są zaś bezpośrednio do dwóch najmłodszych linii magistrali adresowej.
W bardziej zawansowanych ukł
adach peryferyjnych przeznaczonych do systemów
mikroprocesorowych
(takich
jak
przetworniki
analogowo
cyfrowe,
wyświetlacze
ciekł
okrystaliczne, itd.) bufor magistrali scalony jest zwykle w strukturze sterownika ukł
adu.
•
Blok wyświetlaczy siedmiosegmentowych
Wyświetlacz siedmiosegmentowy jest zespoł
em ośmiu diod elektroluminescencyjnych (LED)
zamknię tych w jednej obudowie. Siedem diod uformowanych jest w kształ
t segmentów,
uł
ożonych w obrys cyfry 8 (tak jak pokazuje to Rys.32). Ó sma - peł
ni funkcje kropki
dziesię tnej. Zapalają c odpowiednie diody można wyświetlać cyfry od 0 do 9. Aby ograniczyć
liczbę wyprowadzeń zwiera się katody lub anody diod. Dzię ki temu wyświetlacz ze wspólną
anodą (katodą ) posiada dziewię ć koń cówek.
a
b
c
d
e
f
g
dp
Rys.32. Oznaczenia poszczegó lnych diod LED wyświetlacza siedmiosegmentowego.
W
systemie
DSM-51
zainstalowano
blok
sześciu
wyświetlaczy
siedmiosegmentowych. Jak ł
atwo się przekonać, aby sterować niezależnie wszystkimi
segmentami wyświetlaczy potrzeba 48 linii danych. Wymagał
oby to zarezerwowania sześciu
adresów w przestrzeni urzą dzeń wejścia-wyjścia, użycia sześciu buforów magistrali, oraz
zastosowania skomplikowanego ukł
adu dekodera adresów. O ile takiego zbudowanie ukł
adu
z wykorzystania magistrali jest bardzo kł
opotliwe to przy zastosowaniu bezpośredniego
sterowania koń cówkami portów jest to po prostu niemożliwe. Praktycznie stosuje się wię c
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
65
inne rozwią zanie (wykorzystane również w DSM-51) polegają ce na dynamicznym sterowaniu
blokiem wyświetlaczy.
C
S
D
B
re
je
s
tr
z
a
tr
z
a
s
k
o
w
y
C
S
D
S
re
je
s
tr
z
a
tr
z
a
s
k
o
w
y
CS
CS
W1
W2
W3
W4
W5
W6
V
CC
zesp
ół
diod
LED
K1
K2
K3
K4
K5
K6
P3.5
P1.6
D0
D7 ...
Rys.33. Blok wyświetlaczy 7-segmentowych. Przerywaną linią obramowano układ klawiatury
sekwencyjnej.
Ukł
ad dynamicznego sterowania blokiem wyświetlaczy posiada dwie grupy linii
sterują cych. Pierwsza grupa steruje wyborem aktywnych wyświetlaczy, druga – określa jakie
segmenty mają palić się na aktywnych wyświetlaczach. Przy czym ukł
ad zapalonych
segmentów jest wspólny dla wszystkich wyświetlaczy. Metoda wyświetlania wykorzystuje
bezwł
adność oka ludzkiego. Na stosunkowo krótkie przedział
y czasu (okoł
o 1ms) wł
ą czane
są kolejne wyświetlacze. Przeł
ą czeniu każdego kolejnego wyświetlacza towarzyszy wybór
innego ukł
ad segmentów. Dzię ki temu w kolejnych przedział
ach czasu mogą świecić inną
kombinacją segmentów kolejne, pojedyncze wyświetlacze. Jeśli proces ten powtarza się
cyklicznie z odpowiednio wysoką czę stotliwością , to obserwator odnosi wrażenie
jednoczesnego świecenia się wszystkich wyświetlaczy. Rozwią zanie to ma również tą zaletę ,
że ogranicza pobór prą du przez blok wyświetlaczy. W przeciwień stwie do wyświetlacza
statycznego - w wyświetlaczu dynamicznym - w danej chwili czasu, świeci się tylko jeden
wyświetlacz.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
66
W systemie DSM-51 do sterowania blokiem wyświetlaczy siedmiosegmentowych
przeznaczono dwa adresy oznaczone CSDS i CSDB oraz 6. bit portu P1. Wysoki stan 6. bitu
portu P0 wł
ą cza cały blok wyświetlaczy. Ustawienie jednego z sześciu młodszych bitów
rejestru CSDS zał
ą cza wybrany wyświetlacz. Siódmy bit rejestru CSDS aktywuje zespół
sześciu diod elektroluminescencyjnych (LED), oznaczonych: F1, F2, F3, F4, OK, ER.
Jedynki bajta zapisanego pod adres CSDS określają aktywne segmenty dla wszystkich sześciu
wyświetlaczy i zespoł
u diod. W Tabeli 17 przedstawiono znaczenie poszczególnych bitów
rejestrów CSDS oraz CSDB. Obsł
uga wyświetlacza sprowadza się zatem do zapisu danych do
rejestru CSDS określają cych aktywne wyświetlacze oraz danych do rejestru CSDB
wskazują cych świecą ce się segmenty (diody). Aby wł
ą czyć wyświetlacz należy, po zapisie
danych do rejestrów CSDB i CSDS, ustawić 6. bit portu P1. Prześledź my to na przykł
adzie.
Aby na drugim wyświetlaczu wyświetlić cyfrę „1” należy: (1) Zapisać pod adres CSDS
wartość: 00000010 (wybrano wyświetlacz W2). (2) Zał
adować do rejestru CSDB stał
ą :
00000011 (wybrano segmenty a i b). (3) Ustawić 6. bit portu P1 (wł
ą czono blok
wyświetlaczy).
Tabela 17. Opis znaczenia poszczegó lnych bitó w rejestru wyboru wyświetlaczy (CSDS)
rejestru wyboru segmentó w (CSDB). Oznaczenie LED wskazuje na blok diod
elektroluminescencyjnych.
numer
bitu
CSDB
oznaczenie
wyświetlacza
CSDB
oznaczenie
segmentu
7
-
dp
6
LED
g
5
W6
f
4
W5
e
3
W4
d
2
W3
c
1
W2
b
0
W1
a
Rys.33 przedstawia schemat bloku wyświetlaczy siedmiosegmentowych w systemie
DSM-51. Zastosowano tu wyświetlacze ze wspólną anodą . Ich anody podł
ą czone są do
dodatniego bieguna zasilania przez sześć kluczy tranzystorowych. Siódmy klucz przył
ą cza
anody zespoł
u sześciu pojedynczych diod LED. Baza każdego z kluczy tranzystorowych
sterowana jest sygnał
em z 6. koń cówki portu P1 oraz odpowiedniej linii wyboru
wyświetlacza. Odpowiednie katody wszystkich wyświetlaczy i pojedynczych diod LED
poł
ą czone są ze sobą (tzn. wszystkie katody segmentów a i katoda diody F1, wszystkie katody
segmentów b i katoda diody F2, itd.). Katody kolejnych segmentów podł
ą czane są do masy
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
67
przez inny zespół
(ośmiu) kluczy tranzystorowych. Każdy z kluczy tranzystorowych ma
możliwość podł
ą czenia odpowiedniego segmentu (wszystkich wyświetlaczy) do masy. Bazy
tych kluczy są sterowane linami wyboru segmentów. Linie wyboru wyświetlaczy i linie
wyboru segmentów podł
ą czane są do magistrali danych przez układy rejestrów
zatrzaskowych. Każdy z dwóch zatrzasków sterowany jest innym sygnał
em CS wystawianym
przez dekoder adresów w momencie pojawienia się odpowiedniego adresu CSDS lub CSDB
na magistrali adresowej. Użycie rejestrów zatrzaskowych umożliwia zapamię tanie danych
wystawianych na magistralę danych. Dzię ki temu dane wysył
ane pod adresy CSDB i CSDB
zostają zapisane i mogą być użyte do jednoczesnego sterowania dwoma, niezależnymi
zespoł
ami kluczy tranzystorowych. Zmiana wskazania wyświetlaczy nastą pi dopiero po
zapisie nowych danych do któregoś z rejestrów zatrzaskowych CSDB lub CDDS.
•
klawiatura sekwencyjna
Odczyt klawiatury sekwencyjnej polega na zbadaniu wciśnię cia któregokolwiek z wybranych
uprzednio klawiszy. Wybór aktywnych klawiszy odbywa się za pomocą przeznaczonych do
tego celu linii. Fakt wciśnię cia chociażby jednego z wybranych klawiszy jest odzwierciedlony
stanem specjalnej linii wyjściowej. Jeśli uaktywnimy kilka klawiszy to odczyt stanu
klawiatury nie da nam da nam informacji o tym, które z nich są wciśnię te. Możemy jedynie
stwierdzić, czy wszystkie klawisze pozostają zwolnione czy też został
wciśnię ty którykolwiek
z nich. Z tego wzglę du zwykle uaktywnia się tylko jeden klawisz, wówczas stan linii
wyjściowej określony jest przez stan wybranego przycisku. Aby uzyskać informację o stanie
wszystkich przycisków należy wybierać kolejne klawisze i za każdym badać stan linii
wyjściowej. Ł atwo zauważyć, że przy dużej liczbie klawiszy obsł
uga klawiatury
sekwencyjnej jest dł
ugotrwał
a, gdyż dł
ugość cyklu „przepytywania” klawiatury określona jest
liczbą klawiszy; jej konstrukcja zaś kł
opotliwa ze wzglę du na dużą ilość linii wyboru
klawiszy.
Klawiatura sekwencyjna użyta w systemie DSM-51 posiada sześć klawiszy. Linie
wyboru klawiszy są podł
ą czone do wyjść rejestru zatrzaskowego CSDS. Oznacza to, że
obsł
uga klawiatury sekwencyjnej jest skojarzona z obsł
ugą bloku wyświetlaczy
siedmiosegmentowych.
Przy
równoczesnym
korzystaniu
z
bloku
wyświetlaczy
siedmiosegmentowych i klawiatury sekwencyjnej należy równolegle prowadzić obsł
ugę obu
urzą dzeń . Wybór określonego wyświetlacza jest jednocześnie wyborem jednego z klawiszy.
Gdy aktywny jest jeden z wyświetlaczy stan linii wyjściowej klawiatury określa zatem stan
zwią zanego z nim klawisza. W Tabeli 18 przedstawiono oznaczenia przycisków klawiatury
sekwencyjnej wraz z odpowiadają cymi im wyświetlaczami.
Powyższe rozwią zanie jest bardzo czę sto stosowane w wielu praktycznych
realizacjach. Pozwala ono znacznie uprościć budowę sprzę tu i oszczę dzić zasoby systemu.
Przy obsł
udze urzą dzeń wejścia-wyjścia z wykorzystaniem portów rozwią zanie to ogranicza
liczbę linii portów przeznaczonych do wymiany sygnał
ów z układami peryferyjnymi. W
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
68
przypadku stosowania magistrali – zmniejsza ono ilość wymaganych adresów ukł
adów
wejścia-wyjścia, a w zwią zku z tym upraszcza konstrukcję dekodera adresów i wymaga
stosowania mniejszej liczby buforów zatrzaskowych.
Tabela 18. Oznaczenia klawiszy przypisanych do poszczegó lnych bitó w rejestró w CSDS.
numer
bitu
CSDS
oznaczenie
klawisza
7
-
6
-
5
4
3
2
1
Esc.
0
Ent.
Schemat klawiatury sekwencyjnej w systemie DSM-51 przedstawia Rys. 33 . Jeden
styk każdego z przycisków poł
ą czony jest przez diodę do wspólnej linii odczytu stanu
klawiatury. Lina odczytu poł
ą czona jest przez rezystor do masy. Drugi, wolny, styk każdego z
przycisków sł
uży jako linia aktywują ca. Wysoki stan linii aktywują cej oznacza wybór
zwią zanego z nią przycisku. Wciśnię cie któregokolwiek z wybranych przycisków powoduje
podniesienie potencjał
u linii odczytu. Rolą diod jest zapobieżenie konfliktowi wyjść Jeśli
wciśnię ciu klawisza przypiszemy stan niski to stan linii odczytu klawiatury bę dzie logiczną
funkcją or stanu wszystkich wybranych klawiszy. Zastosowane w ukł
adzie diody mają
zapobiegać konfliktowi wyjść rejestru CSDS w przypadku jednoczesnego wciśnię cia
aktywnych i nieaktywnych przycisków.
•
wyświetlacz ciekł
okrystaliczny (LCD)
W odróżnieniu od wyświetlacza graficznego, w którym cał
y ekran stanowi jedną matrycę ,
wyświetlacz alfanumeryczny zbudowany jest z zespoł
u matryc znakowych uł
ożonych w linie.
Każda z matryc podzielona na niewielką ilość rzę dów i kolumn sł
uży do wyświetlania
jednego ze znaków zapisanych w pamię ci wyświetlacza. Sterownik wyświetlacza posiada
tzw. pamię ć generatora znaków i pamię ć wyświetlacza. W pamię ci wyświetlacza
przechowuje się kody znaków, które mają się pojawiać na określonych pozycjach
wyświetlacza. Na podstawie kodu znaku sterownik określa adres w pamię ci generatora
znaków, pod którym umieszczony jest wzorzec znaku. Wzorzec ten jest blokiem danych, w
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
69
którym zapisano jakie punkty matrycy znakowej mają być „zapalone” dla określonego kodu
znaku.
W systemie DSM-51 zastosowano alfanumeryczny wyświetlacz ciekł
okrystaliczny
posiadają cy dwie szesnastoznakowe linie. W wyświetlaczu zintegrowany jest popularny
sterownik HD4480. Pozwala on sterować wyświetlaczami zawierają cymi do 40 znaków w
każdej z dwóch linii. Każdy znak alfanumeryczny wyświetlany jest na matrycy liczą cej 35
punktów (8 rzę dów, 5 kolumn).
D0
D1
D2
D3
D4
0
1
1
1
0
0
1
0
0
1
0
0
1
0
0
1
0
0
1
1
1
1
1
1
0
0
0
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
x
0
0
0
0
1
0
1
0
0
1
1
1
0
1
1
1
0
1
1
1
1
1
1
0
n
n
2
1
0
n
n
2
1
0
n
n
2
1
0
n
n
2
1
0
n
n
2
1
0
n
n
2
1
0
n
n
2
1
0
n
n
2
1
0
D6 D5
D7
A0
A1
A2
A3
A4
A5
00
H
(00)
H
(01)
64
H
(40)
H
(41)
14
H
(0E)
H
(0F)
78
H
(4E)
H
(4F)
16
H
(10)
H
(11)
80
H
(50)
H
(51)
H
(27)
H
(67)
a)
b)
c)
Rys.34. Alfanumeryczny wyświetlacz LCD. (a) Każdej pozycji przypisany jest inny adres
pamię ci wyświetlacza. Niewidoczne pozycje wyświetlacza (tzn. istniejące wyłącznie w jego
pamię ci) zaznaczono przerywaną linią. (b) Znak wyświetlony na matrycy i (c) sposó b
kodowania znaku użytkownika w pamię ci wyświetlacza. Symbol x oznacza dowolną wartość
bita; oznaczenia n
2
n
1
n
0
określają kod znaku
Pamię ć generatora znaków skł
ada się pamię ci ROM, w której zapisano wzorce 192
znaków alfanumerycznych oraz pamię ci typu RAM pozwalają cej przechowywać wzorce 8
znaków zdefiniowanych programowo. Na każdy znak przeznaczono osiem bajtów pamię ci
generatora znaków. Każdy z ośmiu bajtów koduje kolejny rzą d w matrycy znaku. Ustawione
bity oznaczają zapalone punkty w rzę dzie. Przy czym, ze wzglę du na to, iż matryca ma pię ć
kolumn, istotny jest jedynie stan pię ciu najmł
odszych bitów.
Pamię ć wyświetlacza jest pamię cią typu RAM i przechowuje 80 bajtowych kodów
znaków umieszczonych w dwóch liniach wyświetlacza. Pierwszej linii przypisano adresy od 0
do 39, drugiej – adresy z przedział
u: do 64 do 103. W systemie DSM-51 użyto wyświetlacza
o dwóch szesnastoznakowych linach. Z tego wzglę du w każdej z linii widocznych jest tylko
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
70
16 z 40 zapisanych w pamię ci wyświetlacza znaków. Pozostał
e znaki mogą być widoczne po
wykonaniu tzw. obrotu pamię ci wyświetlacza. Po inicjacji wyświetlacza do pierwszej pozycji
w pierwszej linii przypisany jest adres 0. Zatem, kod ostatniego widocznego znaku pierwszej
linii umieszczony jest pod adresem 15. Podobnie pierwszemu znakowi w drugiej linii
odpowiada adres 64, a ostatniemu znakowi w tej linii – adres 103 pamię ci wyświetlacza.
Operacja obrotu powoduje cykliczną zmianę przyporzą dkowania adresów pamię ci
wyświetlacza do poszczególnych jego pozycji. Po pierwszym obrocie w lewo na kolejnych
pozycjach pierwszej linii wyświetlacza pojawią się znaki o kodach zapisanych w komórkach
1,2,3, ...,14,15,16. Natomiast druga linia bę dzie zawierał
a znaki, których kody umieszczono
pod adresami 65,66,67, ... , 78, 79, 80. Dla użytkownika, wynikiem operacji obrotu w lewo
bę dzie przesunię cie cał
ej treści wyświetlacza o jedną pozycję w lewo. Znaki wystę pują ce
uprzednio na pierwszy pozycjach obu linii znikną , a na ostatnie pozycje obu linii wył
onią się
niewidoczne wcześniej znaki. Cykliczność obrotów polega na tym, że po odpowiednio dużej
ich liczbie znaki znikają ce na jednej krawę dzi wyświetlacza pojawią się ponownie na drugiej.
W przypadku wyświetlacza zastosowanego w systemie DSM-51 po wykonaniu 16 obrotów w
lewo poszczególnym pozycjom wyświetlacza bę dą odpowiadać nastę pują ce adresy: 16, 17,
18, ..., 31 – zniknie zatem cał
a począ tkowa treść wyświetlacza, ujawnią się natomiast znaki
zapisane pod wyższymi adresami pamię ci wyświetlacza. Po dalszych 24 obrotach w lewo na
wyświetlaczu bę dą widoczne znaki zapisane pod adresami: 25, ... ,38,39,0 – znak wystę pują cy
począ tkowo na pierwszej pozycji wyświetlacza pojawi się wię c na pozycji ostatniej.
Zachowanie się wyświetlacza dwuwierszowego przy obrotach w prawo i lewo przedstawia
Rys.35.
Do komunikacji ze sterownikiem wyświetlacza sł
uży osiem linii danych oraz trzy linie
sterują ce. Za pomocą linii danych można wysył
ać komendy, sprawdzać stan wyświetlacza
oraz wymieniać dane z pamię cią wyświetlacza lub generatora znaków. Wymiana danych z
ukł
adem wyświetlacza jest możliwa po ustawieniu sygnał
u aktywują cego E. Linia sterują ca E
jest podł
ą czona do odpowiedniego wyjścia dekodera adresów. Na postawie stanu pozostałych
linie sterują cych, oznaczonych RS i R/W, sterownik odróżnia dane do komend oraz określa
kierunek transmisji. Wysoki stan linii RS oznacza wymianę danych, niski – wysł
anie
komendy. Odczyt musi być zasygnalizowany wysokim stanem linii R/W, zapis – wymaga zaś
niskiego stanu tej linii. Linie sterują ce RS i R/W podł
ą czone są dwóch najmłodszych linii
adresowych magistrali. Odpowiednie wysterowanie tych linii odbywa się poprzez
wystawienie na magistralę adresową jednego z czterech zarezerwowanych dla wyświetlacza
adresów. Stan linii RS i R/W wraz z odpowiadają cym im adresem przedstawiono w
Tabeli 19. Osiem linii danych jest bezpośrednio podpię tych do magistrali danych.
Obsł
uga wyświetlacza jest stosunkowo czasochł
onna. Wyświetlacz jest gotowy do
wymiany kolejnych danych lub wykonania komendy po czasie okoł
o 40
µ
s. Z tego wzglę du
przed wykonaniem kolejnej operacji należy sprawdzić jego stan. Po wyzerowaniu linii RS i
ustawieniu linii R/W stan najstarszej linii danych określa gotowość (linia w stanie niskim),
bą dź zaję tość (linia w stanie wysokim) wyświetlacza.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
71
Tabela 19. Adresy rejestró w wyświetlacza LCD w powiązaniu stanami koń có wek RS i R/W .
RS
(A0)
R/W
(A1)
adres
oznaczenie
znaczenie
0
0
10xxxx00
LCDWC
zapis
rozkaz
ów
0
1
10xxxx10
LCDRC
odczyt
stanu
1
0
10xxxx01
LCDWD
zapis
danych
1
1
10xxxx11
LCDRD
odczyt
danych
Zapis danych (RS=1, R/W=0) do pamię ci wyświetlacza po jego inicjacji spowoduje
umieszczenie kodu znaku pod adresem 0 i wyświetlenie odpowiadają cego mu znaku na
pierwszej pozycji w pierwszej linii. W zależności od ustawień zapis każdego kolejnego kodu
znaku bę dzie odbywał
się pod adresem o jeden wię kszym bą dź adresem jeden mniejszym.
a)
00
H
(00)
H
(01)
64
H
(40)
14
(0E)
78
H
(4E)
H
(4F)
80
H
(50)
H
(51)
(27)
H
(67)
(41)
H
(0F)
16
(10)
(11)
00
H
(00)
64
H
(40)
14
(0E)
78
H
(4E)
H
(4F)
80
H
(50)
H
(66)
(27)
H
(67)
(0F)
16
(10)
(26)
13
(0D)
77
H
(4D)
00
H
(00)
H
(01)
64
H
(40)
H
(4F)
80
H
(50)
H
(51)
(41)
H
(0F)
16
(10)
(11)
H
(02)
(42)
H
H
(52)
(12)
b)
c)
Rys.35 Pamię ć wyświetlacza (a) po zerowaniu sterownika, (b) po obrocie pamię ci w prawo i
(c) przy obrocie w lewo.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
72
Zapis danych (RS=1, R/W=0) do pamię ci wyświetlacza po jego inicjacji spowoduje
umieszczenie kodu znaku pod adresem 0 i wyświetlenie odpowiadają cego mu znaku na
pierwszej pozycji w pierwszej linii. W zależności od ustawień zapis każdego kolejnego kodu
znaku bę dzie odbywał
się pod adresem o jeden wię kszym bą dź adresem jeden mniejszym. W
pierwszym przypadku kolejne znaki bę dą pojawiał
y się na prawo do swych poprzedników.
Kolejne znaki utworzą zatem pisany od lewej do prawej napis. W drugim przypadku
powstają cy napis bę dzie począ tkowo niewidoczny, gdyż pisanie bę dzie odbywał
o się w
pamię ci wyświetlacza. Kolejne wpisywane znaki staną się widoczne, gdy zapeł
nią się
„ukryte” pozycje wyświetlacza. Wówczas pisany od prawej do lewej napis bę dzie zacznie
wył
aniać się z lewej krawę dzi wyświetlacza. Każdemu z kierunków wypisywania napisów
(od lewej do prawej, lub od prawej do lewej) może towarzyszyć obrót wyświetlacza w
przeciwnym kierunku. Dzię ki temu zabiegowi każdy nowo wypisywany znak bę dzie pojawiać
się na tej samej pozycji wyświetlacza. Inkrementację bą dź dekrementację adresu pamię ci
wyświetlacza oraz wł
ą czenie obrotów ustala się za pomocą odpowiedniej komendy (RS=0,
R/W=0) wysył
ają c na linie danych wł
aściwy ukł
ad bitów. Omówiony powyżej mechanizm
dotyczy również odczytu danych (RS=1, R/W=1) z pamię ci wyświetlacza. Odczytany bajt
danych jest kodem znaku umieszczonego pod bieżą cym adresem. Podobnie jak w przypadku
zapisu każdy odczyt powoduje cykliczną inkrementację lub dekrementację adresu pamię ci
wyświetlacza. Proces ten może obrywać się równocześnie z odpowiednim (przeciwnym do
kierunku odczytu) obrotem wyświetlacza.
Aby wpisać lub odczytać kod znaku do/z dowolnej komórki pamię ci wyświetlacza
należy jawnie wskazać jej adres. Adres wybranej komórki pamię ci wyświetlacza ustala się za
pomocą specjalnej komendy (RS=0, R/W=0). Wysł
anie komendy polega na: (1) ustawieniu
najstarszej linii danych i (2) zapisaniu adresu komórki pamię ci wyświetlacza na siedmiu
mł
odszych liniach. Wysył
ają c ośmiobitowy kod znaku na linie danych dokonuje się wpisu
(RS=1, R/W=0) kodu znaku pod wskazany uprzednio adres pamię ci wyświetlacza. Gdy adres
odpowiada widocznej pozycji wyświetlacza to wynikiem zapisu bę dzie pojawienie się na niej
żą danego znaku. Kody cyfr oraz małych i wielkich liter alfabetu angielskiego pokrywają się z
kodami ASCII. Osiem pierwszych kodów (0-7) odpowiada znakom zdefiniowanym przez
użytkownika (o wzorcach zapisanych w pamię ci RAM generatora znaków). W Dodatku ...
pokazano kody znaków w wyświetlacza w wersji zastosowanej w systemie DSM-51. Jeśli
bieżą cy adres pamię ci wyświetlacza dotyczy (widocznej) pozycji, to może być ona wskazana
za pomocą kursora. Kursor ma postać poziomej linii wyświetlanej w ostatnim rzę dzie matrycy
znaku. Za pomocą specjalnej komendy (RS=0, R/W=0) można uwidocznić kursor oraz
ustawić jego migotanie.
Wymiana danych z pamię cią generatora znaków dotyczy jedynie 64 bajtów pamię ci
RAM, w których zapisane są wzorce ośmiu zdefiniowanych przez użytkownika znaków.
Komenda (RS=0, R/W=0) określają ca adres komórki pamię ci generatora znaków ma
nastę pują cą postać 01AAALLL. Bity AAA kodują numer znaku, a LLL – określają numer
rzę du w matrycy wzorca znaku. Po wydaniu powyższej komendy zapis danych (RS=1,
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
73
R/W=0) powoduje ustalenie postaci wybranego rzę du w matrycy wzorca jednego ze znaków
użytkownika.
Do obsł
ugi wyświetlacza sł
uży szereg komend. Ich skł
adnia został
a omówiona w
Dodatku ... . Wśród pozostał
ych komend należy wspomnieć komendy sł
użą ce do inicjalizacji
pracy wyświetlacza. Określają one: tryb pracy sterownika (przeznaczony do obsł
ugi
wyświetlacza o jednej lub dwóch liniach), sposób wymiany danych i komend (z
wykorzystaniem ośmiu lub czterech linii danych); umożliwiają wł
ą czenie/ wyłączenie całego
wyświetlacza i kursora oraz ustawienie migotania kursora; pozwalają na wyzerowanie
pamię ci wyświetlacza i ustawienia aktualnego adresu na począ tku pamię ci.
•
Ukł
ad programowalnych portów równoległ
ych
W systemie DSM-51 wszystkie koń cówki portów są zaangażowane w obsł
ugę ukł
adów
wejścia-wyjścia oraz zewnę trznej pamię ci mikrokontrolera. Jednym ze sposobów rozwią zania
tej niedogodności jest zastosowanie programowalnego ukł
adu portów równoległ
ych
podł
ą czonego do magistrali jako jeden z układów peryferyjnych. Projektanci systemu
DSM-51 zastosowali ukł
ad 8255 zawierają cy trzy ośmiobitowe porty. Ukł
ad 8255 może
pracować w trzech trybach. Jeden z nich umożliwia bezwarunkową transmisje z
wykorzystaniem wszystkich koń cówek portów do przesył
ania danych. W dwóch pozostał
ych
trybach realizowana jest jedno lub dwu kierunkowa transmisja danych poprzedzona procesem
uzgadniania i kontroli wymiany danych (handshacking). Pracują c w jednym z dwóch trybów
kontrolowanej transmisji danych ukł
ad 8255 ma możliwość generacji sygnał
ów przerwań .
Zaletą zastosowania obsł
ugi przerwań jest zwolnienie mikroprocesora z potrzeby
nieustannego testowania linii w celu wyznaczenia momentu nadesł
ania nowych danych oraz
określenia gotowości przyję cia danych. Wadą zaś jest w tym przypadku konieczność
poświę cenia kilku linii portów do przesył
ania sygnał
ów sterują cych i sygnałów przerwań .
Wszystkie wyjściowe linie danych wyposażone są w przerzutniki zatrzaskują ce ostatni
zapisany na wyjście stan. Linie wejściowe portów pracują cych w trybie transmisji
bezwarunkowej pozbawione są przerzutników zatrzaskują cych. Oznacza to, iż odczyt danych
z portu daje w tym przypadku bieżą cy stan ich koń cówek. Natomiast w obu trybach
kontrolowanej transmisji danych stan linii wejściowych jest zapamię tany w ukł
adzie
przerzutników. Zapis danych do przerzutników z koń cówek portów odbywa się po odebraniu
odpowiedniego sygnał
u startują cego.
Do obsł
ugi ukł
adu 8255 przeznaczono cztery rozróżnialne adresy w przestrzeni
adresowej ukł
adów wejścia-wyjścia oznaczone CS55A, CS55B, CS55C, CS55D. Adres
CS55D określa tzw. rejestr sterują cy ukł
adu 8255. Pozostał
e oznaczenia odpowiadają
rejestrom trzech ośmiobitowych portów A, B, C. Wystawienie na magistralę adresową adresu
odpowiadają cego ukł
adowi 8255 powoduje wysterowanie przez dekoder adresów sygnał
u
aktywują cego. Sygnał
ten podany na wejście CS ukł
adu 8255 podł
ą cza osiem linii danych
ukł
adu do magistrali danych. Adresy CS55A, CS55B, CS55C, CS55D różnią się stanem
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
74
dwóch najmł
odszych linii adresowych. Podł
ą czenie wejść A1 i A0 układu 8255 do dwóch
najmł
odszych linii magistrali adresowej pozwala zatem określić, z którym z czterech
rejestrów ukł
adu zwią zane są wystawione dane. Rejestr stanu CS55D jest przeznaczony tylko
do zapisu. Jednakże rejestry portów mogą być zarówno odczytywane jak i zapisywane w
zależności od tego czy wybrany port pracuje jako wejście czy też jako wyjście. Z tego
powodu ukł
ad programowalnego portu musi doczytywać z magistrali sterują cej sygnał
y
zapisu i odczytu. Sygnał
y te doprowadzone są koń cówek RD i WR ukł
adu.
7
6
5
4
3
2
1
0
7
6
5
4
3
2
1
0
7
6
5
4
3
2
1
0
grupa 1.
port
A
port
C
grupa 2.
port
C
port
B
re
je
s
tr
s
te
ru
ją
c
y
Rys.36. Podział portó w układu 8255 na dwie grupy koń có wek.
Koń cówki ukł
adu 8255 podzielne są na dwie grupy. Do pierwszej grupy należy port A
i starszy kę s portu C. Drugą grupę stanowi port B i mł
odszy kę s portu C. Każda z grup może
pracować w innym trybie. Przy czym wszystkie trzy tryby pracy są dostę pne dla grupy 1,
natomiast grupa 2 może pracować jedynie w trybie 0 i 1. Tryb pracy każdej z grup oraz
kierunek koń cówek porów określa się wysył
ają c odpowiednią kombinację bitów do rejestru
sterują cego CS55D. Najstarszy bit bajta sterują cego musi być ustawiony; bity 6. i 5. określają
tryb pracy grupy 1., a bit 2. – grupy 2.; bity 4., 3., 1. i 0. wyznaczają odpowiednio kierunek
koń cówek portu A, starszego kę sa portu C, portu B oraz mł
odszego kę sa portu C (logiczna
jedynka oznacza pracę jako wejście, logiczne zero – jako wyjście).
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
75
Port C ukł
adu 8255 posiada adresowalne bity. Stan wybranego bitu można ustalić za
pomocą rejestru CS55D. Aby adresować bity portu C należy wyzerować najstarszy bit
rejestru. Bity 3,2,1 kodują wówczas numer wybranej koń cówki portu C, a najmł
odszy bit
rejestru CS55D określa jej stan. Tabela 20 przedstawia znaczenie bitów rejestru CS55D
pracują cego w trybie rejestr sterują cego lub trybie adresowania koń cówek portu C.
Tabela 20. Adresy rejestró w wyświetlacza LCD w powiązaniu stanami koń có wek RS i R/W .
numer
bitu
CS55D - rejestr sterują cy
CS55D - adresowanie portu C
7
1
0
6
x
5
tryb grupy 1.
(2,1,0)
x
4
kierunek ko
ńcówek A
(0-wy, 1-we)
x
3
kier. ko
ńcówek 4-7C
(0-wy, 1-we)
2
tryb grupy 2.
(1,0)
1
kierunek ko
ńcówek B
(0-wy, 1-we)
numer ko
ńcówki
(0..7)
0
kier. ko
ńcówek 3-0C
(0-wy, 1-we)
stan wybranej
ko
ńcówki
•
tryb 0 – transmisja bezwarunkowa
W trybie 0 transmisja danych przez porty A, B, C odbywa się bezwarunkowo.
Oznacza to, iż ukł
ad nie wykorzystuje żadnych koń cówek do przesył
ania sygnał
ów
sterują cych. W trybie tym odbiornik nie otrzymuje z nadajnika informacji o zamiarze
wysł
ania danych. Podobnie nadajnik nie zostaje poinformowany o gotowości
odbiornika do ich przyję cia. Z tego wzglę du trybu 0 nie stosuje się na ogół
do
równoległ
ej transmisji danych. Praca portu wyjściowego w trybie 0 bę dzie przebiegać
poprawnie gdy: (1) odbiornikiem jest ukł
ad bardzo szybko przetwarzają cy dane i nie
wymagają cy czasochł
onnej procedury przygotowują cej go do odbioru (np. wskaź nik
LED) lub (2) wysył
anie kolejnych danych nastę puje po odpowiednio dł
ugim okresie
czasu (np. wysył
anie danych do przetwornika cyfrowo-analogowego odbywa się z
okresem o wiele dł
uższym do okresu przetwarzania przetwornika). W trybie 0 nie jest
możliwy obiór danych na żą danie nadajnika. Aby wykryć pojawiają ce się
nieoczekiwanie na wejściu dane należy nieustannie (z odpowiednio krótkim okresem
czasu) odczytywać stan wejścia. Proces ten wymaga cią gł
ego zaangażowania systemu
w obsł
ugę portu niezależnie od tego czy na wejściu pojawił
y się nowe dane czy też
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
76
jego stan nie uległ
zmianie. Koń cówki portów wejściowych pracują cych w trybie 0
pozbawione są przerzutników zatrzaskowych (wyzwalanych linią sterują cą nadajnika).
Z tego wzglę du mogą port wejściowy pracują cy w trybie 0 jest stosowany do odczytu
aktualnego stanu jego koń cówek na żą danie odbiornika. Port może zatem jednorazowo
(np. na żą danie użytkownika) lub periodycznie (z w określonych chwilach czasu)
odczytywać stan swoich koń cówek.
•
tryb1 – kontrolowana transmisja jednokierunkowa
W trybie 1 transmisja danych pomię dzy nadajnikiem a odbiornikiem poprzedzona jest
wymianą sygnał
ów startują cych. W każdej z dwóch grup koń cówek układu 8255 trzy
linie odpowiedniego kę sa portu C przeznaczone są do wymiany sygnał
ów
startują cych. W Tabeli 21 opisano znaczenie poszczególnych sygnał
ów sterują cych
oraz wypisano przyporzą dkowane im koń cówki portu C.
Tabela 21. Przyporządkowanie poszczegó lnym koń có wkom portu C sygnałó w sterujących
wymienianych podczas transmisji ró wnoległej w trybie 1. i 2. . Oznaczenie we/wy wskazuje
koń có wki pracujące jako zwykłe wejścia lub wyście; (INTE) – określa bity zezwoleń na
przerwania.
tryb1 (simplex)
numer
bitu
grupa
koń cówek
odbiornik
nadajnik
tryb 2
pół
-duplex
7
we/wy
/OBF
/OBF
6
we/wy
/ACK(INTE) /ACK(INTE)
5
IBF
we/wy
INF
4
/STB(INTE)
we/wy
/STD(INTE)
3
g
r
u
p
a
1
.
INTR
INTR
INTR
2
/STB(INTE) /ACK(INTE)
-
1
IBF
/OBF
-
0
g
r
u
p
a
2
.
INTR
INTR
-
Proces nawią zywania poł
ą czenia polega na kontrolowanej sprzę towo wymianie
sygnał
ów sterują cych. Przebiega on w nastę pują cych etapach. (1) Po wysłaniu danych
do odbiornika zostają one zatrzaśnię te w buforze nadawczym. Nadajnik sygnalizuje
wówczas odbiornikowi niskim stanem sygnał
u /OBF zapeł
nienie bufora. (2) Sygnał
/OBF jest po stronie odbiornika interpretowany jako wygnał
wyzwalają cy /STB.
Pojawienie się w odbiorniku sygnał
u /STB powoduje zatrzaśniecie danych w buforze
odbiorczym i ustawienie sygnał
u IBF. Wysoki stan IBF informuje o tym, że dane
dodarł
y do odbiornika lecz nie został
y jeszcze odczytane z bufora odbiorczego (4)
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
77
Zanegowany sygnał
IBF (negacja sygnał
u obywa się na linii ł
ą czą cej odbiornik z
nadajnikiem) odbierany jest w ukł
adzie nadajnika jako sygnał
potwierdzenia odbioru
/ACK. (5) Wyzerowanie sygnał
u /ACK wywoł
uje ustawienie sygnał
u /OBF. Wysoki
stan tego sygnał
u sygnalizuje gotowość bufora nadawczego do zapisania go nowymi
danymi. (6) Niski stan sygnał
u /OBF odczytywany jest w odbiorniku jako
wyzerowanie linii /STB. Sygnalizuje to zakoń czenie procesu nadawania. Wysoki stan
linii /STB i IBF (zakoń czono nadawanie, a dane znajdują się w buforze odbiornika)
generuje w nadajniku sygnał
przerwania. W procedurze jego obsł
ugi należy odczytać
dane z (bufora nadawczego) portu. Wystawienie przez mikrokontroler sygnał
u
odczytu podanego na wejście /RD ukł
adu spowoduje skasowanie sygnał
u przerwania.
(7) Po zakoń czeniu odczytu odbiornik zatruje sygnał
IBF i jest gotowy do pobrania
kolejnych danych. Niski stan sygnał
u IBF widziany jest przez nadajnik jako
ustawienie linii /ACK. Wysoki stan linii /ACK i /OBF (zakoń czono odbiór, a bufor
nadajnika jest gotowy do zapisania kolejnych danych) wywoł
uje sygnał
przerwania.
Zapis kolejnych danych do(bufora nadawczego) portu przeprowadza się w procedurze
obsł
ugi przerwania. Sygnał
zapisu pojawiają cy się na wejściu /WR ukł
adu zeruje
sygnał
przerwania.
Istnieje możliwość programowego zamaskowania sygnał
ów przerwań
zgł
aszanych przez ukł
ad nadajnika i odbiornika. Zerują c odpowiednie bity portu C
(por. Tabela 21 – bity oznaczone INTE) można programowo wyzerować sygnał
przerwania dla odbiornika bą dź nadajnika. Skasowanie sygnał
u przerwania odbiornika
na drodze programowej jest konieczne w przypadku zakoń czenia nadawania serii
danych.
•
tryb 2 – kontrolowana transmisja dwukierunkowa
Tryb 2 stosowany jest w przypadku dwukierunkowej równoległ
ej transmisji danych.
Tryb ten zarezerwowany jest dla pierwszej grupy koń cówek ukł
adu (grupa
zawierają ca port A). Transmisja odbywa się w trybie pół
dupleksowym z
wykorzystaniem linii portu A do przesył
ania danych. W tryb ten wykorzystuje pię ć
linii portu C do wymiany sygnał
ów sterują cych: /OBF, /ACK, /STB, IBF, INTR.
Sygnał
przerwania generowany po zakoń czeniu nadawania lub odbioru jest
wystawiany na tą samą koń cówkę portu C. W Tabeli 21 przedstawiono w jaki sposób
poszczególne sygnał
y sterują ce przypisane są do wł
aściwych koń cówek portu C. Duża
liczba linii sterują cych jest powodem tego, iż w ukł
adzie 8255 nie można uruchomić
dwóch równolegle pracują cych ukł
adów nadawczo-obiorczych. W trybie 2 ukł
ad
może w kolejnych cyklach transmisji albo nadawać albo podbierać dane. Protokół
transmisji stosowany w trybie 2 jest identyczny jak opisany wyżej, używany w trybie
1.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
78
W trybach 1 i 2 ukł
ad 8255 generuje dwa przerwania. Każde z nich zwią zane jest z inną grupą
koń cówek portów. Oba sygnał
y przerwań trafiają do ukł
adu sterownika przerwań . Sterownik
koncentruje sygnał
y przerwań na zewnę trznej linii przerwań mikrokontrolera INT1 (3.
koń cówka portu P3). Dział
anie i obsł
uga sterownika przerwań systemu DSM-51 zostanie
omówiona w dalszej czę ści tego rozdział
u.
A 0-7
dane
OBF
A 0-7
P 7
P 6
P 7
P 3
P 4
P 5
P 3
GND
GND
ACK
IBF
STB
INTRE
INTRE
INTR
INTR
nadajnik
odbiornik
OBF
WR
b)
STB
IBF
ACK
INTR
RD
INTR
a)
Rys.37. Transmisja ró wnoległa w trybie 1(spimplex) układu 8255. (a) Połączenie nadajnika z
odbiornikiem; (b) przebiegi czadowe sygnałó w sterujących (oznaczenia po lewej stronie
odnoszą się do nadajnika, po stronie prawej – od odbiornika).
•
obsł
ugiwany programowo port szeregowy
W systemie DSM-51 zorganizowano dodatkowy port szeregowy. Do nadawania
wykorzystano koń cówkę 0. portu P1. Odbiór danych obywa się poprzez ukł
ad sterownika
przerwań na linii zewnę trznej linii przerwań INT0.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
79
Ukł
ad portu szeregowego nie zawiera w tym przypadku sprzę towego sterownika.
Nadawanie danych polega wię c na bezpośrednim sterowaniu linią nadawczą . Programista
musi zadbać by w odpowiednich chwilach czasu pojawiał
się na linii nadawczej wł
aściwy
poziom sygnał
u. W przypadku transmisji asynchronicznej oprócz wysył
anych kolejno
poszczególnych bitów danych należy programowo nadać odpowiednie poziomy
(rozpoczynają cych i koń czą cych ramkę ) bitów startu i stopu. Nadanie jednego bajta wymaga
zatem wykonania kilku synchronizowanych ukł
adami czasowymi mikrokontrolera rozkazów
przesł
ań bitów. Nadanie bajta danych w przypadku portu szeregowego wyposażonego w
zintegrowany sterownik polega wył
ą cznie na zapisie bajta danych do bufora nadawczego.
Linia odbiorcza portu podł
ą czona jest do jednego z wejść sterownika przerwań . Jeśli
sterownik pracuje w odpowiednim trybie pracy to sygnał
z linii odbiorczej przesył
any jest na
linię (INT0) przerwań zewnę trznych mikrokontrolera (koń cówka 2. portu P3). Obiór odbywa
się zwykle w procedurze obsł
ugi przerwania zewnę trznego. Jeśli transmisja odbywa się
asynchronicznie to program nadajnika musi odebrać cał
ą nadaną ramkę bit po bicie i
„złożyć” wysłane bity w bajt danych.
Jak ł
atwo zauważyć w przypadku omawianego powyżej portu szeregowego tylko
odbiór danych może być obsł
ugiwany z wykorzystaniem przerwań .
Aby dostosować poziomy napię ć na liniach nadawczych i odbiorczych obu portów
szeregowych (obsł
ugiwanego programowo i wykorzystują cego integrowany sterownik) do
standardów zł
ą cza RS-232 komputera PC zastosowano układ dopasowują cy Max232. Linie
nadawcze i odbiorcze obu portów wyprowadzone są na dwa zł
ą cza typy COM (por. Rys.38).
TxD 1
RxD 1
TxD 2
RxD 2
P3.1
port
obs
ługiwany
sprz
ę towo
P3.0
P1.0
INTER
M
A
X
2
3
2
port
obs
ługiwany
programowo
Rys.38. Linie nadawcze i odbiorcze obu portó w szeregowych: obsługiwanego sprzę towo i
programowo.
•
ukł
ad wejść-wyjść izolowanych optycznie
Cztery koń cówki portów mikrokontrolera wyprowadzone są na zewną trz sytemu DSM-51
poprzez ukł
ad transoptorów. Linie 2. i 3. portu P1 sł
użą jako tzw. wyjścia izolowane
optyczne. Dwa pozostał
e transoptory został
y wykorzystane do budowy optycznie
izolowanych wejść. Jedna linia wejściowa jest podł
ą czona do 4. koń cówki portu P3, druga –
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
80
za pośrednictwem sterownika przerwań ł
ą czy się z linią INT1 przerwań zewnę trznych
mikrokontrolera (koń cówka 3. portu P3). Schemat ukł
adu wejść-wyjść izolowanych optycznie
przedstawia Rys.39 Odczyt stanu linii wejściowej z wykorzystaniem procedury obsł
ugi
przerwania INT1 musi być poprzedzony odpowiednim ustawieniem ukł
adu sterownika
przerwań .
Rolą transoptorów jest optyczne odizolowanie sygnał
ów na liniach zewnę trznych do
sygnał
ów przetwarzanych wewną trz układu. Odbywa się to poprzez zamianę sygnału
eklektycznego na sygnał
świetlny, a nastę pnie przetworzenie światł
a w wyjściowy sygnał
elektryczny. Wejście transoptora zasila fotoemiter (zwykle diodę LED). Światł
o wysył
ane
przez fotoemiter dobierane jest przez integrowany w tej samej obudowie fotodetektor
(najczę ściej jest nim fototranzystor). Napię cie (lub prą d) fotodetektora stanowi sygnał
wyjściowy transoptora.
V
cc
V
cc
P1.2
wy 1
P1.3
P3.4
INTER
wy 2
we 1
we 2
Rys.39. Uproszczony schemat układy wejść i wyjść izolowanych optycznie w systemie 8051.
Sygnał z drugiego wejścia podłączony jest (za pośrednictwem sterownika przerwań ) do linii
przerwań INT.
Izolacja optyczna koń cówek portów umożliwia ich ochronę przez pojawiają cymi się w
liniach zewnę trznych sygnał
ami zakł
óceń . Rozpatrzmy nastę pują cy przykład. Do jednego z
wejść podł
ą czono czujnik. Układ czujnika zasilany jest z tego samego ź ródła co port
wejściowy. Jeśli linia masy jest wspólna dla zasilania i sygnał
u czujnika to spadek napię cia na
linii masy wywoł
any dużym prą dem zasilania czujnika bę dzie wpł
ywał
na odbierany w porcie
sygnał
z czujnika. Problem zakł
óceń na liniach zewnę trznych pojawia się również w
przypadku bezpośredniego poł
ą czenia dwóch układów. Masy obu układów mogą mieć różne
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
81
potencjał
y, a bezpośrednie ich poł
ą czenie może skutkować przepływem prą du o zaczym
natę żeniu. Zastosowanie izolacji optycznej przerywa galwaniczne poł
ą czenie mię dzy
ukł
adami i uwalnia transmisję do zakł
óceń .
•
przetwornik analogowo-cyfrowy
Na pł
ycie systemu DSM-51 znajduje się ośmiobitowy przetwornik analogowo-cyfrowy
ADC0804. Przetwornik posiada różnicowe wejście. Oznacza to, iż przetwarzane jest napię cie
bę dą ce różnicą napię ć podanych na dwie koń cówki ukł
adu oznaczone V
I+
i V
I-
. W systemie
DSM-51 uziemiono wejście V
I-
. Dzię ki temu na wejście V
I+
podaje się napię cie w peł
nym
zakresie przetwarzania ukł
adu: 0-5V. Wejście V
I+
podł
ą czone jest do wyjścia
ośmiokanał
owego multipleksera analogowego 4051. Osiem wejść analogowych multipleksera
został
o wyprowadzonych na zewną trz sytemu DSM-51 poprzez odpowiednie zł
ą czę . O tym,
które z wejść multipleksera zostanie podł
ą czone do wejścia przetwornika decyduje stan trzech
wejść cyfrowych multipleksera. Zapis danych pod adres przetwornika analogowo-cyfrowego
powoduje wygenerowanie przez dekoder adresów sygnał
u, który zapisuje stan trzech
najmł
odszych linii magistrali danych w rejestrze zatrzaskowym. Wyjścia rejestru podł
ą czone
są do wejść cyfrowych multipleksera. Taka konstrukcja umożliwia wybór jednego z ośmiu
wejść analogowych poprzez zapis bajta danych pod adres przetwornika. Aby tego dokonać
należy na trzech mł
odszych bitach zapisywanego bajta danych zakodować numer wybranego
wejścia.
W momencie zapisu danych dekoder adresów aktywuje przetwornik analogowo-
cyfrowy i poprzez wysterowanie sygnał
u /WR na wejściu przetwornika uruchamia proces
konwersji. Czas przetwarzania analogowo-cyfrowego w ukł
adzie ADC0804 jest stosunkowo
dł
ugi i wynosi okoł
o 100μ s. Zakoń czenie przetwarzania zostaje zasygnalizowane
wystawieniem sygnał
u żą dania przerwania na wyjściu /INT przetwornika. Koń cówka /INT
przetwornika analogowo-cyfrowego jest podł
ą czona do układu sterownika przerwań . Po
odpowiednim skonfigurowaniu ukł
adu sterownika sygnał
przerwania pochodzą cy od
przetwornika analogowo-cyfrowego może wysterować zewnę trza linię przerwań INT1
mikrokontrolera. Dzię ki temu możliwy jest odczyt danych z przetwornika w procedurze
obsł
ugi przerwań .
Osiem wyjść danych przetwornika zaopatrzonych jest w przerzutniki zatrzaskowe i
bufory trójstanowe. Dzię ki temu można je bezpośrednio podł
ą czyć do magistrali danych.
Stan niskiej impedancji pojawia się na wyjściach tylko w trakcie odczytu przetwornika
Odczyt wyzwalany jest sygnał
em /RD na wejściu przetwornika. Sygnał
ten jest wysterowany
przez dekoder adresów gdy mikrokontroler wyśle na magistralę : adres odpowiadają cy
przetwornikowi cyfrowo-analogowemu i sygnał
y odczytu danych. Odczyt danych z powoduje
skasowanie sygnał
u przerwania wystawionego na koń cówkę /INT przetwornika.
Przetwornik ADC0804 jest liniowy. Cał
y zakres przetwarzania (0-5V) podzielony jest na
256 równych przedział
ów. Nastę pują cym po sobie przedziałom odpowiadają kolejne liczny
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
82
naturalne. Na osiem wyjść przetwornika wysył
ane są odpowiednie stany logiczne
reprezentują ce poszczególne bity numeru przedział
u (przedstawionego kodzie naturalnym
binarnym).
C
S
D
A
re
je
s
tr
z
a
tr
z
a
s
k
o
w
y
wej
ś cia
analogowe
wyj
ś cie
cyfrowe
C
S
M
X
re
je
s
tr
z
a
tr
z
a
s
k
o
w
y
CS
CS
C
S
A
D
p
rz
e
tw
o
rn
ik
A
/C
CS
I+
p
rz
e
tw
o
rn
ik
C
/A
I-
+
-
D0
D7 ...
Rys.40. Uproszczony schemat układu przetwornika A/C i przetwornika C/A w systemie
DSM-51.
•
przetwornik cyfrowo-analogowy
System DSM-51 wyposażono w ośmiobitowy przetwornik cyfrowo-analogowy DAC08.
Przetwornik posiada symetryczne, analogowe wyjście prą dowe. Na ośmiu wejściach
cyfrowych koduje się ośmiobitową naturalną liczbę binarną . Jeśli wszystkie wejścia są w
stanie wysokim to z koń cówki oznaczonej OUT wypł
ywa prą d o maksymalnym natę żeniu.
Prą d nie przepł
ywa wówczas przez koń cówkę /OUT. Ustawienie wszystkich wejść w stan
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
83
niski blokuje przepł
yw prą du przez wyprowadzenie OUT i powoduje wpł
ywanie prą du o
maksymalnym natę żeniu do koń cówki OUT. Podanie na wejścia cyfrowe sekwencji
poziomów kodują cych dowolną liczbę z wnę trza przedział
u 0-255 powoduje przepł
yw
prą dów o natę żeniach określonych wzorami:
I
OUT
=I
REF
*kod_wejściowy/255
I/
OUT
=I
REF
*(1-kod_wejściowy/255)
Ukł
ad DAC08 wymaga symetrycznego napię cia zasilają cego (V+ i V- ze wspólną masą ). Aby
ukł
ad dział
ał
w opisany powyżej sposób należy, zgodnie z ze schematem aplikacyjnym
producenta, odpowiednio podł
ą czyć wyjście (OUT - /OUT) oraz zasilić jedno z wejść
oznaczone V
R
prą dem odniesienia.
W systemie DSM-51 koń cówka /OUT przetwornika został
a podł
ą czona do masy,
natomiast wyprowadzenie /OUT steruje wzmacniaczem operacyjnym. Na wyjściu
wzmacniacza pojawia się napię cie z przedział
u 0-5V w zależności od wpisanych na wejście
przetwornika danych.
Wejścia
cyfrowe
przetwornika
podł
ą czone są do układu przerzutników
zatrzaskują cych, które zapisują wystawione na magistralę , przeznaczone dla przetwornika
dane. Zapis zatrzasków nastę puje po wysterowaniu sygnał
u wybory przetwornika cyfrowo-
analogowego przez dekoder adresów. Dekoder wystawia sygnał
zapisu przerzutników gdy
zidentyfikuje adres przetwornika wystawiony na magistrale adresową i odbierze odpowiednie
sygnał
y wskazują ce na zapis danych.
Czas konwersji cyfrowo-analogowej jest znacznie krótszy niż analogowo-cyfrowej. W
przypadku ukł
adu DAC08 wnosi on okoł
o 85ns. Jest wię c znacznie krótszy niż okres jednego
cyklu zegarowego. Z punktu widzenia mikrokontrolera przetwarzanie cyfrowo-analogowe
zachodzi prawie natychmiastowo (sygnał
wyjściowy pojawia się w tym samym cyklu
maszynowym co zapis danych do przetwornika).
•
sterownik przerwań
Sterownik przerwań jest ukł
adem dedykowanym dla systemu DSM-51. Został
on wykonany
w oparciu o ukł
ad typu GAL tj. ukł
ad programowalnej matrycy bramek i przerzutników. Rolą
sterownika przerwań w systemie DSM-51 jest koncentrowanie sygnał
ów przerwań
pochodzą cych do ukł
adów peryferyjnych systemu na jednej z dwóch linii przerwań
mikrokontrolera.
Sygnał
z linii odbiorczej (obsł
ugiwanego programowalnego) portu szeregowego
przekazywany jest, po zanegowaniu przez ukł
ad sterownika, na zewnę trzną linię przerwań
mikrokontrolera INT0. Na linię INT1 mogą być przesł
ane sygnał
y przerwania generowane
przez pozostał
e ukł
ady peryferyjne systemu DSM-51. Ukł
ad sterownika przerwań
zapamię tuje do czterech sygnał
ów przerwań . W zależności od stanu 1. koń cówki portu P1
sterownik zatrzaskuje sygnał
y przerwań pochodzą ce do innego zespoł
u urzą dzeń wejścia
wyjścia (przedstawia to Tabela 22). Zgł
oszenie sygnał
u przerwania przez którekolwiek z
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
84
urzą dzeń z wybranej grupy (określonej stanem koń cówki 1. portu P1) powoduje wystawienie
sygnał
u przerwania na linię INT1. Sygnał
y przerwań generowane przez ukł
ady należą ce do
drugiej grupy są ignorowane.
Tabela 22. Numery przerwań przyporządkowane poszczegó lnym układom w zależności od
stanu liii P1.1 .
stan 1. linii portu P1
1
0
nr.
przerwania
źródło przerwania
źródło przerwania
0
przetwornik A/C
przetwornik A/C
1
we. izolowane optycz. we. izolowane optycz.
2
-
grupa 1. portu r
ównol.
3
szyna systemu DSM-51 grupa 2. portu r
ównol.
Każdemu z urzą dzeń należą cym go jednej z dwóch grup przypisany jest inny numer
przerwania. W procedurze obsł
ugi przerwania zewnę trznego INT1 należy określić który z
ukł
adów (wybranej grupy) wygenerował
przetrwanie. Odczyt danych z sterownika przerwań
umożliwia ustalenie numeru przerwania. Po wystawieniu na magistralę adresu sterownika
przerwań dekoder adresów uaktywnia sterownik. Gdy mikrokontroler wysteruje sygnał
odczytu /RD, sterownik wystawa numer zatrzaśnię tego przerwania na dwie najmł
odsze linie
danych. Znają c stan 1. koń cówki portu P1 można, na podstawie stanu dwóch najmł
odszych
bitów bajta danych odczytanych ze sterownika przerwań , ustalić urzą dzenie zgł
aszają ce
przerwanie.
Odczyt sterownika przerwań nie kasuje zatrzaśnię tego w nim numeru przerwania.
Skasowanie przerwania nastę puje dopiero po zapisaniu do sterownika dopowiadają cego mu
numeru. Po uaktywnieniu sterownika przerwań przez dekoder adresów i wysł
aniu przez
mikrokontroler sygnał
u /WR sterownik pobiera z dwóch najmł
odszych linii danych numer
przerwania a nastę pnie kasuje odpowiedni przerzutnik.
Prawidł
owa obsł
uga przerwania urzą dzenia peryferyjnego systemu DSM-51 powinna
przebiegać w nastę pują cych etapach. (1) Na począ tku kodu procedury obsł
ugi przerwania
INT1 należy odczytać ze sterownika przerwań numer przerwania. (2) Pozwoli to
zidentyfikować urzą dzenie zgł
aszają ce przerwanie i podją ć jego obsł
ugę . (3) Jeśli w toku
obsł
ugi ukł
adu wejścia-wyjścia sygnał
przerwania (generowany przez urzą dzenie) nie zostaje
wył
ą czony sprzę towo to należy go skasować na drodze programowej. (4) Procedurę obsługi
należy zakoń czyć skasowaniem numeru przerwania zatrzaśnię tego w sterowniku. Dopiero
skasowanie sygnał
u przerwania w urzą dzeniu i odpowiadają cego mu numeru w sterowniku
powoduje zniesienie sygnał
u żą dania przerwania na linii INT1 mikrokontrolera.
Architektura komputerów i programowanie niskopoziomowe– laboratorium.
85
Jeśli w sterowniku zatrzaśnię tych jest kilka przerwań to odczytane z niego dane
określają najniższy numer wychwyconego przerwania. Numer przerwania określa wię c
priorytet obsł
ugi przerwań zatrzaśnię tych w sterowniku (por. Tabela 22).
Ukł
ad sterownika przerwań nie posiada mechanizmu zerowania. Oznacza to, że po
(re)starcie systemu DSM-51 w przetworniku mogą być przypadkowo zatrzaśnię te przerwania.
Prawidł
owa obsł
uga przerwania powinna być zatem poprzedzona skasowaniem wszystkich
przerwań o wyższym priorytecie.
•
ukł
ad watchdog
Zadaniem ukł
adu watchdog jest generowanie sygnał
u reset w przypadku niekontrolowanej
pracy sytemu. Prawidł
owa obsł
uga ukł
adu watchdog polega na wpleceniu w treść programu
kodu okresowo „pobudzają cego” tenże ukł
ad. Jeśli w wyniku zakł
óceń mikroprocesor
przestanie wykonywać określony kod to niepobudzany ukł
ad watchdog wyśle sygnał
reset Po
zakoń czeniu zerowania mikroprocesor rozpocznie wykonywanie kodu począ wszy od adresu 0
pamię ci programu.
W systemie DSM-51 watchdog sterowany jest 4. koń cówką portu P1. Pojawienie się
ujemnego zbocza na tej linii uaktywnia ukł
ad. Jeśli w przecią gu 250ms nie pojawi się kolejne
opadają ce zbocze to ukł
ad wachdog wygeneruje sygnał
RESET-RAM. Sygnał
ten zeruje
mikrokontroler nie zmieniają c stanu dekodera adresów i pamię ci zewnę trznej.
Obsł
uga ukł
adu watchdog polega zatem na umieszeniu w kodzie programu instrukcji
które okresowo zmieniają stan 4. koń cówki portu P1. Jeśli program gł
ówny wykonywany jest
w pę tli a wykonywanie każdego z podprogramów trwa dostatecznie szybko wystarczy w
kilku wybranych miejscach kodu generować ujemne zbocza na wejściu ukł
adu. Wysł
anie
ujemnego zbocza polega na ustawieniu, a nastę pnie wyzerowaniu 4. koń cówki portu P1.
Nie ma sensu obsł
ugiwać ukł
adu watchdog z wykorzystaniem przerwań ukł
adów
licznikowych, gdyż praca liczników i generowanie przerwań są kontrolowane na poziomie
sprzę towym. Oznacza to, że pomimo zwieszenia się programu bę dą one generował
y
przerwania i regenerował
y ukł
ad watchdog prawidł
owo.