background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

 

 

 

 
 

 

MINISTERSTWO EDUKACJI 

            NARODOWEJ 

 

 

 

 

Danuta Pawełczyk 

 

 

 

 

 

Badanie modułów wewnętrznych mikrokontrolera

 

 

311[07].Z4.02 

 
 
 
 
 

Poradnik dla ucznia 

 

 

 

 

 

 

 

 

Wydawca 

Instytut Technologii Eksploatacji – Państwowy Instytut Badawczy 
Radom  2006 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

Recenzenci: 

mgr inż. Elżbieta Małgorzata Majka 

mgr inż. Anna Kembłowska 

 

 

 

Opracowanie redakcyjne: 

mgr inż.Danuta Pawełczyk 

 

 

 

Konsultacja: 

mgr inż. Gabriela Poloczek 

 

 

 

Korekta: 

 

 

 

Poradnik stanowi obudowę dydaktyczną programu jednostki modułowej 311[07].Z4.02 
„Badanie  modułów  wewnętrznych  mikrokontrolera”  zawartego  w  modułowym  programie 
nauczania dla zawodu technik elektronik. 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

Wydawca 

Instytut Technologii Eksploatacji – Państwowy Instytut Badawczy, Radom  2006 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

SPIS TREŚCI

 

 
 

1.  Wprowadzenie 

2.  Wymagania wstępne 

3.  Cele kształcenia 

4.  Materiał nauczania 

4.1. Układy czasowe T0, T1 i T2 

   4.1.1. Materiał nauczania 

   4.1.2. Pytania sprawdzające 

15 

   4.1.3. Ćwiczenia 

15 

   4.1.4. Sprawdzian postępów 

18 

4.2. Port szeregowy 

19 

   4.2.1. Materiał nauczania 

19 

   4.2.2. Pytania sprawdzające 

22 

   4.2.3. Ćwiczenia 

22 

   4.2.4. Sprawdzian postępów 

24 

4.3. Przetwornik analogowo–cyfrowy  

25 

   4.3.1. Materiał nauczania 

25 

   4.3.2. Pytania sprawdzające 

28 

   4.3.3. Ćwiczenia 

28 

   4.3.4. Sprawdzian postępów 

30 

4.4. Układ przerwań 

31 

   4.4.1. Materiał nauczania 

31 

   4.4.2. Pytania sprawdzające 

35 

   4.4.3. Ćwiczenia 

36 

   4.4.4. Sprawdzian postępów 

37 

5. Sprawdzian osiągnięć 

38 

6. Literatura 

44 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

1. WPROWADZENIE 

 

Poradnik  będzie  Ci  pomocny  w  przyswajaniu  wiedzy  z  zakresu  badania  modułów 

wewnętrznych mikrokontrolera. 

W poradniku zamieszczono: 

− 

wymagania wstępne – wykaz umiejętności, jakie powinieneś mieć już ukształtowane,  
abyś bez problemów mógł korzystać z poradnika,  

− 

cele kształcenia – wykaz umiejętności, jakie opanujesz podczas pracy z poradnikiem, 

− 

materiał  nauczania  –  podstawowe  wiadomości  teoretyczne  niezbędne  do  opanowania 
treści jednostki modułowej, 

− 

zestaw pytań przydatny do sprawdzenia, czy już opanowałeś podane treści, 

− 

ćwiczenia,  które  pomogą  Ci  zweryfikować  wiadomości  teoretyczne  oraz  ukształtować 
umiejętności praktyczne, 

− 

sprawdzian postępów, 

− 

literaturę uzupełniającą, 

− 

sprawdzian  osiągnięć  –  przykładowy  zestaw  zadań  i  pytań.  Pozytywny  wynik 
sprawdzianu  potwierdzi,  że  dobrze  pracowałeś  podczas  zajęć  i  że  nabyłeś  wiedzę  
i umiejętności z zakresu tej jednostki modułowej, 

W  materiale  nauczania  zostały  omówione  zagadnienia  zakresu  badania  modułów 
wewnętrznych  mikrokontrolera,  ich  budowy  oraz  sposobu  programowania.  Podczas 
poznawania  modułów  mikrokontrolera  niewątpliwie  pomocny  będzie  nauczyciel,  który 
pomoże Ci w przypadku pojawienia się problemów. 
Z rozdziałem Pytania sprawdzające możesz zapoznać się: 

− 

przed przystąpieniem do rozdziału Materiał nauczania – poznając wymagania wynikające 
z zawodu, a po przyswojeniu  wskazanych treści,  odpowiadając  na te pytania sprawdzisz 
stan swojej gotowości do wykonywania ćwiczeń, 

− 

po  opanowaniu    rozdziału  Materiał  nauczania,  by  sprawdzić  stan  swojej  wiedzy,  która 
będzie Ci potrzebna do wykonywania ćwiczeń. 
Kolejny  etap  to  wykonywanie  ćwiczeń,  których  celem  jest  uzupełnienie  i  utrwalenie 

wiadomości z zakresu badania modułów mikrokontrolera. 

Wykonując ćwiczenia przedstawione w poradniku lub zaproponowane przez nauczyciela, 

będziesz poznawał budowę, sposób programowania i użytkowania modułów mikrokontrolera, 
takich jak układy czasowe, port szeregowy, przetwornik A/C i układ przerwań. 

Po  wykonaniu  zaplanowanych  ćwiczeń,  sprawdź  poziom  swoich  postępów  wykonując 

„Sprawdzian postępów”.  
W tym celu: 

− 

przeczytaj pytania i odpowiedz na nie, 

− 

podaj odpowiedź wstawiając X w podane miejsce, 

  wpisz Tak, jeśli Twoja odpowiedź na pytanie jest prawidłowa,  

  wpisz Nie, jeśli Twoja odpowiedź na pytanie jest niepoprawna. 

Odpowiedzi  Nie  wskazują  luki  w  Twojej  wiedzy,  informują  Cię  również,  jakich 

zagadnień  jeszcze  dobrze  nie  poznałeś.  Oznacza  to  także  powrót  do  treści,  które  nie  są 
dostatecznie opanowane. 

Poznanie  przez  Ciebie  wszystkich  lub  określonej  części  wiadomości  będzie  stanowiło  

dla nauczyciela podstawę przeprowadzenia sprawdzianu poziomu przyswojonych wiadomości  
i  ukształtowanych  umiejętności.  W  tym  celu  nauczyciel  może  posłużyć  się  zadaniami 
testowych.  

W  poradniku  jest  zamieszczony  sprawdzian  osiągnięć,  który  zawiera  przykład  takiego 

testu  oraz  instrukcję,  w  której  omówiono  tok  postępowania  podczas  przeprowadzania 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

sprawdzianu  i  przykładową  kartę  odpowiedzi,  w  której,  w  przeznaczonych  miejscach  wpisz 
odpowiedzi na zadania lub zakreśl właściwe odpowiedzi spośród zaproponowanych. 

 

Bezpieczeństwo i higiena pracy 
 

W  czasie  pobytu  w  pracowni  musisz  przestrzegać  regulaminów,  przepisów 

bezpieczeństwa  i  higieny  pracy  oraz  instrukcji  przeciwpożarowych,  wynikających  z  rodzaju 
wykonywanych prac. Przepisy te poznasz podczas trwania nauki. 

 

 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

 

Schemat układu jednostek modułowych 

 

311[07].Z4 

Badanie układów 

mikroprocesorowych 

311[07].Z4.01 

Pisanie i uruchamianie programów 

w asemblerze 

311[07].Z4.02 

Badanie modułów wewnętrznych 

mikrokontrolera 

311[07].Z4.03 

Badanie układów zewnętrznych 

mikrokontrolera 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

2. WYMAGANIA WSTĘPNE 

 

Przystępując do realizacji programu jednostki modułowej, powinieneś umieć: 

  omawiać architekturę systemu mikroprocesorowego, 

  stosować rozkazy mikrokontrolera, 

  pisać, kompilować i poprawiać programy w języku asemblera, 

  używać zestawu uruchomieniowego do uruchamiania programu, 

  korzystać z różnych źródeł informacji. 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

3. CELE KSZTAŁCENIA 

 

Po zrealizowaniu programu jednostki modułowej powinieneś umieć: 

 

scharakteryzować 

wewnętrzne 

układy 

funkcjonalne 

mikrokontrolera,  

takie jak: liczniki, UART, system przerwań, przetwornik analogowo– cyfrowy, 

 

zaprogramować licznik w poszczególnych trybach pracy, 

 

zmierzyć czas i częstotliwość z wykorzystaniem liczników, 

 

wykorzystać  licznik  do  generowania  wielofazowych  periodycznych  sygnałów 
prostokątnych o zadanych współczynnikach wypełnienia, 

 

napisać  program  z  wykorzystaniem  przerwań  od  wybranych  źródeł  z  wykorzystaniem 
poziomów, priorytetów, możliwości blokowania, 

 

napisać  program  pozwalający  na  pracę  portu  szeregowego  w  określonym  trybie  
z określoną szybkością, 

 

zaprogramować przetworniki A/C, 

 

zaprogramować inne elementy wewnętrzne wybranego mikrokontrolera. 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

4. MATERIAŁ NAUCZANIA 

 

4.1. Układy czasowe T0, T1 i T2 

 

4.1.1. Materiał nauczania 

Jednym  z  podstawowych  rodzajów  układów  peryferyjnych  umieszczanych  wewnątrz 

mikrokontrolera  są  układy  czasowo  licznikowe.  Układy  takie  zliczają  impulsy  zewnętrzne, 
spełniając  funkcję  licznika  (counter)  lub  impulsy  wewnętrzne  w  celu  odmierzania  opóźnień 
lub generowania przebiegów o zadanej częstotliwości i wypełnieniu, spełniają wówczas role 
czasomierza (timer). 

Mikrokontrolery  rodziny  ’51  są  wyposażone  w  dwa  16–  bitowe  układy  czasowe.  Mogą 

one  zliczać  impulsy  zegarowe      lub  zewnętrzne  doprowadzane  do  wejść  T0–P3.4  lub  T1–
P3.5. Liczniki mogą pracować w jednym z czterech trybów. 
W  celu  programowego  sterowania  układów  czasowych  stosowane  są  rejestry  TMOD  (adres 
89H) i TCON (adres 88H– dostępny bitowo). 
TMOD: 
 

GATE 

T

C/  

M1 

M0 

GATE 

T

C/  

M1 

M0 

T1 

T0 

 
znaczenie bitów: 
M1,M0– ustawienie trybu pracy: 

00- tryb 0, 
01- tryb 1, 
10– tryb 2, 
11– tryb 3. 

T

C/ – realizowana funkcja: 

T

C/ =1– funkcja licznika impulsów zewnętrznych, 

T

C/ =0– funkcja czasomierza. 

GATE– uaktywnienie bramkowania zliczania zewnętrznym sygnałem INT0 lub INT1 
 
np. zaprogramowanie T0 zliczającego impulsy wewnętrzne w trybie pracy 2, a licznika T1 
zliczającego impulsy zewnętrzne w trybie 1, wymaga wpisania do rejestru TMOD 
następującego słowa:  

 
TCON: 

TF1 

TR1 

TF0 

TR0 

 

 

 

 

 

 

 

 

 

 

 

 

 

bity związane z przerwaniami 

zewnętrznymi 

znaczenie bitów: 
TF1– bit przepełnienia od licznika T1, wywołuje przerwanie, 
TR1– bit włączający (1) lub wyłączający (0) licznik T1, 
TF0– bit przepełnienia od licznika T0, wywołuje przerwanie, 
TR0– bit włączający (1) lub wyłączający (0) licznik T0. 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

Tryby pracy układów czasowo– licznikowych: 
Tryb  0–  układ  czasowy  pracuje  jako  13–bitowy  licznik/  czasomierz  liczący  w  przód,  
po przepełnieniu (same jedynki) ustawia znacznik TFi  i liczy dalej od 0, pojemność licznika 
2

13

=8192. 

 

 

 

Rys. 1 Układ czasowy T0 w trybie 0: [5,s.37] 

Tryb 1– układ czasowy pracuje tak jak w trybie 0, ale jako licznik/ czasomierz 16– bitowy, 
pojemność licznika 2

16

=65536. 

 

 

 

Rys. 2 Układ czasowy T0 w trybie 1: [5,s.37] 

 

Tryb  2–  praca  z  autodoładowaniem  –  liczy  tylko  część  TLi  (8–  bitowy),  część  THi 
przechowuje  wartość  początkową,  która  jest  przepisywana  do  części  TLi  po  każdorazowym 
przepełnieniu licznika, jednocześnie ustawiany jest znacznik TFi, pojemność licznika 2

8

=256. 

 

 

 

R

ys. 3 Układ czasowy T0 w trybie 2: [5,s.38] 

 
 

 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

10

Tryb  3–  jest  różny  dla  liczników  T0  i  T1.  Licznik  T0  pracuje  jako  dwa  niezależne  liczniki  
8–  bitowe TH0  i  TL0  (tak  jak  w  trybie  0  i  1),  Część  TL0  jest sterowana  bitami  sterującymi 
związanymi z licznikiem T1, a część TH0– z licznikiem T0; tryb ten jest używany wówczas, 
gdy  licznik  T1  jest  wykorzystany  do  taktowania  transmisji  szeregowej,  a  potrzebne  są  dwa 
niezależne liczniki. 

 

 

 

Rys. 4 Układ czasowy T0 w trybie 3 [5,s.38] 

 

Jeżeli  realizowana  jest  funkcja  czasomierza  (

T

C/ =0),  to  zawartość  licznika  jest 

zwiększana  w  każdym  cyklu  maszynowym.  Cykl  maszynowy  jest  wykonywany  w  ciągu  12 
taktów zegarowych. 

Jeżeli  realizowana  jest  funkcja  licznika  (

T

C/ =1)  odpowiednie  wejście  T0  lub  T1  jest 

próbkowane  w  każdym  cyklu  maszynowym.  Jeżeli  w  dwóch  kolejnych  próbkach  zostanie 
wykryta  zmiana  1  na  0  na  wejściu  (opadające  zbocze  impulsu)  to  w  następnym  cyklu 
maszynowym  nastąpi  zwiększenie  zawartości  licznika  o  1.  Do  wykrycia  zmiany  na  wejściu 
potrzeba 2 cykli maszynowych, czyli maksymalna częstotliwość zliczanych impulsów wynosi 
f

XTAL

/24.  

 
W  niektórych  sytuacjach  przydatne  jest  zastosowanie  mikrokontrolera  wyposażonego  

w  dodatkowy  układ  czasowy  T2.  Taka  konieczność  pojawia  się  na  przykład  wtedy,  kiedy 
licznik  T1  taktuje  transmisję  szeregową,  a  potrzebne  są  2  dodatkowe  liczniki.  Zamiast 
korzystać z trybu 3 pracy licznika T0 można wykorzystać dodatkowy licznik T2. Licznik T2 
posiada dodatkowo kilka bardzo użytecznych funkcji, które zostaną opisane poniżej.  
Układ  czasowo–  licznikowy  T2  jest  dodatkowym  zasobem  wielu  mikrokontrolerów  
rodziny  ’51,  na  przykład  mikrokontrolera  SAB  80C535.  Oprócz  układu  czasowego  T2 
mikrokontroler  ten,  w  stosunku  do  podstawowej  rodziny  ’51,  posiada  dodatkowe  porty 
równoległe  oraz  wbudowany  przetwornik  A/C.  W  związku  z  dodatkowymi  zasobami 
rozbudowany został również układ przerwań. Będzie o tym mowa w dalszej części poradnika. 

 
 
 
 
 
 
 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

11

Mikrokontroler SAB 80C535 jest rozbudowaną wersją mikrokontrolera 80C51: 

 

Rys.5. Dodatkowe zasoby mikrokontrolera SAB 80C535 
 

 

 

 

Rys. 6. Układ czasowy T2 [1, s.108] 

 
Licznik może pracować w trzech trybach, określanych skrótem CCR
C– Compare (porównanie), 
C– Capture (zapamiętanie wartości chwilowej), 
R– Reload (autodoładowanie wartości początkowej). 
 
 
 
 
 

watchdog 

8-bitowy 
przetwor
nik A/C 

 
T2 

P6 

P5 

P4 

we 
ac 

we/
wy 

we/
wy 

T0 

T1 

RAM 256x8 

 
CPU 
8051 

U
A
R

ROM 8kx8 

P0 

P1 

P2 

P3 

we/wy 

 

we/wy 

 

we/wy 

 

we/wy 

 

 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

12

Z obsługą licznika T2 są związane linie portu P1: 
P1.0…P1.3 

wyjścia impulsów o modulowanej szerokości impulsu (MSI)/ wejścia 
przerwań INT3#...INT6, 

P1.5/T2EX 

sprzętowe ustalenie momentu wpisania wartości początkowej do licznika T2, 

P1.7/T2 

wejście impulsów zewnętrznych/ wejście bramkujące zliczanie impulsów 
wewnętrznych. 

Z  licznikiem  T2  związane  są  rejestry  komparatorów  CRC,  CC1,  CC2,  CC3,  w  których 
przechowywane  są  wartości  chwilowe.  W  trybie  autodoładowania  rejestr  CRC  przechowuje 
wartość początkową.  
Przerwania od licznika T2 są generowane w momencie: 

  przepełnienia licznika, 

  zrównania wartości chwilowej licznika z wartością wpisaną do rejestru komparatora. 

Tryby pracy licznika: 
Tryb porównania (compare) 
W czterech niezależnych komparatorach porównywana jest wartość licznika T2 z wartościami 
rejestrów  CRC,  CC1,  CC2,  CC3.  Wynik  porównania  przedstawiony  jest  w  postaci  stanów 
linii portu P1 oraz ustawienia znaczników przerwań IEX3…IEX6. Linie portu P1 przyjmują 
wartość  logiczną  1  w  momencie  wystąpienia  równości  zawartości  licznika  T2  z  rejestrami 
komparatora. 
 

Tabela 1 Związek linii portu P1 z rejestrami komparatora i przerwaniami

 

linia portu 

rejestr komparatora 

przerwanie 

P1.0 

CRC 

IEX3 

P1.1 

CC1 

IEX4 

P1.2 

CC2 

IEX5 

P1.3 

CC3 

IEX6 

Zerowanie bitu portu P1.x następuje po przepełnieniu licznika T2. 
Jeżeli  równocześnie  licznik  T2  pracuje  w  trybie  autodoładowania  rejestr  CRC  przechowuje 
wartość  początkową,  jako  rejestry  komparatora  mogą  być  wykorzystywane  rejestry  CC1, 
CC2, CC3. 
 

 

 

 

Rys. 7 Zależności czasowe na wyjściach portu P1: [1, s.109] 

 
 

przerwanie od 
komparatora 

przerwanie od 
przepełnienia 

stan licznika  

wart. rej. CRC, 
CCx 

stan P1.x 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

13

Ze względu na sposób sterowania liniami portu P1 wyróżnia się następujące tryby 
porównania: 
Tryb 0 porównania 
Tryb  sprzętowy  –  wartość  wpisana  do  rejestru  CRC  w  trybie  autodoładowania  decyduje  
o  częstotliwości  generowanych  impulsów,  a  wpisana  do  rejestrów  CC1,  CC2,  CC3  
o  wypełnieniu.  Zaprogramowany  i  uruchomiony  licznik  T2  pracuje  autonomicznie, 
tzn.  generuje  impulsy  na  wyjściach  portu  P1  niezależnie  od  jednostki  arytmetyczno– 
logicznej.  Zatrzymanie  licznika  jest  możliwe  tylko  sprzętowo poprzez  reset  mikrokontrolera  
lub odłączenie zasilania. 
 
Tryb 1 porównania 
Tryb programowy – zmiana linii P1.0…P1.3 jest dokonywana programowo przez wpis danej 
do bufora portu.  
 
Tryb zapamiętywania wartości chwilowej (capture) 
Do  zapamiętania  wartości  chwilowej  licznika  T2  może  być  użyty  każdy  z  rejestrów  CRC, 
CC1,  CC2,  CC3.  Operacja  ta  jest  realizowana  sprzętowo,  dzięki  czemu  w  trakcie  jej 
wykonywania nie następuje zatrzymanie licznika. 
  
Licznik T2 może pracować w 2 trybach zapamiętywania: 
 
Tryb 0 zapamiętywania: 
Moment zapamiętania wartości chwilowej jest wyznaczany sygnałem zewnętrznym. Wpisanie 
wartości  chwilowej  licznika  T2  do  odpowiedniego  rejestru  CRC,  CC1,  CC2,  CC3  
oraz  wpisanie  jedynki  na  pozycję  odpowiedniego  znacznika  przerwania  IEX3…IEX6 
spowodowane jest aktywnym zboczem sygnałów INT3#...INT6. 
 
Tryb 1 zapamiętywania: 
Zapamiętanie  wartości  chwilowej  w  rejestrach  CRC,  CC1,  CC2,  CC3  spowodowane  jest 
wpisaniem  dowolnej  wartości  do  mniej  znaczących  rejestrów  CRCL,  CCL1,  CCL2,  CCL3.  
W tym trybie zapamiętywania przerwania nie są wykorzystywane. 
 
Tryb autodoładowania (reload) 
Autodoładowanie  licznika  T2  oznacza  przepisanie  wartości  początkowej,  zawartej  
w 16–bitowym rejestrze CRC do rejestru licznika T2. 
 
Tryb 0 autodoładowania: 
W  trybie  0  przepisanie  wartości    z  rejestru  CRC  do  licznika  T2  odbywa  się  wskutek 
przepełnienia licznika T2. Przepełnienie licznika powoduje ustawienie flagi przerwania TF2. 
 
Tryb 1 autodoładowania: 
W  trybie  0  przepisanie  wartości    z  rejestru  CRC  do  licznika  T2  odbywa  się  wskutek 
wystąpienia  opadającego  zbocza  sygnału  T2EX  na  wejściu  P1.5.  Jeśli  znacznik  EXEN2  
w rejestrze IEN1 ma wartość 1 to jednocześnie zostanie wygenerowane przerwanie. 
 
Sterowanie pracą licznika T2 
Sygnał  taktujący  licznik  może  pochodzić  ze  źródła  wewnętrznego  lub  zewnętrznego. 
Niezależnie od wybranego trybu pracy i źródła taktowania po każdym przepełnieniu licznika 
generowane  jest  przerwanie  wewnętrzne.  Jest  to  sygnalizowane  wpisem  jedynki  logicznej  
na  pozycji  znacznika  przerwania  TF2  (wektor  przerwania  02Bh)  w  rejestrze  IRCON. 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

14

Znacznik  ten  musi  być  kasowany  programowo  ponieważ  to  samo  przerwanie  może  być 
również  wywołane  zewnętrznym  sygnałem  doprowadzonym  do  wejścia  P1.5/T2EX  
– ustawiany jest wówczas znacznik EXF2. 
Programowanie  pracy  licznika  T2  dokonywane  jest  przez  wpis  odpowiedniej  wartości 
 do rejestru T2CON: 
T2PS 

I3FR 

I2FR 

T2R1 

T2R0 

T2CM 

T2I1 

T2I0 

 

– włączenie dodatkowego dzielnika wstępnego dla wewnętrznego źródła 
taktowania, 
T2PS=0 

–  taktowanie licznika sygnałem f

XTAL

/12, 

T2PS 

T2PS=1 

–  taktowanie licznika sygnałem f

XTAL

/24, 

– wybór aktywnego zbocza sygnału przerwania zewnętrznego INT3#, wyjścia 
komparatora CRC, wpisu wartości początkowej, 
I3FR=0 

– zbocze opadające, 

I3FR 

I3FR=1 

– zbocze narastające, 

I2FR 

– w T2 nie używany, 
– wybór trybu autodoładowania licznika, 
0x 

– zablokowane funkcje autodoładowania, 

10 

– tryb 0 autodoładowania, 

T2R1, T2R0 

11 

– tryb 1 autodoładowania, 

– wybór trybu porównywania, 
T2CM=0  – tryb 0, 

T2CM 

T2CM=1  – tryb 1, 
wybór źródła sygnału taktującego, 
00 

– zatrzymanie zliczania, 

01 

– taktowanie sygnałem wewnętrznym, 

10 

– taktowanie sygnałem zewnętrznym, 

T2I1, T2I0 

11 

– bramkowanie wewnętrznego sygnału taktującego (blokowanie 
licznika niskim poziomem sygnału doprowadzonego do P1.7). 

 
Programowanie trybów pracy rejestrów CRC, CC1, CC2, CC3 jest dokonywane w rejestrze 
CCEN: 

COCAH3  COCAL3  COCAH2  COCAL2  COCAH1  COCAL1  COCAH0  COCAL0 

 
Tabela 2 Sterowanie komparatorami 

Rejestr 

Znacznik 

Przeznaczenie 

 

COCAH0  COCAL0   

 

zablokowany tryb porównywania/ wpisu wartości 
początkowej 

CRC 

tryb 0 zapamiętywania 

 

odblokowany tryb porównywania/ wpisu wartości 
początkowej 

 

tryb 1 zapamiętywania 

 

COCAH1  COCAL1   

 

zablokowany tryb porównywania/ wpisu wartości 
początkowej 

CC1 

tryb 0 zapamiętywania 

 

odblokowany tryb porównywania/ wpisu wartości 
początkowej 

 

tryb 1 zapamiętywania  

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

15

 

COCAH2  COCAL2   

 

zablokowany tryb porównywania/ wpisu wartości 
początkowej 

CC2 

tryb 0 zapamiętywania 

 

odblokowany tryb porównywania/ wpisu wartości 
początkowej 

 

tryb 1 zapamiętywania  

 

COCAH3  COCAL3   

 

zablokowany tryb porównywania/ wpisu wartości 
początkowej 

CC3 

tryb 0 zapamiętywania 

 

odblokowany tryb porównywania/ wpisu wartości 
początkowej 

 

tryb 1 zapamiętywania  

 

4.1.2. Pytania sprawdzające 

 
Odpowiadając na  pytania, sprawdzisz, czy jesteś przygotowany do wykonania ćwiczeń. 

1.  Jakie może być źródło impulsów zliczanych przez układy czasowe T0 i T1? 
2.  Jakie rejestry są związane z licznikami T0 i T1? 
3.  W jakich trybach mogą pracować układy czasowe T0 i T1? 
4.  Jak uruchomić i jak zatrzymać liczniki T0 i T1? 
5.  W jaki sposób zaprogramować układy czasowe T0 i T1 na pracę w wybranym trybie 

 i wybrane źródło impulsów zliczanych? 

6.  Jak obliczyć wartość początkową wpisywaną do układu czasowego w celu odmierzenia 

określonych odcinków czasu? 

7.  Jaka jest największa częstotliwość zewnętrznego sygnału zliczanego w układzie 

czasowym i od czego zależy? 

8.  Jakie rejestry są związane z licznikiem T2? 
9.  Jakie może być źródło impulsów zliczanych przez układ czasowy T2? 
10.  W jakich trybach może pracować układ czasowy T2? 
11.  W jaki sposób można wygenerować przebieg o zadanym czasie trwania i wypełnieniu 

używając licznika T2? 

 

4.1.3. Ćwiczenia 

 

Ćwiczenie 1 

Napisz i uruchom program zapalenia diody dołączonej do P1.0 na czas 3 sekund. 

 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryb pracy i źródło zliczanych impulsów, 
2)  zestawić słowo sterujące, 
3)  dokonać  obliczeń  ilości  zliczanych  cykli  i  na  tej  podstawie  obliczyć  liczbę  przepełnień 

licznika i wartość początkową wpisywaną do licznika, 

4)  przygotować algorytm programu w postaci schematu blokowego, 
5)  napisać program w języku asemblera, 
6)  skompilować program, poprawić ewentualne błędy, 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

16

7)  uruchomić program używając zestawu uruchomieniowego, 
8)  sprawdzić poprawność działania programu, 
9)  zaprezentować wykonane ćwiczenie, 
10)  dokonać oceny poprawności wykonanego ćwiczenia. 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem,  
–  literatura z rozdziału 6. 
 
Ćwiczenie 2 

Napisz i uruchom program pomiaru czasu trwania podprogramu. Wynik pomiaru zapisz 

do pamięci IRAM do komórek 30H i 31H. 
 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryb pracy i źródło zliczanych impulsów, 
2)  zestawić słowo sterujące, 
3)  przygotować algorytm programu głównego w postaci schematu blokowego, 
4)  przygotować  algorytm  podprogramu,  którego  czas  trwania  ma  być  mierzony  np. 

podprogram mnożenia liczb znajdujących się w rejestrach,  

5)  napisać program w języku asemblera, 
6)  skompilować program, poprawić ewentualne błędy, 
7)  uruchomić program używając zestawu uruchomieniowego, 
8)  sprawdzić poprawność działania programu, 
9)  zaprezentować wykonane ćwiczenie, 
10)  dokonać oceny poprawności wykonanego ćwiczenia. 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem, 
–  literatura z rozdziału 6. 
 
Ćwiczenie 3 

Napisz  i  uruchom  program  pomiaru  częstotliwości  generatora  dołączonego  do  wejścia 

T1(P3.5).  Wynik  pomiaru  wyślij  na  diody  dołączone  do  portu  równoległego  (tylko  starszy 
bajt wyniku). Licznik T1– zlicza impulsy doprowadzone z generatora, licznik T0 – odmierza 
czas  1  sekundy.  Po  upływie  1  sekundy  zatrzymaj  licznik  T1  –  stan  licznika  będzie  równy 
częstotliwości sygnału z generatora (w Hz).  
 

Sposób wykonania ćwiczenia: 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryby pracy i źródła zliczanych impulsów dla obu liczników, 
2)  zestawić słowo sterujące, 
3)  przygotować algorytm programu w postaci schematu blokowego, 
4)  napisać program w języku asemblera, 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

17

5)  skompilować program, poprawić ewentualne błędy, 
6)  uruchomić program używając zestawu uruchomieniowego, 
7)  sprawdzić poprawność działania programu, 
8)  zaprezentować wykonane ćwiczenie, 
9)  dokonać oceny poprawności wykonanego ćwiczenia, 

 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem, 
–  generator sygnału prostokątnego, 
–  literatura z rozdziału 6. 

 

Ćwiczenie 4 

Na  wyjściu  P1.1  wygeneruj  przebieg  prostokątny  o  częstotliwości    2  kHz  i  wypełnieniu 

60%.  Do  wygenerowania  przebiegu  użyj  licznika  T2  pracującego  w  trybie  autodoładowania 
i  porównywania  wartości  chwilowej.  Wygenerowany  przebieg  zaobserwuj  używając 
oscyloskopu. 
 

Sposób wykonania ćwiczenia: 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryby pracy i źródło zliczanych impulsów, 
2)  zestawić słowa sterujące, 
3)  dokonać 

obliczeń 

dotyczących 

wartości 

początkowej 

autodoładowywanej  

po przepełnieniu licznika i wartości porównywanej w komparatorze,  

4)  napisać program w języku asemblera, 
5)  skompilować program, poprawić ewentualne błędy, 
6)  uruchomić program używając zestawu uruchomieniowego, 
7)  sprawdzić poprawność działania programu, 
8)  zaprezentować wykonane ćwiczenie, 
9)  dokonać oceny poprawności wykonanego ćwiczenia. 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem, 
–  oscyloskop, 
–  literatura z rozdziału 6. 

 

 

 

 

 

 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

18

4.1.4. Sprawdzian postępów 

Czy potrafisz: 
 

 

 

 

 

 

 

 

            Tak       Nie 

1)  omówić tryby pracy układów czasowo– licznikowych T0 i  T1?   

¨ 

¨ 

2)  zaprogramować licznik na różne tryby pracy i źródła zliczanych   

 impulsów?   

 

 

 

 

 

 

¨ 

¨ 

3)  odmierzyć zadane odcinki czasu używając liczników? 

 

 

¨ 

¨ 

4)  wygenerować przebiegi o zadanym czasie trwania i wypełnieniu?  

¨ 

¨ 

5)  zmierzyć częstotliwość zewnętrznego sygnału doprowadzonego  

do licznika?   

 

 

 

 

 

 

¨ 

¨

 

6)  omówić pracę licznika T2 w różnych trybach pracy? 

 

 

¨ 

¨

 

7)  wygenerować przebieg o zadanej częstotliwości i wypełnieniu 

używając T2? 

 

 

 

 

 

 

¨ 

¨

 

8)  uruchomić napisane programy używając zestawu uruchomieniowego? 

¨ 

¨

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

19

4.2. Port szeregowy 

 

4.2.1. Materiał nauczania 

 

Wbudowany  port  szeregowy  pozwala  na  wczytywanie  danych  szeregowych  przez 

wejście  RxD  (P3.0)  i  wysyłanie  danych  szeregowych  przez  wyjście  TxD  (P3.1).  Port  może 
pracować w jednym z czterech trybów:  
 

Tabela 3 Tryby pracy portu szeregowego 

Tryb  SM0  SM1  Opis 

Transmisja synchroniczna, znaki 8–bitowe, taktowane sygnałem 
zegarowym 

Transmisja asynchroniczna, znaki 8–bitowe, szybkość określona 
programowo 

Transmisja asynchroniczna, znaki 9–bitowe, szybkość 1/32 lub 1/64 
częstotliwości zegara 

Transmisja asynchroniczna, znaki 9–bitowe, szybkość określona 
programowo 

  

Zamiana  postaci  danej  z  szeregowej  na  równoległą  (odbiór  danej)  lub  równoległej 

na szeregową (nadawanie danej) oraz sterowanie transmisji odbywa się automatycznie. Dane 
odebrane przez port szeregowy są wpisywane do rejestru SBUF, dane wysyłane są pobierane 
z rejestru SBUF. Oba rejestry mają tę samą nazwę i  są umieszczone w przestrzeni adresowej 
pamięci pod tym samym adresem 99H.  
 
SCON– słowo sterujące układu transmisji szeregowej: 
SM0 

SM1 

SM2 

REN 

TB8 

RB8 

TI 

RI 

 
SM0 SM1 

  tryb pracy, 

SM2 

  bit sterujący przejściem do komunikacji wieloprocesorowej, 

REN 

  bit zezwolenia na odbiór danych przez port szeregowy, bit ustawiany  

i zerowany programowo , 

TB8 

  dziewiąty bit nadawanego słowa, 

RB8 

  dziewiąty bit odbieranego słowa, 

TI 

  znacznik zakończenia nadawania danych, może wywołać przerwanie, 

kasowany programowo, 

RI 

  znacznik zakończenia odbierania danych, może wywołać przerwanie, 

kasowany programowo. 

 
Tryby pracy: 
Tryb 0 

Transmisja synchroniczna, przesyłane są słowa 8–bitowe ze stałą szybkością f

XTAL

/12.  

Nadanie danej: wpis danej do rejestru SBUF inicjuje nadawanie danej szeregowo przez linię 
P3.1 (RxD) oraz taktu przez P3.0 (TxD), po wysłaniu 8 bitów ustawiany jest bit TI – sygnał 
dla procesora, że słowo zostało wysłane. Bit TI może generować przerwanie. 
Odbiór  danej:  odczyt  danej  przez  linię  P3.1  (RxD)  odbywa  się,  gdy  REN=1  i  RI=0 
(poprzednio  odebrana  dana  została  odczytana  przez  procesor),  bity  danej  są  wpisywane 
do rejestru przesuwnego, a po zgromadzeniu całego słowa jest ono przepisywane do rejestru 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

20

SBUF, jednocześnie ustawiany jest znacznik RI, który może generować przerwanie. Podczas 
odbioru na linię P3.0 (TxD) wysyłany jest sygnał taktujący. 

 

Rys. 8 Zależności czasowe operacji nadawania i odbioru dla łącza szeregowego pracującego w trybie 0 [2, s.68] 
 

Tryb 1  

Transmisja asynchroniczna, znaki 8–bitowe, szybkość określona programowo. 

W  trybie  asynchronicznym  port  szeregowy  pełni  rolę  niezależnego  nadajnika  (P3.1–  TxD) 
 i odbiornika (P3.0–RxD). Dane są przesyłane w następującym formacie: 
 
 
 

 

bit 

startu 

 

bity danych 

bit 

stopu 

 

 

 

 

D0 

D1 

D2 

D3 

D4 

D5 

D6 

D7 

 

Rys 9– Format znaku w trybie 1 

 

Nadanie danej: wpis danej do rejestru SBUF inicjuje  nadawanie danej szeregowo przez linię 
P3.1 (TxD), powoduje to równocześnie wpis jedynki logicznej (bit stopu) do przerzutnika D. 
Powoduje to uaktywnienie bloku sterowania nadajnika, który w następnym takcie zegarowym 
wymusza zero logiczne  na wyjściu TxD –  bit startu, następnie wystawia kolejne  bity danych  
z  rejestru  przesuwnego  SBUF  (począwszy  od  najmłodszego  bitu).  Równocześnie  z  bitami 
danych  przesuwany  jest  bit  stopu  (z  przerzutnika  D).  Po  wystawieniu  bitu  stopu  ustawiany 
jest  bit  TI  oznaczający  zakończenie  wysyłania  słowa,  jest  to  informacja  dla  procesora, 
że do rejestru SBUF może wpisać następne słowo. Bit ten może być odpytany programowo 
lub może być źródłem przerwania od portu szeregowego. 
Odbiór danej:  inicjowany jest sprzętowo, po wykryciu zmiany z 1 na 0 sygnału na linii P3.0 
(RxD), pod warunkiem, że w rejestrze SCON jest ustawiony bit REN zezwolenia na odbiór. 
Stan  linii  jest  próbkowany  z  częstotliwością  sygnału  taktującego  odbiornik.  Wykrycie  bitu 
startu  powoduje  uaktywnienie  bloku  sterowania  odbiornika  oraz  wyzerowanie  dzielnika 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

21

częstotliwości  przez  16  (podzielnika  częstotliwości).  Stan  linii  RxD  jest  próbkowany 
trzykrotnie  w  każdym  cyklu  (podczas  odbioru  pojedynczego  bitu),  podczas  gdy  zawartość 
licznika  wynosi  7,  8  i  9.  Wartość  logiczna  na  wejściu  RxD,  która  wystąpiła  przynajmniej 
w  dwóch  próbkach  jest  wpisywana  jako  wartość  odebranego  bitu  do  rejestru  przesuwnego. 
Po  odebraniu  całego  słowa  może  ono  zostać  przepisane  do  rejestru  SBUF.  Warunkiem 
przepisania  słowa  jest  wystąpienie  prawidłowego  bitu  stopu  oraz  RI=0,  które  oznacza, 
że procesor odebrał poprzednie słowo. Po przepisaniu słowa do SBUF ustawiany jest bit RI, 
który  jest  informacją  dla  procesora,  że  może  odebrać  słowo  z  SBUF.  Bit  ten  może  być 
odpytany programowo lub może być źródłem przerwania od portu szeregowego. 

 

Rys 10– Zależności czasowe operacji nadawania i odbioru dla łącza szeregowego pracującego w trybie 1 

[2,s.71] 

 

W trybie 1 szybkość transmisji jest ustalana programowo przez wpis wartości do licznika T1 
(w  niektórych  procesorach  może  to  również  być  licznik  T2)  pracującego  jako  czasomierz 

(C/ T =0) w trybie 2 (z autodoładowaniem).  
Szybkość transmisji jest równa: 
f

OT1

/32 gdy SMOD=0 lub f

OT1

/64 gdy SMOD=1,  

gdzie f

OT1

– częstotliwość przepełnienia licznika T1, SMOD– siódmy bit w rejestrze PCON. 

f

OT1=

TH1

-

256

f

T1

 

gdzie f

T1

 oznacza częstotliwość impulsów zliczanych przez licznik T1, czyli f

T1

= f

XTAL

/12. 

Przykładowe  wartości,  jakie  należy  wpisać  do  TH1,  gdy  licznik  T1  pracuje  jako  czasomierz  
w trybie 2, a f

XTAL= 

12 MHz, SMOD=0 zostały przedstawione w tabeli 4: 

Tabela 4 Ustalanie szybkości transmisji 

Szybkość transmisji   

w bodach 

Wartość początkowa 

(hex) 

9600 

FD 

4800 

FA 

2400 

F4 

1200 

E8 

600 

D0 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

22

Tryb 2 

Transmisja asynchroniczna, znaki 9–bitowe, szybkość 1/32 (SMOD=0) lub 1/64 

(SMOD=1) częstotliwości zegara. 
Format danych: 
 

 

bit 

startu 

 

bity danych 

bit 

kontr. 

 

bit 

stopu 

 

 

 

 

D0 

D1 

D2 

D3 

D4 

D5 

D6 

D7 

 

 

Rys 11– Format znaku w trybie 2 

 

Dziewiąty bit nadawanego słowa jest wpisywany jako bit TB8, a odbieranego słowa jako RB8 
w rejestrze SCON. Bit TB8 i RB8 są zmieniane programowo. Mogą pełnić role bitu kontroli 
parzystości, dodatkowego bitu stopu oraz mogą być wykorzystane w komunikacji 
wieloprocesorowej. Działanie portu podobne jak w trybie 1. 
 
Tryb 3 

Transmisja asynchroniczna, znaki 9–bitowe, szybkość określona programowo. 

Format danych jak w trybie 2, a taktowanie transmisji jak w trybie 1. 

 

4.2.2. Pytania sprawdzające 

 

Odpowiadając na pytania, sprawdzisz, czy jesteś przygotowany do wykonania. 

1.  Jakie jest zadanie portu szeregowego? 
2.  W jakich trybach może pracować port szeregowy? 
3.  Jakie rejestry są związane z pracą portu szeregowego? 
4.  Na czym polega transmisja synchroniczna, a na czym asynchroniczna? 
5.  Z jakich bitów składa się ramka w transmisji asynchronicznej? 
6.  W jaki sposób zaprogramować port szeregowy na określony tryb pracy i zadaną szybkość 

transmisji? 

7.  Jak rozpocząć nadawanie danej?  
8.  Jak można ustalić prędkość transmisji? 
9.  Jakie warunki muszą być spełnione, aby dana mogła być odebrana przez łącze 

szeregowe? 

10.  Jak oblicza się bit kontroli parzystości? 
11.  Jak programowo sprawdzić, czy dana została odebrana poprawnie? 
 

4.2.3. Ćwiczenia 

 
Ćwiczenie 1 

Napisz  i  uruchom  program  ciągłego  wysyłania  pojedynczej  danej  z  akumulatora  przez 

port  szeregowy.  Wysyłana  ma  być  dana  8–  bitowa  z  szybkością  1200  bodów.  Przed 
powtórnym  wysłaniem  danej  wprowadź  opóźnienie  czasowe  ok.  200  ms  używając  licznika 
T0. Umożliwi to obserwację wysyłanego znaku na oscyloskopie. 
 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryb pracy portu szeregowego, 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

23

2)  wybrać  tryby  pracy  dla  liczników  T0  i  T1–  licznik  T0  służy  do  opóźnienia  czasowego, 

licznik T1 będzie taktował transmisję szeregową, 

3)  obliczyć  wartość  początkową  dla  licznika  T1–  odpowiednią  dla  zadanej  szybkości 

transmisji i liczbę przepełnień oraz wartość początkową dla licznika opóźniającego T0,  

4)  zestawić słowa sterujące, 
5)  przygotować algorytm programu w postaci schematu blokowego, 
6)  napisać program w języku asemblera, 
7)  skompilować program, poprawić ewentualne błędy, 
8)  uruchomić program używając zestawu uruchomieniowego, 
9)  sprawdzić poprawność działania programu, 
10)  zaprezentować wykonane ćwiczenie, 
11)  dokonać oceny poprawności wykonanego ćwiczenia. 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem, 
–  oscyloskop, 
–  literatura z rozdziału 6. 
 
Ćwiczenie 2 

Napisz  i  uruchom  program  przepisania  danych  8–bitowych  z  tablicy  w  pamięci  IRAM 

[20H:2FH] do tablicy w pamięci XRAM [0–0FH] za pośrednictwem portu szeregowego (TxD 
i RxD połączone). Szybkość transmisji 9600 bodów. 
 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryb pracy portu szeregowego, 
2)  obliczyć  wartość  początkową  dla  licznika  T1–  odpowiednią  dla  zadanej  szybkości 

transmisji, 

3)  zestawić słowo sterujące, 
4)  przygotować algorytm programu w postaci schematu blokowego, 
5)  napisać program w języku asemblera, 
6)  skompilować program, poprawić ewentualne błędy, 
7)  uruchomić program używając zestawu uruchomieniowego, 
8)  sprawdzić poprawność działania programu, 
9)  zaprezentować wykonane ćwiczenie, 
10)  dokonać oceny poprawności wykonanego ćwiczenia. 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem, 
–  literatura z rozdziału 6. 
 
 
 
 
 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

24

4.2.4. Sprawdzian postępów 

 
Czy potrafisz: 
 

 

 

 

 

 

 

 

           Tak         Nie 

1)  opisać pracę portu szeregowego w każdym z trybów pracy?  

 

¨ 

¨

 

2)  zaprogramować port szeregowy na odpowiedni tryb pracy? 

 

¨ 

¨

 

3)  ustalać szybkość transmisji przez port szeregowy? 

 

 

¨ 

¨

 

4)  napisać program nadawania lub odbierania danych  

przez port szeregowy? 

 

 

 

 

 

¨ 

¨

 

5)  nadawać daną z bitem kontroli parzystości? 

 

 

 

¨ 

¨

 

6)  sprawdzać, czy dana została odebrana poprawnie? 

 

 

¨ 

¨

 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

25

4.3. Przetwornik analogowo– cyfrowy 

 

4.3.1.Matriał nauczania 

 
Mikrokontroler SAB80C535 jest wyposażony w przetwornik analogowo–cyfrowy. 

Parametry przetwornika: 

 

kompensacja wagowa, 

 

8 kanałów analogowych AN0–AN7 (P6.0–P6.7), 

 

8–bitowa rozdzielczość pomiaru, 

 

16 programowalnych podzakresów pomiarowych, 

 

programowe wyzwalanie serii pomiarów lub pojedynczego pomiaru, 

 

możliwość generowania przerwania po każdym pomiarze, 

 

czas przetwarzania przetwornika wynosi 13 cykli maszynowych. 

 

 

 

Rys.12 Schemat blokowy przetwornika A/C: [1, s.126] 

 
Przetwornik A/C korzysta z 3 rejestrów specjalnych SFR: 
ADCON (adres 0D8h) – wybór kanału pomiarowego i rodzaju przetwarzania: 
 

BD 

CLK 

– 

BSY 

ADM  MX2 

MX1 

MX0 

 
BD – bit związany z portem szeregowym, 
CLK – bit związany z taktowaniem, 
podczas pracy przetwornika A/C nie należy zmieniać ich wartości, 
 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

26

BSY  –  wskazuje  aktualny  stan  przetwornika,  bit  tylko  do  odczytu,  ustawiany  i  kasowany 
sprzętowo:  BSY=0  –  przetwornik  po  zakończeniu  przetwarzania,  BSY=1–  przetwornik  
w trakcie przetwarzania, 
ADM  –  określa  rodzaj  przetwarzania:  ADM=0  –  pojedynczy  pomiar,  ADM=1–  seria 
pomiarów, aż do chwili gdy ADM=0, 
MX2, MX1, MX0 – wybór kanału pomiarowego. 

 
Tabela 5
 Wybór kanału pomiarowego: 

MX2  MX1  MX0  Kanał 

Wejście 

AN0/P6.0 

AN1/P6.1 

AN2/P6.2 

AN3/P6.3 

AN4/P6.4 

AN5/P6.5 

AN6/P6.6 

AN7/P6.7 

 
ADDAT (adres 0D9h) – wynik przetwarzania 
W rejestrze ADDAT przechowywana jest całkowita wielokrotność poziomów kwantowania: 

ΔU

U

ADDAT

x

=

 

1

2

V

V

ΔU

8

IntAGND

IntAREF

=

 

DAPR (adres 0DAh) – wybór zakresu przetwarzania, wpis wartości do tego rejestru 
rozpoczyna pomiar i przetwarzanie ac na wybranym kanale. 
 

bit 7 

bit 6 

bit 5 

bit 4 

bit 3 

bit 2 

bit 1 

bit 0 

napięcie V

IntAREF 

napięcie V

IntAGND

 

przy czym: 
V

IntAREF 

– górne wewnętrzne napięcie odniesienia 

V

IntAGND 

– dolne wewnętrzne napięcie odniesienia  

Napięcia te tworzone są przez podział różnicy napięć V

AREF

 i V

AGND

 zgodnie z wzorami: 

(

)

AGND

AREF

7..4

AGND

IntAREF

V

V

16

DAPR

V

V

+

=

 

(

)

AGND

AREF

3..0

AGND

IntAGND

V

V

16

DAPR

V

V

+

=

 

musi być spełniony warunek: V

IntAREF

– V

IntAGND

>1V, stąd DAPR

7..4 

> 3h i DAPR

3..0 

< Ch

 

 

zakładając napięcia odniesienia: V

AREF

=5V i V

AGND

=0V: 

5V

16

DAPR

V

7..4

IntAREF

=

 

5V

16

DAPR

V

7..4

IntAGND

=

 

np. zawartość rejestru DAPR=A4h: 

V

 

3,125

16

50V

5V

16

10

V

IntAREF

=

=

=

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

27

V

 

1,25

16

20V

5V

16

4

V

IntAGND

=

=

=

 

Czyli dla DAPR=A4h zakres napięć: 1,25V–3,125V 
 

Tabela 6 Wybór podzakresów pomiarowych: 

podzakres 

pomiarowy 

DAPR

7..4 

[V] 

V

IntAREF

 

DAPR

3..0

 

[V] 

V

IntAGND

 

0000 

0000 

0001 

– 

0001 

0,3125 

0010 

– 

0010 

0,625 

0011 

– 

0011 

0,9375 

0100 

1,25 

0100 

1,25 

0101 

1,5625 

0101 

1,5625 

0110 

1,875 

0110 

1,875 

0111 

2,1875 

0111 

2,1875 

1000 

2,5 

1000 

2,5 

1001 

2,8125 

1001 

2,8125 

10 

1010 

3,125 

1010 

3,125 

11 

1011 

3,4375 

1011 

3,4375 

12 

1100 

3,75 

1100 

3,75 

13 

1101 

4,0625 

1101 

– 

14 

1110 

4,375 

1110 

– 

15 

1111 

4,6875 

1111 

– 

 
Dokładność przetwarzania przetwornika w pełnym zakresie programowym wynosi: 

0,0196V

255

0V

5V

1

2

V

V

ΔU

8

IntAGND

IntAREF

=

=

=

 

przy pomiarze w zawężonym zakresie np. 0–1,25V: 

V

0049

,

0

255

0V

1,25V

1

2

V

V

U

8

IntAGND

IntAREF

=

=

=

 

Jest to prosty sposób na zwiększenie dokładności przetwornika o dodatkowe dwa bity (wynik 
10–bitowy). Należy dokonać pomiaru w pełnym zakresie pomiarowym. Na podstawie 
uzyskanego wyniku określić podzakres pomiarowy i dokonać drugiego pomiaru. 
Pomiar 10–bitowy: 

1.  Pierwszy pomiar w zakresie 0–5V 
2.  Na podstawie 2 najstarszych bitów wyniku należy ustalić podzakres pomiarowy: 

Tabela 7 Podzakres pomiarowy dla pomiaru 10– bitowego

 

dwa najstarsze bity wyniku 

zakres pomiarowy 

DAPR 

00 

0–1,25V 

40H 

01 

1,25V–2,5V 

84H 

10 

2.5V–3,75V 

C8H 

11 

3,75V–5V 

0CH 

  

3.  Do drugiego pomiaru należy wybrać odpowiedni podzakres i właściwą wartość 

wpisać do DAPR. 

4.  Drugi pomiar w wybranym podzakresie pozwoli ustalić 8 młodszych bitów wyniku. 

 
Dla prawidłowej pracy przetwornika A/C wymagane jest spełnienie następujących warunków: 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

28

  napięcia V

IntAREF

 i V

IntAGND 

muszą być dołączone do wyprowadzeń mikrokontrolera, jeżeli 

napięcia V

IntAREF

 i V

IntAGND

 są dołączone do napięć zasilających mikrokontroler V

CC 

i V

SS

to muszą spełniać warunek: 

0,2V,

V

V

%

5

V

V

SS

IntAGND

CC

IntAREF

±

=

±

=

 

  minimalna różnica napięć 

1V

V

V

IntAGND

IntAREF

  rezystancja wewnętrzna źródła mierzonego napięcia i napięcia wzorcowego nie może być 

większa niż 5k

 

4.3.2. Pytania sprawdzające 

 
Odpowiadając na pytania, sprawdzisz, czy jesteś przygotowany do wykonania ćwiczeń. 

1.  W jakim zakresie można mierzyć napięcia używając przetwornika A/C? 
2.  Ilu bitowy jest przetwornik A/C w mikrokontrolerze SAB80C535? 
3.  Jaki jest kwant napięcia w tym przetworniku podczas pomiaru w pełnym zakresie 

pomiarowym? 

4.  W jaki sposób można wybrać kanał pomiarowy? 
5.  Jak rozpocząć pomiary? 
6.  Jak zatrzymać serię pomiarów? 
7.  W jaki sposób można zwiększyć dokładność pomiaru, jeżeli wiemy, że zakres napięć 

mierzonych jest mniejszy niż 0–5V? 

8.  Z jakiego rejestru należy pobrać wynik pomiaru? 
9.  Jak sprawdzić, czy przetwornik zakończył przetwarzanie? 
 

4.3.3. Ćwiczenia 

 

Ćwiczenie 1 

Uzupełnij tabelę . 

U

REF

 

U

GND

 

DAPR 

wartość 

analogowa 

napięcia 

wartość cyfrowa 

napięcia 

5V 

0V 

 

3,2 V 

 

3,75 V 

2,5V 

 

3,2V 

 

 

 

E4H 

 

80H 

 

 

0AH 

4,1 V 

 

4 V 

1 V 

 

 

72H 

 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  dokonać  obliczeń  kwantów  napięcia  na  podstawie  wybranego  podzakresu  pomiarowego 

korzystając z danych napięć odniesienia lub zawartości rejestru DAPR, 

2)  obliczyć wartość analogową (dziesiętnie) lub cyfrową (szesnastkowo), 
3)  na podstawie dwóch pierwszych pozycji w tabeli porównaj dokładność pomiaru w pełnym 

zakresie  pomiarowym  i  w  odpowiednio  dobranym  podzakresie  pomiarowym,  zastanów 
się w jaki sposób wynik drugiego pomiaru można przedstawić jako wynik 10–bitowy, 

4)  zaprezentować efekty swojej pracy, 
5)  dokonać samooceny. 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

29

Wyposażenie stanowiska pracy: 

 

treść zadania dla każdego ucznia, 

 

kalkulator, 

 

literatura z rozdziału 6. 

 
Ćwiczenie 2 

Napisz i uruchom program ciągłego pomiaru napięcia z wybranego kanału pomiarowego, 

wynik pomiaru wysyłaj na diody dołączone do portu. 

 
Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryb pracy i kanał pomiarowy, 
2)  zestawić słowo sterujące, 
3)  opracować algorytm programu i przedstawić go w postaci schematu blokowego, 
4)  napisać program w języku asemblera, 
5)  skompilować program, poprawić ewentualne błędy, 
6)  uruchomić program używając zestawu uruchomieniowego, 
7)  sprawdzić poprawność działania programu, 
8)  zaprezentować wykonane ćwiczenie, 
9)  dokonać oceny poprawności wykonanego ćwiczenia, 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem, 
–  literatura z rozdziału 6. 
 
Ćwiczenie 3 

Napisz  i  uruchom  program  monitorowania  napięcia  z  wybranego  kanału  pomiarowego,  

w przypadku przekroczenia napięcia 4V zapal diodę dołączoną do portu. 
 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  wybrać tryb pracy i kanał pomiarowy, 
2)  zestawić słowo sterujące, 
3)  obliczyć  jaka  wartość  cyfrowa  w  rejestrze  ADDAT  odpowiada  napięciu  analogowemu 

4V, 

4)  opracować algorytm programu i przedstawić go w postaci schematu blokowego, 
5)  napisać program w języku asemblera, 
6)  skompilować program, poprawić ewentualne błędy, 
7)  uruchomić program używając zestawu uruchomieniowego, 
8)  sprawdzić poprawność działania programu, 
9)  zaprezentować wykonane ćwiczenie, 
10)  dokonać oceny poprawności wykonanego ćwiczenia. 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

30

–  zestaw uruchomieniowy z oprogramowaniem, 
–  literatura z rozdziału 6. 

 

4.3.4. Sprawdzian postępów 

 
Czy potrafisz: 
 

 

 

 

 

 

 

 

            Tak       Nie 

1) omówić pracę przetwornika A/C? 

 

 

 

 

¨ 

¨

 

2) zaprogramować przetwornik na pomiar napięć z wybranego kanału? 

¨ 

¨

 

3) obliczyć wartość analogową napięcia na podstawie wyniku 

pomiaru w określonym podzakresie? 

 

 

 

 

¨ 

¨

 

4) dobrać odpowiednie wartości do rejestru DAPR na podstawie 

znajomości przewidywanego zakresu pomiarowego? 

 

 

¨ 

¨

 

5) obliczyć wartość cyfrową napięcia na podstawie 

znajomości podzakresu pomiarowego (zawartości rejestru DPTR)?   

¨ 

¨

 

6) napisać program pomiaru napięć z wybranego kanału, w wybranym 

podzakresie pomiarowym i zapisywania wyników w pamięci? 

 

¨ 

¨

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

31

4.4. Układ przerwań 

 

4.4.1. Materiał nauczania 

 
Układ przerwań w mikrokontrolerach rodziny ’51 obsługuje następujące przerwania: 

 
Tabela 8
 Źródła przerwań 

zewnętrzne: 
źródło przerwania: 

znacznik: 

INT0  

IE0– TCON.1 

INT1 

IE1– TCON.1 

wewnętrzne: 
źródło przerwania: 

znacznik: 

przepełnienie licznika T0 

TF0– TCON.5 

przepełnienie licznika T1 

TF1– TCON.7 

koniec nadawania/odbierania danej przez port szeregowy 

TI– SCON.1 
RI– SCON.0 

 

Znaczniki  są  ustawiane  sprzętowo  w  momencie  wystąpienia  przyczyny  przerwania 

lub  programowo  –  przez  wpis  jedynki  na odpowiedni  bit.  Znaczniki  są  kasowane  sprzętowo 
po  przyjęciu  przerwania,  mogą  być  również  kasowane  programowo.  Wyjątkiem  jest 
przerwanie  od  portu  szeregowego  –  znaczniki  nie  są  kasowane  po  przyjęciu  przerwania, 
aby  umożliwić  identyfikację  źródła  przerwania  (nadajnik  czy  odbiornik),  muszą  być  więc 
zerowane programowo. 

Układ  przerwań  może  być  blokowany  lub  odblokowany  globalnie,  każde  przerwanie 

może być maskowane indywidualnie – przez wpis „1” na odpowiednią pozycję rejestru IE

EA 

– 

– 

ES 

ET1  EX1  ET0  EX0 

 
Układ przerwań jest dwupoziomowy. W rejestrze IP można przypisać przerwaniom poziom 
wyższy („1” na odpowiedniej pozycji) lub niższy („0”): 

– 

– 

– 

PS 

PT1  PX1  PT0  PX0 

 

Tabela 9 znaczenie bitów w rejestrach IE i IP 

IE 

IP 

przerwanie 

priorytet 

EX0 

PX0 

zewnętrzne INT0 

ET0 

PT0 

od licznika T0 

EX1 

PX1 

zewnętrzne INT1 

ET1 

PT1 

od licznika T1 

ES 

PS 

od portu szeregowego 

 

 
Jeżeli układ przerwań jest odblokowany (EA=1) w stanie S6 każdego cyklu maszynowego są 
przeglądane  znaczniki  zgłoszenia  nie  zamaskowanych  przerwań.  W  następnym  cyklu 
maszynowym  układ  przerwań  przejdzie  do  obsługi  przerwania  o  najwyższym  priorytecie 
pod warunkiem, że: 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

32

 

wykonywany cykl maszynowy jest ostatnim w cyklu maszynowym, 

 

wykonywany rozkaz nie jest rozkazem RETI lub innym zmieniającym zawartość 
rejestrów IP lub IE, 

 

nie jest obsługiwany podprogram obsługi przerwania o tym samym lub wyższym 
poziomie. 

 
Po przyjęciu przerwania do obsługi mikrokontroler wykonuje następujące czynności: 

 

wewnętrzny przerzutnik przerwania odpowiadający poziomowi przyjętego przerwania 
zostanie ustawiony, aby w czasie obsługi nie mogło być przyjęte przerwanie z tego 
samego lub niższego poziomu, 

 

zeruje znacznik przyjętego przerwania (oprócz RI i TI), 

 

zapamiętuje na stosie zawartość licznika rozkazów, 

 

wpisuje do licznika rozkazów adres początku podprogramu obsługi przerwania. 

 

Tabela 10 Adresy wektorów przerwań 

źródło przerwania 

znacznik przerwania 

adres wektora przerwania 

zewnętrzne  INT0  

IT0 

0003H 

od przepełnienia T0 

TF0 

000BH 

zewnętrzne  INT1 

IT1 

0013H 

od przepełnienia T1 

TF1 

001BH 

od portu szeregowego 

RI+TI 

0023H 

 

Cykl  przyjęcia  przerwania  jest  wykonywany  w  ciągu  2  cykli  maszynowych.  Po  jego  

zakończeniu  procesor  rozpoczyna  realizację  podprogramu  obsługi  przerwania.  Podprogram 
ten  musi  być  zakończony  rozkazem  RETI,  który  spowoduje  wyzerowanie  przerzutnika 
przerwania (następne przerwanie z tego samego lub niższego poziomu może zostać przyjęte) 
oraz zdejmuje ze stosu adresu powrotu i wpisanie go do licznika rozkazów PC. 
 
Przerwania zewnętrzne 
Przerwania  zewnętrzne  są  zgłaszane  opadającym  zboczem  lub  niskim  poziomem  sygnału 

 na  wejściach  INT0 i  INT1  (P3.2  i  P3.3).  Sposób  zgłoszenia  określa  się  programowo 
 w rejestrze TCON: 
 

 

 

 

IE1  IT1  IE0  IT0 

 

 

 

 

 

bity związane z T1, 

T0 

 

 

 

 

 
IE1– znacznik zgłoszenia przerwania INT1 

IT1– ustawienie sposobu zgłaszania przerwania  INT1: 
 

IT1=0 – zgłoszenie poziomem niskim sygnału 

 

IT1=1 – zgłoszenie zboczem opadającym sygnału 

IE0 –  znacznik zgłoszenia przerwania INT0 

IT0 – ustawienie sposobu zgłaszania przerwania  INT0  
 
Znacznik IE1/IE0 jest zerowany sprzętowo w chwili przyjęcia przerwania. 
 
 
 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

33

System przerwań w mikrokontrolerze SAB 80C535 

Ze względu na dodatkowe zasoby mikrokontroler SAB 80C535 identyfikuje 12 źródeł 

przerwań: 5 omówionych powyżej oraz: 

 

przerwanie od przepełnienia licznika T2 oraz od przeładowania licznika T2 sygnałem 
zewnętrznym, 

 

przerwanie od przetwornika A/C, 

 

5 przerwań zewnętrznych INT2..INT6. 

 

Każdy  sygnał  mogący  wywołać  przerwanie  związany  jest  z odpowiednim  znacznikiem, 

który  jest  ustawiany,  gdy  sygnał  wywołujący  przerwanie  jest  aktywny.  Znaczniki  są 
kasowane  sprzętowo  po  przyjęciu  przerwania.  Wyjątkiem  są  znaczniki  przerwań  od licznika 
T2:  TF2  i  EXF2  (oraz  omawiane  poprzednio  RI  i  TI),  które  muszą  być  zerowane 
programowo. 
Znaczniki są ustawiane w rejestrze IRCON: 
 
EXF2  TF2 

IEX6 

IEX5 

IEX4 

IEX3 

IEX2 

IADC 

  
EXF2 
– 

znacznik ustawiany zewnętrznym sygnałem od przeładowania licznika T2, 

TF2 – 

znacznik od przepełnienia licznika T2, 

IEX6 –  znacznik od zewnętrznego sygnału INT6 lub od sygnału wyjściowego 

z komparatora 3, 

IEX5 –  znacznik od zewnętrznego sygnału INT5 lub od sygnału wyjściowego 

z komparatora 2, 

IEX4 –  znacznik od zewnętrznego sygnału INT4 lub od sygnału wyjściowego 

z komparatora 1, 

IEX3 –  znacznik od zewnętrznego sygnału INT3 lub od sygnału wyjściowego 

z komparatora 0, 

IEX2 –  znacznik od zewnętrznego sygnału INT2, 
IADC 
– 

znacznik od przetwornika A/C ustawiany na 4 cykle przed końcem przetwarzania. 

 

W  związku  z  większą  liczbę  źródeł  przerwań  rejestr  maskowania  przerwań  IE  został 

zastąpiony przez 2 rejestry IEN0 i IEN1. 
Wpis  „0”  na  odpowiednią  pozycję  rejestru  powoduje  zablokowanie  przerwania, 
 wpis „1”– odblokowanie 
 
IEN0

EAL 

– 

ET2 

ES 

ET1 

EX1 

ET0 

EX0 

 

 

EAL – 

odblokowanie wszystkich przerwań (odpowiednik bitu EA w rejestrze IE) , 

ET2 – 

przerwanie od licznika T2, 

pozostałe bity mają znaczenie takie samo jak w rejestrze IE. 
 
IEN1
EXEN2 

– 

EX6 

EX5 

EX4 

EX3 

EX2 

EADC 

  
EXEN2 – 

przerwanie od licznika T2 wywołane zewnętrznym sygnałem przeładowania 
licznika, 

EX6 – 

przerwanie zewnętrzne INT6 lub od komparatora 3 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

34

EX5 – 

przerwanie zewnętrzne INT5 lub od komparatora 2 

EX4 – 

przerwanie zewnętrzne INT4 lub od komparatora 1 

EX3 – 

przerwanie zewnętrzne INT3 lub od komparatora 0 

EX2 – 

przerwanie zewnętrzne INT2 

EADC – 

przerwanie od przetwornika A/C 

 

Przerwania  zewnętrzne  INT2  i  INT3  mogą  być  zgłaszane  zboczem  opadającym 

 lub narastającym zależnie od ustawienia bitów I2FR i I3FR w rejestrze T2CON („0”– zbocze 
opadające, „1” zbocze narastające”). Pozostałe przerwania zewnętrzne INT4..INT6 mogą być 
zgłaszane tylko zboczem narastającym. 

Przyjęcie przerwania powoduje przejście do podprogramu obsługi przerwania. 

 

     

 

Tabela 11 Adresy wektorów przerwań 

źródło przerwania 

znacznik przerwania 

adres wektora 
przerwania 

zewnętrzne  INT0  

IT0 

0003H 

od przepełnienia T0 

TF0 

000BH 

zewnętrzne  INT1 

IT1 

0013H 

od przepełnienia T1 

TF1 

001BH 

od portu szeregowego 

RI+TI 

0023H 

licznik T2 

TF2+EXF2 

002BH 

przetwornik A/C 

IADC 

0043H 

przerw. zewn. INT2 

IEX2 

004BH 

przerw. zewn. INT3 

IEX3 

0053H 

przerw. zewn. INT4 

IEX4 

005BH 

przerw. zewn. INT5 

IEX5 

0063H 

przerw. zewn. INT6 

IEX6 

006BH 

 
W przypadku jednoczesnych zgłoszeń przerwań o kolejności obsługi decyduje priorytet. 

 
Tabela 12
 Priorytety przerwań 

  
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 

Źródło przerwania 

Znacznik 

Priorytet 

przerw. zewn. INT0 

IE0 

najwyższy 

przetwornik A/C 

IADC 

licznik T0 

TF0 

przerw. zewn. INT2 

IEX2 

przerw. zewn. INT1 

IE1 

przerw. zewn. INT3 

IEX3 

licznik T1 

TF1 

przerw. zewn. INT4 

IEX4 

port szeregowy 

RI+TI 

przerw. zewn. INT5 

IEX5 

licznik T2 

TF2+EXF2 

 

przerw. zewn. INT6 

IEX6 

najniższy 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

35

Mikrokontroler SAB 80C535 wyposażony jest w czteropoziomowy system przerwań. 

Poziom przerwania jest ustalany przez ustawienie odpowiednich bitów w rejestrach IP0 i IP1: 
IP0: 

– 

– 

IP0.5 

IP0.4 

IP0.3 

IP0.2 

IP0.1 

IP0.0 

IP1: 

– 

– 

IP1.5 

IP1.4 

IP1.3 

IP1.2 

IP1.1 

IP1.0 

 
Tabela 13
 Poziomy przerwań: 

znaczniki 

IP1.x 

IP0.x 

poziom 

przerwania 

  
Poziom przerwania można przypisać dla pary przerwań.  
 

Tabela 14 Przyporządkowanie przerwań do określonych znaczników: 

znaczniki przerwań 

źródła przerwań 

IP1.0 

IP0.0 

IE0 

IADC 

IP1.1 

IP0.1 

TF0 

IEX2 

IP1.2 

IP0.2 

IE1 

IEX3 

IP1.3 

IP0.3 

TF1 

IEX4 

IP1.4 

IP0.4 

RI+TI 

IEX5 

IP1.5 

IP0.5 

TF2+EXF2 

IEX6 

  
 

4.4.2. Pytania sprawdzające 

 
Odpowiadając na pytania, sprawdzisz, czy jesteś przygotowany do wykonania ćwiczeń. 

1.  Jakie są źródła przerwań w mikrokontrolerze 8051? 
2.  Jakie jest znaczenie bitów w rejestrze IE? 
3.  Jakie jest znaczenie bitów w rejestrze IP? 
4.  Które ze znaczników przerwań są kasowane sprzętowo po przejściu do obsługi 

przerwania, a które trzeba kasować programowo? 

5.  Jak programowo wywołać przerwanie z dowolnego źródła? 
6.  Od czego zależy kolejność obsługi przerwań podczas jednoczesnych zgłoszeń? 
7.  Jakie są warunki przyjęcia przerwania? 
8.  Jakie czynności wykonuje mikrokontroler po przyjęciu przerwania? 
9.  Jakie dodatkowe źródła przerwań występują w mikrokontrolerze 80C535? 
10.  Jakie rejestry zastępują rejestr IE w mikrokontrolerze 80C535? 
11.  Ile jest poziomów przerwań w mikrokontrolerze 80C535? 
 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

36

4.4.3. Ćwiczenia 
 

Ćwiczenie 1 

Przedstaw na wykresie kolejność obsługi przerwań, gdy IE=10010011b, IP=00000010, 

czas trwania każdego podprogramu obsługi przerwania – 4 jednostki. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pr

ior

y

tet

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

INT0 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T0 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

INT1 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T1 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

port sz. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pr. gł. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RI 

 

IE1 

 

TF1, IE0 

 

 

 

TI 

TF0 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  na  podstawie  stanu  rejestrów  IE określić,  które  z przerwań  są  odblokowane  i  mogą  być 

przyjęte do obsługi, 

2)  na  podstawie  stanu  rejestru  IP  określić,  które  z  przerwań  mają  priorytet  wyższy, 

a które niższy, 

3)  narysować  wykres  kolejności  obsługi  zgłoszeń,  uwzględniając  kolejne  zgłoszenia 

i zawartość rejestrów IE i IP, 

4)  zaprezentować wykonane ćwiczenie, 
5)  dokonać oceny poprawności i estetyki wykonanego ćwiczenia. 
 

Wyposażenie stanowiska pracy: 

–  treść zadania dla każdego ucznia 
–  literatura z rozdziału 6. 
 
Ćwiczenie 2 

Zaprogramuj  układ  przerwań  w  mikrokontrolerze  SAB  80C535  tak,  aby  obsługiwał 

przerwania  od  licznika  T0,  przetwornika  A/C,  portu  szeregowego  i  przerwania  zewnętrzne 
INT1  i    INT5.  Przerwanie  INT1  może  przerwać  obsługę  każdego  przerwania,  a  przerwanie 
INT5  może  przerwać  obsługę  przerwań  od  licznika  T0,  przetwornika  A/C  i  portu 
szeregowego. 

 
 
Sposób wykonania ćwiczenia 
 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

37

Aby wykonać ćwiczenie powinieneś: 

1)  ustalić  wartości,  które  mają  być  wpisane  do  rejestrów  IE0  i  IE1  w  celu  odblokowania 

odpowiednich przerwań, 

2)  przypisać  odpowiednie  poziomy  przerwaniom,  na  tej  podstawie  ustalić  wartości,  które 

będą wpisane do rejestrów IP0 i IP1 

3)  zaprezentować wykonane ćwiczenie, 
4)  dokonać oceny poprawności wykonanego ćwiczenia, 
 

Wyposażenie stanowiska pracy: 

–  treść zadania dla każdego ucznia, 
–  literatura z rozdziału 6. 

 

Ćwiczenie 3 

Napisz  i  uruchom  program  zapalania  i  gaszenia  diody  dołączonej  do  portu  

z częstotliwością 0,5Hz i wypełnieniem ½ używając przerwania od licznika. 
 

Sposób wykonania ćwiczenia 
 
Aby wykonać ćwiczenie powinieneś: 

1)  dokonać obliczeń dotyczących ilości przepełnień i wartości początkowej do licznika, 
2)  opracować algorytm programu i przedstawić go w postaci schematu blokowego programu 

głównego i schematu blokowego podprogramu obsługi przerwania, 

3)  napisać program w języku asemblera, 
4)  skompilować program, poprawić ewentualne błędy, 
5)  uruchomić program używając zestawu uruchomieniowego, 
6)  sprawdzić poprawność działania programu, 
7)  zaprezentować wykonane ćwiczenie, 
8)  dokonać oceny poprawności wykonanego ćwiczenia, 
 

Wyposażenie stanowiska pracy: 

–  komputer PC, 
–  oprogramowanie umożliwiające kompilowanie i debbugowanie programu, 
–  zestaw uruchomieniowy z oprogramowaniem, 
–  literatura z rozdziału 6. 
 

4.4.4. Sprawdzian postępów 

Czy potrafisz: 
 

 

 

 

 

 

 

 

           Tak        Nie 

1) omówić źródła przerwań w mikrokontrolerze SAB 80C535? 

 

¨ 

¨

 

2) definiować pojęcia priorytet i poziom?   

 

 

 

¨ 

¨

 

3) odblokować i zablokować poszczególne przerwania? 

 

 

¨ 

¨

 

4) ustalić określone poziomy dla przerwań?  

 

 

 

¨ 

¨

 

5) określić warunki przyjęcia przerwania?   

 

 

 

¨ 

¨

 

6) wymienić jakie czynności są wykonywane po przyjęciu przerwania? 

¨ 

¨

 

7) napisać program obsługi zasobów modułów wewnętrznych 

 mikrokontrolera używając przerwań? 

 

 

 

 

¨ 

¨

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

38

5. SPRAWDZIAN OSIĄGNIĘĆ

 

 

INSTRUKCJA DLA UCZNIA 

1.  Przeczytaj uważnie instrukcję. 
2.  Podpisz imieniem i nazwiskiem kartę odpowiedzi. 
3.  Zapoznaj się z zestawem zadań testowych. 
4.  Test  zawiera  20  zadań  o  różnym  stopniu  trudności.  Zadania:  1–16  są  to  zadania 

wielokrotnego  wyboru  i  tylko  jedna  odpowiedź  jest  prawidłowa;  zadania:  17–20  
to zadania z luką. 

5.  Udzielaj odpowiedzi tylko na załączonej karcie odpowiedzi: 

 

w zadaniach wielokrotnego wyboru zaznacz prawidłową odpowiedź X (w przypadku 
pomyłki  należy  błędną  odpowiedź  zaznaczyć  kółkiem,  a  następnie  ponownie 
zakreślić odpowiedź prawidłową), 

 

w zadaniach do uzupełnienia wpisz brakujące wyrazy lub liczby. 

6.  Test  składa  się  z  dwóch  części  o  różnym  stopniu  trudności:  I  część  –  poziom 

podstawowy, II część – poziom ponadpodstawowy. 

7.  Pracuj samodzielnie, bo tylko wtedy będziesz miał satysfakcję z wykonanego zadania. 
8.  Kiedy  udzielenie  odpowiedzi  będzie  Ci  sprawiało  trudność,  wtedy  odłóż  jego 

rozwiązanie  na  później  i  wróć  do  niego,  gdy  zostanie  Ci  czas  wolny.

 

Trudności  mogą 

przysporzyć  Ci  zadania:  15–  20,  gdyż  są  one  na  poziomie  trudniejszym  niż  pozostałe. 
Przeznacz na ich rozwiązanie więcej czasu. 

9.  Na rozwiązanie testu masz 90 min. 

Powodzenia 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

39

ZESTAW ZADAŃ TESTOWYCH 

I część 

1.  Która z odpowiedzi charakteryzuje pracę licznika T1 w trybie 1: 

a)  licznik 8–bitowy liczący w przód, 
b)  licznik 8–bitowy liczący w tył, 
c)  licznik 16–bitowy liczący w przód, 
d)  licznik 16–bitowy liczący w tył. 

 

2.  W celu odmierzenia odcinków czasu po 0,1 ms użyty został układ czasowy T1 pracujący 

w trybie 2 (f 

XTAL 

=12MHz). Jaką wartość należy wpisać do rejestru TH1?  

a)  156, 
b)  246, 
c)  10, 
d)  100. 

 

3.  Przedstawiony program pozwala na odmierzenie czasu 1 s. Jaki rozkaz należy dopisać 

jako ostatni? 

SEK0:  MOV TMOD,#00010000B 
SEK1:  MOV TH1,#HIGH(48576) 
SEK2:  MOV TL1,#LOW(48576) 
SEK3:  MOV R7,#16 
SEK4:  SETB TR1 
SEK5:  JNB TF1,$ 
SEK6:  CLR TF1 
 

………….. 

a) 

JNC SEK4, 

b) 

JNC SEK3, 

c) 

DJNZ R7,SEK5, 

d) 

DJNZ R7,SEK3. 

 

4.  Jaka może być maksymalna częstotliwość impulsów zewnętrznych doprowadzonych do 

układu czasowego T0 (f 

XTAL 

=12MHz): 

a)  12 MHz, 
b)  1 MHz, 
c)  500 kHz, 
d)  50 kHz. 

 

5.  Zaprogramowanie licznika T2 na pracę w trybie autodoładowania i zapamiętania wartości 

chwilowej wymaga ustawienia odpowiednich bitów w rejestrach: 
a)  CRC i T2CON, 
b)  CRC i CCEN, 
c)  T2CON i CC1, 
d)  T2CON i CCEN. 

 
 
 
 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

40

6.  Przedstawiony poniżej program pozwala na wygenerowanie przebiegu prostokątnego na 

wyjściu P1.1. Jaka będzie częstotliwość i wypełnienie sygnału? 
a)  f=20 kHz, wypełnienie ½, 
b)  f=200 kHz, wypełnienie ½, 
c)  f=20 kHz, wypełnienie ¼, 
d)  f=200 kHz, wypełnienie ¼. 

 

MOV TMOD,#00000010B 

;zaprogramowanie licznika T0 na zliczanie impulsów 

;wewnętrznych (C/ T =0) w trybie 2 (M1M0=10) 

 

MOV TH0,#231 

;załadowanie wartości początkowej do starszej części 
;licznika T0 (wartość autodoładowywana)  

 

MOV TL0,#231 

;załadowanie wartości początkowej do młodszej 
;części licznika T0 

 

SETB TR0 

;start zliczania impulsów zewnętrznych 

CYKL:  JNB TF0,$ 

;oczekiwanie na przepełnienie licznika T0 

 

CLR TF0 

 

 

CPL P1.0 

;zmiana stanu P1.0 na przeciwny 

 

LJMP CYKL 

 

 

7.  Jakim rozkazem należy uzupełnić następujący program odbioru danej przez port 

szeregowy, aby możliwe było odebranie następnej danej? 

 

MOV SCON,#01010000B 

ODBIOR:  JNB RI,$ 
 

………… 

 

MOV A,SBUF 

a)  CLR TI 
b)  CLR RI, 
c)  SETB TI, 
d)  SETB RI. 

 
8.  Transmisja szeregowa podczas pracy portu w trybie 3 odbywa się według następującego 

protokołu: jest to transmisja : 

a)  synchroniczna, znak 8–bitowy, szybkość transmisji stała, 
b)  asynchroniczna, znaki 8–bitowe, szybkość transmisji

 

określona programowo, 

c)  asynchroniczna, znaki 9–bitowe, szybkość transmisji stała, 
d)  asynchroniczna, znaki 9–bitowe, szybkość transmisji określona programowo. 
 

9.  Jaki jest warunek rozpoczęcia odbioru danych przez port szeregowy pracujący w trybie 2 

po pojawieniu się bitu startu? 

a)  REN=1, RI=1, 
b)  REN=1, RI=0, 
c)  REN=0, RI=1, 
d)  REN=0, RI=0. 

 

10. Jakie będą dwa pierwsze bity, które pojawią się na wyjściu TxD po bicie startu podczas 

nadawania słowa A3H: 
a)  00, 
b)  01, 
c)  10, 
d)  11. 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

41

11. Który rozkaz spowoduje rozpoczęcie nadawania danej przez wyjście TxD: 

a)  SETB REN, 
b)  MOV A,SBUF, 
c)  MOV SBUF,A, 
d)  CLR REN. 

 

12. Jakim słowem należy zaprogramować przetwornik A/C, aby wykonać serię pomiarów z 

kanału 6? 
a)  ADCON=06H 
b)  ADCON=0EH 
c)  ADDAT=06H 
d)  ADDAT=0EH 

 

13. Jak jest wartość analogowa sygnału zmierzonego przetwornikiem A/C w 

mikrokontrolerze SAB80C835, gdy zawartości rejestrów: DAPR=0, ADDAT=99H, 
ADCON=0AH. Z jakiego kanału nastąpił pomiar? 
a)  3V, kanał 2, 
b)  2V, kanał 3, 
c)  3V, kanał 3, 
d)  2V, kanał 2. 

 

14. W jaki sposób programowo zatrzymać serię pomiarów w przetworniku A/C ? 

a)  CLR BSY, 
b)  SETB BSY, 
c)  CLR ADM, 
d)  SETB ADM. 

 

 
II część 

15. Zbocze opadające doprowadzone do wejścia P3.5 może spowodować inkrementację 

licznika T1 pod warunkiem, że do rejestru TMOD zostało wpisane następujące słowo: 
a)  00010000b, 
b)  01010000b, 
c)  00100000b, 
d)  00110000b. 
 

16. Jaka będzie zawartość licznika T0 po 5 ms, jeżeli jest do TMOD została wpisana wartość: 

00000101b, a do wejścia P3.4 został doprowadzony sygnał prostokątny częstotliwości 10 
kHz i wypełnieniu ½: 
a)  50, 
b)  25, 
c)  500, 
d)  250. 

 

 

 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

42

17. Port szeregowy odbiera dane 8–bitowe przez port szeregowy z szybkością 9600 bodów i 

zapisuje do pamięci IRAM od adresu 30H. Uzupełnij program: 

ORG 0: 
LJMP START 
 
ORG 100 

START:  MOV SCON,#.............b 

;zaprogramowanie portu szeregowego 

 

MOV 
TMOD,#00100000b 

;zaprogramowanie licznika T1 

 

MOV …….,#0FDH 

;ustalenie szybkości transmisji 

 

MOV R0,#30H 

;adres początku tablicy danych 

 

SETB EA 

;odblokowanie układu przerwań 

 

SETB…….. 

;odblokowanie przerwania od portu 
;szeregowego 

 

 

 

 

 

ORG 23H 

;podprogram obsługi przerwania 

 

  CLR ……… 

;skasowanie znacznika przerwania 

 

MOV @R0,……… 

;zapis odebranej danej do tablicy 

 

INC R0 

;zwiększenie adresu 

 

………….. 

;powrót z podprogramu obsługi 
;przerwania 

 

18. Na wyjściu P1.2 ma być wygenerowany przebieg o częstotliwości 1 kHz (f 

XTAL 

=12MHz) 

i  wypełnieniu  80%.  Licznik  T2  pracuje  w  trybie  autodoładowania  i  porównywania 
wartości  chwilowej.  Wartość  autodoładowywana  jest  przechowywana  w  rejestrze 
…….…. i wynosi ……….,a wartość porównywana w ….…. i wynosi………..  

 
19. W rejestrze IE jest wpisana wartość 99H, a w rejestrze IP wartość 10H. W przypadku 

jednoczesnego wystąpienia zgłoszeń od przepełnienia licznika T1, od portu szeregowego  
i obu przerwań zewnętrznych jako pierwsze zostanie obsłużone ………………………..., 
a przerwanie ……. … w ogóle nie zostanie obsłużone. Tylko przerwanie od …………… 
może przerwać obsługę innego przerwania.

 

 

20. Uzupełnij program pomiaru 5 napięć z kanału 3 w pełnym zakresie pomiarowym 

przetwornika A/C. Wyniki pomiaru mają być zapisane do IRAM od adresu 30H.

 

 

MOV………….,#00001011b 

;pomiar ciągły ADM=1, kanał 3 

 

MOV R0,#30h 

;adres początku tablicy 

 

MOV R7,#5 

;licznik pomiarów 

 

MOV DAPR,#............ 

;pełny zakres, start serii pomiarów 

POM: 

JB BSY,$ 

;oczekiwanie na zakończenie pomiaru 

 

MOV @R0,………… 

;zapis danej 

 

INC R0 

;zwiększenie adresu 

 

DJNZ R7,POM 

;następny pomiar 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

43

 

KARTA ODPOWIEDZI 

 
 

Imię i nazwisko …………………………………………………….. 

 
Badanie modułów wewnętrznych mikrokontrolera

 

 

 
Zakreśl poprawną odpowiedź lub wpisz brakujące części zdania. 

 

Nr 

zadania 

Odpowiedź 

Punkty 

1.   

 

2.   

 

3.   

 

4.   

 

5.   

 

6.   

 

7.   

 

8.   

 

9.   

 

10.  

 

11.  

 

12.  

 

13.  

 

14.  

 

15.  

 

16.  

 

17.  

 
 

 

18.  

 
 

 

19.  

 
 

 

20.  

 
 

 

background image

„Projekt współfinansowany ze środków Europejskiego Funduszu Społecznego” 

 

44

6. LITERATURA 

 

1. 

Dyrcz K., Kowalski C. T., Zarczyński Z.: Podstawy techniki mikroprocesorowej, 
Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław1999 

2. 

Janiczek J., Stępień A.: Mikrokontroler 80(C)51/52, Wydawnictwo Elektronicznych 
Zakładów Naukowych, Wrocław 1995 

3. 

Janiczek J., Stępień A.: Laboratorium systemów mikroprocesorowych cz. I i II, 
Wydawnictwo Elektronicznych Zakładów Naukowych, Wrocław 1995 

4. 

Rydzewski A.: Mikrokomputery jednoukładowe rodziny MCS–51,Wydawnictwa 
Naukowo– Techniczne, Warszawa 1992 

5. 

Starecki T.: Mikrokontrolery 8051 w praktyce, Wydawnictwo BTC, Warszawa 2002