LAB syst przerwan

background image


Politechnika Poznańska

Wydział Elektroniki i Telekomunikacji














MIKROKONTROLER 8051


System przerwań 8051




















Poznań 2009

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


1

Wstęp teoretyczny

Mikrokontroler 8051 jest wyposażony w wieloźródłowy system obsługi przerwań o dwóch

priorytetach z możliwością zagnieżdżania.

Mikroprocesor akceptuje żądania przerwania z pięciu źródeł. Są nimi: dwa zewnętrzne

urządzenia zgłaszające przerwania przez wejścia INT0 i INT1, po jednym przerwaniu od

każdego z dwóch układów timerów oraz jedno przerwanie od portu szeregowego. Każde

przerwanie ma przydzielony adres, pod którym powinna być umieszczona procedura

obsługi. Każdemu z pięciu przerwań może być przydzielony jeden z dwóch poziomów

priorytetów, ponadto każde z przerwań może być niezależnie blokowane. Przerwania

zewnętrzne mogą być zaprogramowane na zgłaszanie poziomem lub zboczem sygnału.

Aktywny jest poziom niski.

Wektor adresów procedur obsługi przerwań przedstawia poniższa tabela

źródło przerwania

adres obsługi przerwania

przerwanie zewnętrzne 0

3H

wewnętrzny timer 0

0BH

przerwanie zewnętrzne 1

13H

wewnętrzny timer 1

1BH

wewnętrzny port szeregowy

23H

Na skutek żądania przerwania ustawiane są odpowiednie wskaźniki w rejestrach TCON i

SCON. Wskaźniki żądań przerwań zawiera kolejna tabela.

źródło przerwania

nazwa flagi

lokalizacja

przerwanie zewnętrzne 0

IE0

TCON.1

wewnętrzny timer 0

TF0

TCON.5

przerwanie zewnętrzne 1

IE1

TCON.3

wewnętrzny timer 1

TF1

TCON.7

wewnętrzny port szeregowy

TI

SCON.1

wewnętrzny port szeregowy

RI

SCON.0

Dane przerwanie zostanie obsłużone jeśli odpowiadający mu bit będzie ustawiony i jeśli

nie ma żądania przerwania o wyższym priorytecie.

Bity zezwoleń na przerwania zawarte w rejestrze przerwań IE przedstawia tabela.

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


2

IE7

IE6

IE5

IE4

IE3

IE2

IE1

IE0

EA

-

-

ES

ET1

EX1

ET0

EX0

EA - ogólne zezwolenie na przerwania

ES - zezwolenie na przerwanie transmisji szeregowej

ET1 - zezwolenie na przerwanie z timera 1

EX1 - zezwolenie na przerwanie z wejścia INT1

ET0 - zezwolenie na przerwanie z timera 0

ETX - zezwolenie na przerwanie z wejścia INT0

Poszczególne źródła przerwań mają przyznawane poziomy priorytetów jako wyższe lub

niższe przez ustawienie odpowiednich bitów w rejestrze priorytetu przerwań IP.

Ustawiając te bity w stan 1, przyznawany jest danemu przerwaniu wyższy priorytet. Flagi

poziomów przerwań zawiera kolejna tabela.

źródło przerwania flaga priorytetu

priorytet wewnątrz

poziomu

lokalizacja

zarezerwowane

-

IP.7

zarezerwowane

-

IP.6

zarezerwowane

-

IP.5

port szeregowy

PS

.4 (najniższy)

IP.4

timer 1

PT1

.3

IP.3

INT1

PX1

.2

IP.2

timer0

PT0

.1

IP.1

INT0

PX0

.0 (najwyższy)

IP.0

Zewnętrzne żądania przerwań zgłaszane poprzez wejścia INT0 i INT1 mogą być

zaprogramowane jako wejścia sygnalizujące zboczem lub poziomem impulsu. Zasady

reakcji na poszczególne sygnały żądań przerwań są zapisane na odpowiednich bitach

rejestru TCON.

funkcja

nazwa bitu

lokalizacja

flaga żądania zewnętrznego przerwania 1

IE1

TCON.3

sposób działania wejścia INT1

IT1

TCON.2

flaga żądania zewnętrznego przerwania 0

IE0

TCON.1

sposób działania wejścia INT0

IT0

TCON.0

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


3

Przebieg ćwiczenia

1.) Przeanalizuj działanie przedstawionego poniżej programu. Program ten wykorzystuje

sygnały przerwań generowane przez timery.

;************************************************
; TIMERY
;************************************************

LED

EQU

P1.7


;********* Ustawienie TIMERÓW *********
;TIMER 0
T0_G

EQU

0

;GATE

T0_C

EQU

0

;COUNTER/-TIMER

T0_M

EQU

1

;MODE (0..3)

TIM0

EQU

T0_M+T0_C*4+T0_G*8

;TIMER 1
T1_G

EQU

0

;GATE

T1_C

EQU

0

;COUNTER/-TIMER

T1_M

EQU

0

;MODE (0..3)

TIM1

EQU

T1_M+T1_C*4+T1_G*8


TMOD_SET

EQU

TIM0+TIM1*16


;50[ms] = 50 000[ms]*(11.0592[MHz]/12) =
; = 46 080 cykli = 180 * 256
TH0_SET

EQU

256-180

TL0_SET

EQU

0

;**************************************

LJMP START

;********* Przerwanie Timer 0 *********
ORG

0BH

MOV

TH0,#TH0_SET

;TH0 na 50ms

DJNZ ACC,NO_1SEK

;czy minęła 1 sek


CPL

LED

;mruganie diody TEST

MOV

A,#20

;odczekaj kolejny czas

;20*50ms=1s

NO_1SEK:
RETI

;**************************************
ORG

100H

START:

MOV

TMOD,#TMOD_SET

;Timer 0 liczy czas

MOV

TH0,#TH0_SET

;Timer 0 na 50ms

MOV

TL0,#TL0_SET

SETB TR0

;start Timera 0

MOV

A,#20

;odczekaj czas 20*50ms=1s


SETB EA

;włącz zezwolenie ogólne

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


4

;na przerwania

SETB ET0

;włącz zezwolenie na

;przerwanie od Timera 0


SJMP $

;koniec pracy

;programu głównego

Zmodyfikuj ten program tak by odliczanie do 20 nie odbywało się w akumulatorze.

Napisz program w ten sposób by sterowanie diodą LED odbywało się przy jednoczesnej

możliwości czytania przez mikrokontroler znaków z klawiatury i wyświetlania ich na

wyświetlaczu LCD (wykorzystaj procedury systemu DSM-51).

2.) Zapoznaj się z program przedstawionym poniżej. Jego głównym zadaniem jest

przeglądanie wyświetlacza 7-segmentowego i klawiatury.

Zmodyfikuj go przenosząc obsługę wyświetlacza 7-segmentowego do procedury obsługi

przerwania.

;************************************************
; ODCZYT KLAWIATURY
;************************************************

SEG_ON EQU

P1.6

;włączenie wyświetlacza 7-segm.

LED

EQU

P1.7

KEY

EQU

P3.5

;odczyt klawiatury


;Pamięć wewnętrzna RAM
DISPLAY

EQU

30H

KEY_LAST

EQU

DISPLAY+6


LJMP START
ORG

100H

START:

CLR

A

MOV

DISPLAY,A

;wpisz 0 do pamięci

MOV

DISPLAY+1,A

;danych wszystkich

MOV

DISPLAY+2,A

;wskaźników

MOV

DISPLAY+3,A

MOV

DISPLAY+4,A

MOV

DISPLAY+5,A

MOV

DISPLAY+6,A


LOOP_DISP:

;ustaw dane do wyśw.

;na wskaźniku 1

MOV

R0,#DISPLAY ;adres pobierania kodów

MOV

R2,#7

;licznik - liczba wskaź.

MOV

R3,#00000001B ;wybór wskaźnika

;- kod 1 z 8


LOOP:
SETB SEG_ON

;wyłącz poprzedni

;wskaźnik

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


5

MOV

R1,#CSDS

;adres wyboru wskaźnika

MOV

A,R3

;nr wskaźnika (1z8)

MOVX @R1,A

;wpisz wybrany wskaźnik


MOV

R1,#CSDB

;adres danych wskaźnika

MOV

A,@R0

;dane wskaźnika

CJNE

R3,#01000000B,SEG

;czy 7 wskaźnik

SJMP LEDS

;tak-diody świecące

;nie ma zamiany na kod

SEG:
LCALL GET_COD7

;zamiana cyfry na kod

LEDS:
MOVX @R1,A

;wpisanie kodu zapalanych

;segmentów do buforu

;danych wskaźnika

CLR

SEG_ON

;włączenie wskaźnika


MOV

C,KEY

;wstępny odczyt klawisza

MOV

A,#1

;odczekanie 1ms-świecenie

LCALL DELAY_MS

;jednego wskaźnika


JC

KEY_ON

;kontrola jednoznaczności

JB

KEY,KEY_END ;odczytu klawisza


KEY_OFF:
MOV

A,R3

;klawisz zwolniony

CPL

A

ANL

KEY_LAST,A ;zeruj odpowiedni bit

SJMP KEY_END

KEY_ON:
JNB

KEY,KEY_END

MOV

A,R3

;klawisz naciśnięty

ANL

A,KEY_LAST

JNZ

KEY_END

;klawisz był naciśnięty

;bez reakcji


MOV

A,R3

;klawisz był zwolniony

ORL

KEY_LAST,A ;ustaw odpowiedni bit

INC

@R0

;zwiększ licznik

;naciśnięć - liczbę na

;odpowiednim wskaźniku

KEY_END:
MOV

A,R3

RL

A

;numeru następnego

MOV

R3,A

;wskaźnika (kod 1 z 8)

INC

R0

;adres danych następnego

;wskaźnika


DJNZ R2,LOOP

;kolejne świecenie

;siedmiu wskaźników

SJMP LOOP_DISP

;zacznij od wskaźnika 1


;**************************************
;Podprogram zamienia cyfrę na kod 7-segmentowy
GET_COD7:
ANL

A,#0FH

;tabela kodów 0..15

INC

A

;pomiń rozkaz RET

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


6

MOVC A,@A+PC

;pobierz kod

RET

COD_7SEG:
DB

03FH

;kod znaku 0

DB

006H

;kod znaku 1

DB

05BH

;kod znaku 2

DB

04FH

;kod znaku 3

DB

066H

;kod znaku 4

DB

06DH

;kod znaku 5

DB

07DH

;kod znaku 6

DB

007H

;kod znaku 7

DB

07FH

;kod znaku 8

DB

06FH

;kod znaku 9

DB

077H

;kod znaku A

DB

07CH

;kod znaku b

DB

039H

;kod znaku C

DB

05EH

;kod znaku d

DB

079H

;kod znaku E

DB

071H

;kod znaku F

3.) Zmodyfikuj program z poprzedniego polecenia w ten sposób by dane odczytywane z

klawiatury matrycowej były wypisywane zarówno na wyświetlaczu LCD jak i na

wyświetlaczu 7-segmentowym.

4.) Korzystając z programów z punktów 2.) i 3.) napisz program przeglądający wyświetlacz

i klawiaturę w przerwaniu. Reakcję na użycie klawisza należy przekazać do programu

głównego.

5.) Zapoznaj się z treścią programu przedstawionego poniżej, uruchom go. W wyniku

działania programu można zauważyć wyraźnie zakłócone wyświetlanie na wyświetlaczu 7-

segmentowym, co jest tego przyczyną? Usuń przyczynę wadliwego działania tego

programu.

;************************************************
; PRIORYTETY PRZERWAŃ
;************************************************

LED

P1.7

SEG_ON

EQU

P1.6

;włączenie wyśw.7-segm.


;******* Pamięć wewnętrzna RAM ********
DISPLAY

EQU

30H

;pamięć danych dla wyśw.

LEDY

EQU

DISPLAY+6

;pamięć danych dla diod

TIME

EQU

LEDY+1

;licznik czasu mrugania


STOS

EQU

60H


;********* Ustawienie TIMERÓW *********
;TIMER 0
T0_G

EQU

0

;GATE

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


7

T0_C

EQU

0

;COUNTER/-TIMER

T0_M

EQU

1

;MOD (0..3)

TIM0

EQU

T0_M+T0_C*4+T0_G*8

;TIMER 1
T1_G

EQU

0

;GATE

T1_C

EQU

0

;COUNTER/-TIMER

T1_M

EQU

1

;MOD (0..3)

TIM1

EQU

T1_M+T1_C*4+T1_G*8


TMOD_SET

EQU

TIM0+TIM1*16


TH1_SET

EQU

256-4

;czas 4*256 = 1024 cykle

;= ok.1ms


;************** MACRA *****************
BANK0 MACRO

;ustawienie banku 0 rejestrów

CLR

RS0

;(z banku 1)

MACEND

BANK1 MACRO

;ustawienie banku 1 rejestr˘w

SETB RS0

;(z banku 0)

MACEND
;**************************************

LJMP START

;********* Przerwanie Timer 0 *********
ORG

0BH

JNB

TF0,$

;oczekiwanie przez pełen

;okres timera - ok.71ms

CLR

TF0

DJNZ TIME,NO_1SEK
MOV

TIME,#7

CPL

LED

NO_1SEK:
RETI

;********* Przerwanie Timer 1 *********
ORG

1BH

PUSH PSW
PUSH ACC
BANK1

;użycie banku 1 rejestrów


MOV

TH1,#TH1_SET ;ustawienie TH1 na 1ms


SETB SEG_ON

;wyłączenie wskaźnika


MOV

A,R3

;aktualny wskaźnik (1z8)

MOVX @R1,A

;wpisz do bufora wyboru


INC

R1

;adres bufora danych

MOV

A,@R0

;dane dla wskaźnika

CJNE

R3,#40H,SEG

;czy 7 wskaźnik

SJMP LEDS

;tak-diody-nie ma zamiany

SEG:
ACALL GET_COD7

;zamiana danych na kod

LEDS:
MOVX @R1,A

;wpisanie kodu segmentów

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


8


CLR

SEG_ON

;włączenie wskaźnika

DEC

R1

;adres bufora wyboru


MOV

A,R3

RL

A

;następny wskaźnik (1z8)

MOV

R3,A

INC

R0

;adres danych dla

;następnego wskaźnika


DJNZ R2,INT_END

;czy ostatni wskaźnik

;tak - ustaw dane dla 1

MOV

R0,#DISPLAY ;adres danych

MOV

R3,#1

;wybór wskaźnika-kod 1z8

MOV

R2,#7

;liczba wskaźników


INT_END:

;zakończenie przerwania

POP

ACC

POP

PSW

RETI

;**************************************
GET_COD7:
ANL

A,#0FH

;tabela kodów 0..15

INC

A

;ominięcie rozkazu RET

MOVC A,@A+PC

;pobranie kodu z tabeli

RET

COD_7SEG:
DB

03FH

;kod znaku 0

DB

006H

;kod znaku 1

DB

05BH

;kod znaku 2

DB

04FH

;kod znaku 3

DB

066H

;kod znaku 4

DB

06DH

;kod znaku 5

DB

07DH

;kod znaku 6

DB

007H

;kod znaku 7

DB

07FH

;kod znaku 8

DB

06FH

;kod znaku 9


DB

000H

;kod pusty (10)

DB

000H

;kod pusty (11)

DB

000H

;kod pusty (12)

DB

000H

;kod pusty (13)

DB

000H

;kod pusty (14)

DB

000H

;kod pusty (15)


;**************************************
ORG

100H

START:
MOV

SP,#STOS


MOV

DISPLAY,#6

;wpisanie kolejnych

MOV

DISPLAY+1,#5

;cyfr na wskaźniki

MOV

DISPLAY+2,#4

MOV

DISPLAY+3,#3

MOV

DISPLAY+4,#2

MOV

DISPLAY+5,#1

background image

Politechnika Poznańska, Wydział Elektroniki i Telekomunikacji
System przerwań

__________________________________________________________________________________________________________


9


BANK1

;rejestry banku1

;dla obsługi wyświetlacza

MOV

R0,#DISPLAY ;adres danych

MOV

R1,#CSDS+7

;adres wyboru wskaźnika

;z możliwością zamiany na

;adres danych wskaźnika

MOV

R2,#7

;liczba wskaźników

MOV

R3,#1

;wybór wskaźnika-kod 1z8

BANK0

MOV

TMOD,#TMOD_SET

;Timery liczą czas

MOV

TH1,#TH1_SET

;Timer 1 na 1ms

CLR

A

MOV

TL1,A

MOV

TH0,A

;Timer 0 na ok.71ms

MOV

TL0,A

SETB TR0

;start timerów

SETB TR1
MOV

TIME,#7


SETB EA

;zezwolenie na przerwanie

SETB ET0

;od timerów

SETB ET1

MOV

LEDY,#20H

;dioda 'Error'


LCALL LCD_CLR
MOV

DPTR,#TEXT

LCALL WRITE_TEXT

LOOP:

;zmiana priorytetu przerwania

;Timera 1


LCALL WAIT_ENT_ESC
JNC

HIGH_PRIOR

CLR

PT1

;Esc->niski priorytet

MOV

LEDY,#20H

;dioda 'Error'

SJMP LOOP

HIGH_PRIOR:
SETB PT1

;Enter->wysoki priorytet

MOV

LEDY,#10H

;dioda 'OK'

SJMP LOOP

TEXT:
DB

'ENTER -> T0 HP '

DB

'ESC -> T0 LP ',0


Wyszukiwarka

Podobne podstrony:
LAB syst przerwan
spr-122, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
laborka37, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdani
spr122, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
LAB122, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
spis lab I sem 2010
III WWL DIAGN LAB CHORÓB NEREK i DRÓG MOCZ
Diagnostyka lab wod elektrolit
ZW LAB USTAWY, OCHRONA
LAB PROCEDURY I FUNKCJE
Proj syst log wykl 6
syst tr 1 (2)TM 01 03)13
sprzet lab profilografy
sprzet lab mikromanometry
Mechanika Plynow Lab, Sitka Pro Nieznany
Lab 02 2011 2012

więcej podobnych podstron