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ł

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ł

 

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. 

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.

 

background image

Architektura komputerów i programowanie niskopoziomowe– laboratorium.

 

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.

 

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.

 

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

 

 

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ł

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.

 

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ł

• 

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.

 

koń cówek można w jednej chwili czasu nadać lub odebrać cał

y bajt. W odróżnieniu od portu 

równoległ

ego,  port  szeregowy  wymienia  dane  za  pośrednictwem  jednej  linii,  na  której  w 

kolejnych  odstę pach  czasu  pojawiają   się   poszczególne  bity  nadawanego  (lub  odbieranego) 

bajta. Aby nadać (lub odebrać) cał

y bajt należy nadać (lub odebrać) kolejne jego bity.  

Rola przetwornika analogowo – cyfrowego polega na zamianie sygnał

u analogowego 

podanego na wejście przetwornika na jego reprezantację  cyfrową . Sygnał

em analogowym jest 

zwykle  napię cie  elektryczne,  które  może  przybierać  dowolne  wartości  w  zadanym  zakresie. 

Zakres ten podzielony jest na szereg przedział

ów. Każdemu z przedziałów przyporzą dkowany 

jest inny kod binarny. Przetwornik pobiera próbkę  sygnał

u wejściowego i sprawdza w którym 

przedziale  zakresu    się   ona  mieści.  Nastę pnie  przyporzą dkowuje  próbce  odpowiedni  kod 

binarny.  

Przetwornik  cyfrowo  –  analogowy  generuje  na  swoim  wyjściu  sygnał

  analogowy 

odpowiadają cy  cyfrowemu  kodowi  binarnemu  podmenu  na  jego  wejście.  Ze  wzglę du  na  to 
że, liczba kodów binarnych reprezentują cych wartości analogowe jest zawsze skoń czona, na 
wyjściu  przetwornika  cyfrowo-analogowy  pojawiają   się   sygnał

u  analogowe  o  ściśle 

określonych poziomach. 

Zadaniem  ukł

adów  licznikowo  –  zegarowych  jest  zliczanie  impulsów  sygnał

ów 

pochodzą cych ze ź ródeł

 zewnę trznych lub odmierzanie czasu. Sygnał

em zewnę trznym może 

np.  być  napię cie  na  styczniku  podł

ą czonym do odpowiedniego portu mikrokontrolera.  Ilość 

zliczonych  impulsów  daje  informację   o  liczbie  zał

ą czeń  stycznika. Pomiar  czasu obywa się  

poprzez zliczanie określonej ilości cykli zegara mikrokontrolera. Ukł

ad dział

a wówczas jako 

dzielnik  czę stotliwości,  a  przepeł

nienie  licznika  daje  informację   o  upł

ynię ciu  określonego 

interwał

u czasu. 

 

 

2.1.1. CPU –  podstawowe rejestry 

 

Rejestry  są   rodzajem  szybkiej  i  ł

atwo  dostę pnej  dla  mikroprocesora  pamię ci.  Zasadniczy 

proces  interpretacji  kodu  i  przetwarzania  danych  odbywa  się   za  pomocą   rejestrów.  Nie 

wszystkie  rejestry  mikroprocesora  są   bezpośrednio  dostę pne  dla  programisty.  Czę ść 

rejestrów,  bardzo  istotna  dla  procesów  zachodzą cych  wewną trz  mikroprocesora,    jest 

niedostę pna  programowo.  Wykonywany  program  nie  może  bezpośrednio  zmienić  ich 

wartości. Stan tych rejestrów nie może być też wykorzystany do pamię tania wyników dział

ań  

bą dź   sterowania  przebiegiem  programu.  Do  rejestrów  niedostę pnych  programowo  można 

zaliczyć wspomniane wcześniej: rejestr rozkazów (IR), bufor adresów (MAR) i bufor danych 

(MBR).  W  bieżą cym  rozdziale  zostaną   omówione  wył

ą cznie  dostę pne  programowo  rejestry 

mikroprocesora. 

Operacje  arytmetyczno  –  logiczne  wykonywane  są   najszybciej  gdy  ich    argumenty 

umieszczone  są   w  rejestrach.  Wyniki  operacji  wraz  z  informacją   o  możliwych  bł

ę dach 

zapisywane  są   w  specjalnie  przeznaczonych  do  tego  celu  rejestrach.  Rejestry  są   stosowane 

background image

Architektura komputerów i programowanie niskopoziomowe– laboratorium.

 

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 

CY 

flaga przeniesienia 

AC 

flaga przeniesienia pomocniczego 

F0 

bit ogólnego przeznaczenia 

RS1 

RS0 

bity wyboru banku rejestrów roboczych 

OV 

flaga przepeł

nienia 

F1 

bit ogólnego przeznaczenia 

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 

00-07(00-07)

08-15(08-0F)

H

 

16-23(10-17)

H

 

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ł

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 

EA 

wszystkie ź ródł

a przerwań  

 

 

ES 

port szeregowy 

ET1 

ukł

ad licznikowy T1 

EX1 

przerwanie zewnę trzne INT1 

ET0 

ukł

ad licznikowy T0 

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 

 

 

 

PS 

port szeregowy 

PT1 

ukł

ad licznikowy T1 

PX1 

przerwanie zewnę trzne INT1 

PT0 

ukł

ad licznikowy T0 

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. 

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 

akumulator pomocniczy 

240 (F0

H

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)

 

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 

 

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ł

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ł

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ł

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 

TF1 

flaga przepeł

nienia licznika T1 

TR1 

bit startu/stopu licznika T1 

TF0 

flaga przepeł

nienia licznika T0 

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 

GATE 

bramowanie wejścia  licznika sygnał

em 

przerwania INT1 

C/T 

zliczanie cykli maszynowych lub 
impulsów z wejścia zewnę trznego 

5,4 

M1, M0 

T1 

określenie trybu pracy 

GATE 

bramowanie wejścia  licznika sygnał

em 

przerwania INT0 

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ł

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ł

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 

SM2 

sterowanie pracą  w trybie 
wieloprocesorowym 

REN 

bit zezwolenia na odbiór (przy 
transmisji fullduplex) 

TB8 

ósmy bit danych (np. bit parzystości) 
nadajnika 

RB8 

ósmy bit danych (np. bit parzystości) 
odbiornika 

TI 

flaga zakoń czenia nadawania 

RI 

flaga zakoń czenia odbioru 

 

Tabela 9. Oznaczenia  kolejnych bitó w rejestru kontrolnego i sterującego portu szeregowego  

(PCON). 

numer 

bitu 

oznaczenie 

opis 

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)

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 

IE1 

bit określają cy stan linii INT1 

IT1 

sposób wywoł

ania przerwania (stanem 

lub zboczem) 

IE0 

bit określają cy stan linii INT0 

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 

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 

 

jeśli przed dzieleniem B = 0 to OV 

 1 

MUL AB 

mnożenie 

 

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 and q 

p or q  p exor q 

not p 

 

 

Mikrokontroler  8051  umożliwia  wykonywanie  podstawowych  operacji  logicznych. 

Należą   do  nich  operacje  algebry  boolowskej:  negacja,  iloczyn  logiczny,  suma  logiczna  oraz 

suma  bitowa  modulo  dwa.  Tabela 13  przedstawia  tzw.  tabele  prawdy  dla  wymienionych 

powyżej  operacji  logicznych.  Tabela  prawdy  zawiera  wszystkie  możliwe  kombinacje 

argumentów operacji logicznej wraz z odpowiadają cymi im wynikami. 

 

• 

rozkazy przesł

ań  

Rozkaz  przesł

ania  jest  rozkazem  dwuargumentowym.  Wykonanie  operacji  przesł

ania 

powoduje skopiowanie  danych  wskazanych przez jeden z  jego  argumentów   pod  lokalizację  

określoną  poprzez drugi argument.  Pierwszy argument określa zawsze miejsce przeznaczenia 

danych,  drugi  –  wskazuje  ich  ź ródł

o.  Dane  ź ródł

owe  mogą   pochodzić  z  rejestru,  pamię ci 

danych,  lub  też  być  stał

ą   zawartą   w  pamię ci  programu  albo  w  kodzie  rozkazu.  Lokalizacja 

docelowa musi odnosić się  do obiektu, w którym dane mogą  być zapisywane. Z tego wzglę du 

nie  może  nim  być  np.  pamię ć  programu.  Najbardziej  efektywne  i  elastyczne  są   rozkazy 

przesł

ań   dotyczą ce  rejestrów  lub  wewnę trznej  pamię ci  programu.  Rozkazy  przesł

ań  

dowoł

ują ce się  do danych w zewnę trznej pamię ci danych lub pamię ci programu wykonywane 

są   wolniej  (zawsze  w  dwóch  cyklach  maszynowych)  i  wykorzystują   ubogą   ilość  trybów 

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ł

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ł

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

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 

Ent. 

Esc. 

 

 

 

 

 

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. 

 

 

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 

dp 

LED 

W6 

W5 

W4 

W3 

W2 

W1 

 

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 

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 

 

 

 

 

Esc. 

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 

10xxxx00 

LCDWC 

zapis 

rozkaz

ów 

10xxxx10 

LCDRC 

odczyt 

stanu 

10xxxx01 

LCDWD 

zapis 

danych 

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ł

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ł

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 

tryb grupy 1. 

(2,1,0) 

kierunek ko

ńcówek A 

 (0-wy, 1-we) 

kier. ko

ńcówek 4-7C 

 (0-wy, 1-we) 

tryb grupy 2.  

(1,0) 

kierunek ko

ńcówek B 

 (0-wy, 1-we) 

numer ko

ńcówki 

(0..7) 

 

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 

we/wy 

/OBF 

/OBF 

we/wy 

/ACK(INTE)  /ACK(INTE) 

IBF 

we/wy 

INF 

/STB(INTE) 

we/wy 

/STD(INTE) 

g

r

u

p

a

 

1

.

 

INTR 

INTR 

INTR 

/STB(INTE)  /ACK(INTE) 

IBF 

/OBF 

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ł

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 

nr. 

przerwania 

źródło przerwania 

źródło przerwania 

przetwornik A/C 

przetwornik A/C 

we. izolowane optycz.  we. izolowane optycz. 

grupa 1. portu r

ównol. 

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ł

przerwania i regenerował

y ukł

ad watchdog prawidł

owo.