przerwania timery

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

Ćw. 4. Symulacja działania mikrokontrolerów 8051.

Timery, liczniki i system przerwań.

Opracowanie: mgr inż. Michał Lankosz

1. Wprowadzenie

Celem ćwiczenia jest poznanie działania systemu przerwań oraz liczników - czasomierzy
w mikrokontrolerach rodziny 8051.

2. Niezbędne wiadomości

Architektura i lista rozkazów 8051, w szczególności:

-

mapa pamięci wewnętrznej RAM

-

znaczenie początkowych adresów pamięci programu

-

wykorzystanie stosu

-

działanie przerwań sprzętowych

-

ź

ródła sygnałów przerwań

-

priorytety przerwań

-

struktura i działanie układów czasowo-licznikowych

3. Podstawy

3.1.Przerwania

Przerwania umożliwiają szybkie reagowanie na zdarzenia zewnętrzne bez zbędnego angażowania
programu głównego do sprawdzania stanu wybranych układów peryferyjnych.
Działanie systemu przerwań opiera się na zbiorze flag, które są ustawiane w chwili wystąpienia
danego zdarzenia. Aby konkretne przerwanie zostało zgłoszone musi być ono odblokowane poprzez
ustawienie bitu w rejestrze IE odpowiadającego temu przerwaniu. Rejestr ten zawiera również bit
EA - globalnego zezwolenia na przerwania. On także musi być ustawiony. Obrazowy schemat
ułatwiający odpowiednią konfigurację przerwań przedstawiono na rysunku 1.

Od momentu zgłoszenia przerwania do chwili jego podjęcia (rozpoczęcia wykonywania procedury
obsługi przerwania) mija pewien czas, który zależy od aktualnie wykonywanego rozkazu lub
obsługiwanego przerwania. Jest to spowodowane tym, że aktualnie wykonywany rozkaz nie może
być przerwany. Jak wynika z czasów wykonywania rozkazów opóźnienie może trwać do trzech
cykli maszynowych. Dodatkowe opóźnienie może wprowadzić bieżąca obsługa przerwania
o wyższym priorytecie, która musi się zakończyć.

Podjęcie obsługi przerwania polega na zapamiętaniu na stosie adresu następnego po bieżącym
rozkazu programu głównego lub procedury obsługi przerwania o priorytecie niższym niż
podejmowane, a następnie wykonaniu skoku pod ściśle określony adres w pamięci programu.
Każdemu przerwaniu przyporządkowany jest inny adres (Tabela 1).

Każda procedura obsługi przerwania musi się zakończyć rozkazem RETI, który powiadamia system
przerwań o zakończeniu obsługi bieżącego przerwania i odtwarza wartość licznika rozkazów PC
ze stosu.

1

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

Przykładowy szkielet programu korzystający z przerwania zewnętrznego INT1.

CSEG AT 0
AJMP start

po resecie wykonujemy skok do pocz

ą

tku programu

CSEG AT 13h

pod adresem 13h z pami

ę

ci programu umieszczamy

AJMP Obsluga_int1

instrukcj

ę

skoku do procedury obsługi przerwania

CSEG AT 30h
start:

program główny zaczyna si

ę

od adresu 30h

.

(za tablic

ą

wektorów przerwa

ń

)

.

Konfiguracja układu przerwa

ń

:

SETB IT1

przerwanie INT1 aktywowane zboczem

SETB EX1

zezwolenie na zewn

ę

trzne przerwanie INT1

SETB EA

globalne odblokowanie przerwa

ń

loop:
.
.

główna p

ę

tla programu

AJMP loop

Obsluga_int1:

procedura obsługi przerwania

.
.
RETI

END

Uwaga!

Należy pamiętać o tym, że program główny może być przerwany w dowolnym momencie. Jeśli
zarówno program główny jak i procedura przerwania wykorzystuje ten sam rejestr w sposób jawny
(np.

mov A,#5

– modyfikuje akumulator) lub niejawny (np.

cjne R2,#5,loop

- modyfikuje

PSW), może dojść do wadliwego działania programu. W celu uniknięcia konfliktów wykorzystania
zasobów najczęściej w procedurze obsługi przerwania zachowuje się na stosie zawartości
wszystkich używanych w niej rejestrów. Dodatkowym ułatwieniem dla programisty są przełączalne
banki rejestrów ogólnego przeznaczenia. Wystarczy, że w procedurach obsługi przerwań będą
wykorzystywane różne zestawy rejestrów. Wówczas nie ma konieczności zachowywania ich na
stosie.

Poniżej pokazano przykład użycia stosu do zapamiętania słowa stanu i akumulatora.

Obsluga_INT:

;procedura

PUSH PSW

;zapami

ę

tanie rejestrów

PUSH ACC
MOV A,P1
XRL A,#55h
ADD A,#1
MOV P2,A
POP ACC

;odtworzenie rejestrów

POP PSW
RETI ;zako

ń

czenie procedury


END

2

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

3.2.

Liczniki - timery

Podstawowa wersja mikrokontrolera 8051 posiada w swojej strukturze dwa programowalne układy
licznikowe - T0 i T1. Każdy z nich składa się z dwóch 8-bitowych rejestrów: THx, TLx (x oznacza
0 lub 1).
Na rysunkach 2 i 3 przedstawiono strukturę połączeń trzech z czterech różnych trybów pracy
liczników. W trybie 0 i 1 THx i TLx są połączone kaskadowo w licznik 16-to bitowy, natomiast
w trybie 2 8-mio bitowa część TLx jest ładowana wartością zapisaną w THx zawsze w momencie
przepełnienia TLx.
Ź

ródłem impulsów dla liczników może być sygnał podawany z zewnątrz (zliczanie impulsów) lub

zegar taktujący mikroprocesor (odmierzanie czasu). W chwili przepełnienia licznika ustawiana jest
flaga TFx.
Flagi przepełnień zgłaszają przerwania. Jeśli są odpowiednio ustawione bity zezwolenia ETx
rejestru IE i priorytetu PTx rejestru IP wówczas będzie podejmowane przerwanie związane
z przepełnieniem danego licznika. Flaga jest zerowana sprzętowo w chwili przejścia do procedury
obsługi przerwania.
Odpowiedni tryb pracy liczników ustawia się za pomocą rejestrów TCON i TMOD.

4. Zadanie do wykonania

Należy przeanalizować pracę mikrokontrolera poprzez wykonanie symulacji krokowej na
podstawie programów cw4p1.asm oraz cw4p2.asm.

4.1. Program cw4p1.asm

CSEG AT 0
AJMP reset

CSEG AT 03h
AJMP INT0service

; skok do procedury obsługi przerwania
; zewn

ę

trznego INT0

CSEG AT 30h

reset:

SETB

EX0

; wlaczenie przerwania INT0

SETB

EA

; odblokowanie wszystkich przerwan

loop:

ACALL delay

; przykładowy program główny

CPL

P2.7

SJMP

loop

INT0service:

; procedura obslugi przerwania INT0

;PUSH ACC

; zapami

ę

tanie akumulatora

;PUSH PSW

; i rejestru stanu

CPL

P2.0

;POP

PSW

;POP

ACC

RETI

; powrót z przerwania

delay:

MOV

R0,#100

del2:

MOV

R1,#255

del1:

3

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

NOP
NOP
DJNZ R1,del1
DJNZ R0,del2
RET
END

a) Sprawdź działanie programu w symulatorze. Przerwanie należy uaktywnić przez ustawienie

0 na wejściu Pins portu P3 – bit 2. Następnie sprawdzić działanie rzeczywistego układu.
W tym przypadku przerwanie jest aktywowane wciśnięciem przycisku S2.

b) Dopisz procedurę obsługi przerwania zewnętrznego INT1 i odpowiednio skonfiguruj

rejestry kontrolne. Sprawdź jak będzie wykonywany program:

w przypadku wystąpienia jednocześnie obu sygnałów przerwań

podczas wykonywania obsługi przerwania INT0 sygnał przerwania INT1 znika na kilka
cykli rozkazowych przed rozkazem RETI obsługi INT0

c) Zmień priorytet przerwania INT1 na wyższy

sprawdź oba podpunkty pytania b)

zamień priorytety INT0 i INT1 na przeciwne i sprawdź podpunkty pytania b)

d) Zmień sposób reakcji na przerwania zewnętrzne tak, aby były one wyzwalane zboczem

opadającym.

4.2. Program cw4p2.asm

CSEG AT 0
AJMP reset

CSEG AT 30h

reset:

MOV

TMOD,#00000010b

; tryb 2 licznik sygnału taktuj

ą

cego

MOV

TH0,#-25

; załadowanie warto

ś

ci pocz

ą

tkowej

SETB

TR0

; podł

ą

czenie sygnału do licznika

loop:

ACALL delay

; przykładowy program główny

CPL

P2.7

JBC

TF0,Przelacz

; sprawdzenie flagi przepełnienia timera

SJMP

loop

Przelacz:

CPL

P2.0

; zmiana stanu linii portu na przeciwny

SJMP

loop

delay:

MOV

R0,#2

del2:

DJNZ R0,del2
RET
END

Podczas symulacji zaobserwuj reakcję na wystawienie flagi przepełnienia licznika.
W zamiarze program ma zmieniać stan wyprowadzenia portu P2.0 w stałych, ściśle określonych
interwałach czasowych wyznaczanych przez czasomierz T0. Przy okazji mają być realizowane
dodatkowe zadania nie krytyczne w czasie.

4

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

a) Czy zmiana stanu P2.0 odbywa się w regularnych chwilach czasowych? Korzystając

z wykresu analizatora stanów debuggera zmierz kilka przedziałów czasowych pomiędzy
zmianami stanu P2.0, a także pomiędzy kolejnymi ustawieniami (zbocze narastające) flagi
TF0 (TCON.5). Odpowiedź uzasadnij.

b) Zmodyfikuj program tak, aby w momencie przepełnienia licznika następowało przerwanie,

a zmiana stanu p2.0 odbywała się w procedurze jego obsługi. Zaobserwuj jak w punkcie a)
Jaki jest sens stosowania przerwań?

c) Napisz program, który będzie zliczać sekundy. Niech zmienna sekund będzie prezentowana

w postaci binarnej za pomocą diod świecących podłączonych do portu P2. Użyj systemu
przerwań i odpowiedni licznik-timer w wybranym trybie wiedząc, że mikrokontroler jest
taktowany zegarem 11.0592MHz, a zatem jeden cykl maszynowy trwa około 1,08507 µs.
Zliczanie sekund ma poprawnie działać niezależnie od złożoności programu głównego.

5

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

5. Dodatek

Rys.1. Schemat blokowy systemu przerwań 8051

Adresy, od których zaczyna się wykonywanie programów obsługi przerwań:

03h

zewnętrzne z wejścia /INT0

0Bh

licznik T0 układu czasowo-licznikowego

13h

zewnętrzne z wejścia /INT1

1Bh

licznik T1 układu czasowo-licznikowego

23h

zdarzenie portu szeregowego

6

____
INT0

IT0

0

1

EX0

EA

TF0

IE0

____
INT1

IT1

0

1

EX1

ET1

TF1

IE1

ES

RI

TI

ET0

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

Rejestry specjalne – znaczenie poszczególnych bitów

TCON

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TFx

-

znacznik przepełnienia licznika Tx, ustawiany sprzętowo, zerowany przy przyjęciu
przerwania

TRx -

bit sterujący zliczaniem licznika Tx, „1” zapewnia podłączenie sygnału zliczającego do
licznika

IEx

-

znacznik zgłoszenia przerwania zewnętrznego /INTx ustawiany sprzętowo, zerowany
przy przyjęciu przerwania

ITx

-

bit określający wyzwalanie przerwania poziomem niskim na /INTx „0” lub zboczem „1”

IE

EA

-

-

ES

ET1 EX1 ET0

EX0

EA

-

bit maski systemu przerwań

ES

-

bit maski przerwania z portu szeregowego

ET1

-

bit maski przerwania z licznika-czasomierza T1

EX1 -

bit maski przerwania zewnętrznego /INT1

ET0

-

bit maski przerwania z licznika-czasomierza T0

EX0 -

bit maski przerwania zewnętrznego /INT0

bit=1 – przerwanie dozwolone
bit=0 – przerwanie zablokowane

IP

-

-

-

PS

PT1 PX1 PT0

PX0

PS

-

bit priorytetu przerwania z portu szeregowego

PT1

-

bit priorytetu przerwania z licznika-czasomierza T1

PX1

-

bit priorytetu przerwania zewnętrznego /INT1

PT0

-

bit priorytetu przerwania z licznika-czasomierza T0

PX0

-

bit priorytetu przerwania zewnętrznego /INT0

bit=1 – przerwanie o wyższym priorytecie
bit=0 – przerwanie o niższym priorytecie

TMOD

licznik T1

licznik T0

GATE

C/T

M1

M0

GATE

C/T

M1

M0

GATE

-

uaktywnienie bramkowania licznika

GATE=0

-

licznik Tx pracuje gdy TRx=1

GATE=1

-

licznik Tx pracuje gdy TRx=1 i /INTx=1

C/T

-

określa funkcję licznika Tx

C/T=0

-

czasomierz taktowany wewnętrznym zegarem f

XTAL

/12

C/T=1

-

licznik impulsów zewnętrznych z wejścia Tx

M1, M0

-

tryb pracy licznika Tx

7

background image

POLITECHNIKA KRAKOWSKA – INSTYTUT TELEINFORMATYKI

Mikroprocesory i mikrokontrolery

M1

M0 tryb

0

0

0

8-bitowy licznik THx taktowany poprzez 5-bitowy dzielnik TLx

0

1

1

16-bitowy licznik THx.TLx

1

0

2

8-bitowy licznik TLx z automatycznym wpisywaniem wartości
początkowej z THx

1

1

3

T0 – dwa niezależne liczniki 8-bit: TL0 sterowany bitami licznika T0
i TH0 sterowany bitami licznika T1; licznik T1 zatrzymany

a)

b)

Rys. 2. Schemat blokowy działania liczników T0 i T1 w trybie 0 i 1 (a) i w trybie 2 (b)

8

C/T

0

1

TFx

f

XTAL

/12

/INTx
wyprowadzenie
portu P3

TRx

GATE

Tx
wyprowadzenie
portu P3

TLx

THx

C/T

0

1

TFx

f

XTAL

/12

/INTx
wyprowadzenie
portu P3

TRx

GATE

Tx
wyprowadzenie
portu P3

TLx

THx

wpis


Wyszukiwarka

Podobne podstrony:
13 programowalny kontroler przerwan 8259
CW 06 B przerw
ADA wyjatki przerw3
przerwania urz peryf
Twórczość Kazimierza Przerwy -Tetmajera, Szkoła, Język polski, Wypracowania
Jak przerwać wykonywanie pętli (for, PHP Skrypty
przerwa
przerwan
111-4, materiały studia, 111. WYZNACZANIE SZEROKOŚCI PRZERWY ENERGETYCZNEJ W PÓŁPRZEWODNIKU METODĄ T
kospekt12, Elektrotechnika AGH, Semestr II letni 2012-2013, Fizyka II - Laboratorium, 12 Wyznaczanie
PRZERWANIE CIĄŻY DO 9 TYGODNIA, Wszechnica Świętokrzyska, praca, seminarium
spr-122, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
SPRAWKO przerwania
iden przerw czasowych
lab122 przerwa energetyczna w germanie

więcej podobnych podstron