8051 id 47295 Nieznany

background image

Jaros

ław W. Kłos

Architektura komputer

ó w i programowanie niskopoziomowe

Laboratorium

Pozna

ń 2005

background image

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

background image

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

background image

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

background image

background image

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

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.

background image

Architektura komputerów i programowanie niskopoziomowe– laboratorium.

2

background image

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

background image

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ł

efektywniej)

istotna jest ł

atwość wprowadzania zmian i ulepszeń

background image

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.

background image

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

background image

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

background image

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ł

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

background image

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

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

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

background image

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

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

background image

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

background image

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

background image

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ć

background image

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.

background image

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.

background image

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

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.

background image

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

background image

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.

background image

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ń

background image

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.

background image

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

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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

background image

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)

background image

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

background image

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

background image

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.

background image

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

ą 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

background image

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)

background image

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

background image

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.

background image

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

background image

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.

background image

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

background image

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)

background image

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ą

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ł

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ł

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

background image

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

background image

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

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.

background image

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

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

background image

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ę ć .

background image

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.

background image

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.

background image

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.

background image

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.

background image

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

background image

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ł

background image

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.

background image

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

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

background image

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

background image

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.

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

ą cze zewnę trznej magistrali systemowej

background image

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.

background image

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

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

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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,

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

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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.

background image

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.

background image

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

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,

background image

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

background image

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

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

background image

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ż

background image

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)

background image

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.

background image

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.

background image

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 –

background image

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

background image

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

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

background image

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

background image

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ł

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

background image

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.

background image

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.


Wyszukiwarka

Podobne podstrony:
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany
pedagogika ogolna id 353595 Nieznany
Misc3 id 302777 Nieznany
cw med 5 id 122239 Nieznany
D20031152Lj id 130579 Nieznany

więcej podobnych podstron