Obsługa portów I/O mikrokontrolera rodziny MCS-51.

Transkrypt

Obsługa portów I/O mikrokontrolera rodziny MCS-51.
Zachodniopomorski
Uniwersytet
Technologiczny
WYDZIAŁ ELEKTRYCZNY
Zakład Cybernetyki i Elektroniki
LABORATORIUM
TECHNIKA MIKROPROCESOROWA
PORTY MIKROKONTROLERA
MCS’51
Opracował:
mgr in . Andrzej Biedka
Ŝ
Porty
równoległe
s
podstawowymi
urz dzeniami
wej cia/wyj cia
systemów
mikroprocesorowych. Przeznaczone s przykładowo do transmisji informacji w postaci
równoległej, binarnego sterowania w urz dzeniach przemysłowych, komunikacji wizualnej z
operatorem, przyjmowania informacji z przycisków, klawiatur. Najcz ciej porty zorganizowane
s w grupy linii o długo ci słowa zgodnej ze słowem mikroprocesora, np. 8 linii dla urz dze
8-bitowych. W wiczeniu wykorzystywany jest port P2 mikrokontrolera z rodziny 8051
wyposa ony w diodowe wska niki stanu logicznego i do niego b d si odnosi wszystkie
przykłady.
ą
ą
ś
ś
ą
ą
ę
ą
ś
ś
ą
ń
ć
Ŝ
ź
ę
ą
ę
ć
Najprostszy program prezentuj cy wysyłanie bajtu danych przez port równoległy ma posta :
ą
ć
1; LISTING 1-1
2; Program wysyłania jednego bajtu do portu P2
3
4
ORG
0
5
6
MOV
P2, #1
; wy lij do portu P2 bajt 00000001B
7
8 KONIEC:
9
SJMP KONIEC ; martwa p tla „zatrzymuj ca” program
10
11
END
ś
ę
ą
Wynikiem uruchomienia powy szego programu b dzie wyzerowanie bitów P2.7 – P2.1 oraz
ustawienie bitu P2.0. Stan ten b dzie sygnalizowany wieceniem diody LED opisanej P2.0.
P tla umieszczona w liniach 8 i 9 listingu 1-1 powoduje zamkni cie programu w rozkazie „skocz
pod własny adres”, uniemo liwiaj c pobranie nast pnych bajtów z pami ci programu, których
stan jest nieokre lony – napisany program ko czy si bowiem na rozkazie w linii 9.
Ŝ
ę
ę
ś
ę
ę
Ŝ
ą
ę
ś
ń
ę
ę
Wygodniejsz form zapisu p tli zatrzymuj cej prac programu jest wykorzystanie
symbolu $, interpretowanego przez program asemblera jako ‘bie ca zawarto
licznika
rozkazów (PC)’. Zatem rozkaz:
ą
ą
ę
ą
ę
Ŝ
ą
SJMP $
nale y rozumie jako skocz pod własny adres.
Ŝ
ć
Program z wykorzystaniem tego symbolu przedstawiony jest na listingu 1-2:
1; LISTING 1-2
2; Program wysyłania jednego bajtu do portu P2
3
4
ORG
0
5
6
MOV
P2, #1
; wy lij do portu P2 bajt 00000001B
7
8
SJMP $
; martwa p tla „zatrzymuj ca” program
9
10
END
ś
ę
2
ą
ś
ć
Nast pnym programem b dzie program cyklicznej zmiany stanu bitu 0 portu P2, czyli inaczej
linii P2.0.
Algorytm programu ma posta nast puj c :
ę
ę
ć
ę
ą
ą
START
Wy lij bajt 00000010
ś
Wy lij bajt 00000011
ś
Rys. 1-1
Kod programu odpowiadaj cy temu algorytmowi przedstawia poni szy listing:
Ŝ
ą
1; LISTING 1-3
2; Program cyklicznej zmiany stanu bitu P2.0
3
4
ORG
0
5
6 PETLA:
7
MOV
P2, #00000011B ; wy lij bajt do portu P2
8
MOV
P2, #00000010B ; wy lij bajt do portu P2
8
SJMP PETLA
; powtórz p tl
9
10
END
ś
ś
ę
ę
W programie wysyłane s na zmian bajty maj ce zawsze ustawiony bit P2.1 i zmieniaj cy si
bit P2.0. Bity P2.2 – P2.7 s wyzerowane. Po uruchomieniu programu zaobserwujemy wiecenie
diody P2.1 pełn jasno ci oraz diody P2.0 mniejsz jasno ci . Mniejsza jasno diody P2.0
wynika z cyklicznego jej wł czania i wył czania, zatem redni pr d płyn cy przez t diod LED
jest mniejszy ni pr d płyn cy przez diod P2.1. Przebiegi czasowe pr du diody przedstawione
s na rysunku 1-2.
ą
ę
ą
ą
ą
ą
ś
ą
ą
ą
ą
ś
ą
ś
ś
ą
ą
ą
ę
ą
ą
MOV P2, #3
0
1
MOV P2, #2
2
3
SJMP PETLA
4
5
MOV P2, #3
6
1 obieg p tli
ę
Rys. 1-2
3
7
MOV P2, #2
8
ć
ą
Ŝ
ą
ę
ś
10
ę
W ramkach zawarte s instrukcje wykonywane w p tli programu. Jednostk czasu jest cykl
rozkazowy mikrokontrolera, który dla cz sto stosowanego rezonatora kwarcowego
o cz stotliwo ci 11,0592 MHz wynosi 1,085 µsek. Instrukcje przesła MOV P2,#3 i
MOV P2,#3 wykonywane s w dwóch cyklach rozkazowych, podobnie jak instrukcja skoku
bezwarunkowego SJMP PETLA.
St d pełny okres wykonania p tli wymaga 6 cykli rozkazowych a cz stotliwo przebiegu
generowanego przez program wynosi:
ą
ę
ą
ę
ę
ś
ń
ą
ą
ę
ę
ś
ć
f = 1/T = 1/(6 * 1,085) µsek. = 153,6 kHz
Współczynnik wypełnienia impulsu wynosi:
n= Ti/T = 1/3
gdzie: Ti – czas impulsu
T – okres przebiegu
Zatem redni pr d diody LED sterowanej przez lini portu P2.0 jest ok. 3x mniejszy ni pr d
diody zasilanej lini portu P2.1, st d ni sza jasno
wiecenia diody P2.0.
Du a cz stotliwo zmian pr du diody wyja nia jej ci głe wiecenie – mimo niew tpliwego
procesu zał czania i wył czania pr du w diodzie. Obserwacja generowanego przebiegu mo liwa
jest przy pomocy oscyloskopu.
Ŝ
ś
ą
ę
ą
Ŝ
ą
ą
ś
ć
ś
Ŝ
ę
ś
ć
ą
ś
ą
ś
ą
Ŝ
ą
ą
ą
Przedstawione programy wykorzystywały rozkazy wysyłania całych bajtów do portu lub
inaczej mówi c operuj ce na bajtach. Rozkazy te nie zawsze s wygodne w u yciu, szczególnie
w zastosowaniach polegaj cych na sterowaniu urz dzeniami. Istota problemu polega na tym, e
wysyłany jest cały bajt informacji, podczas gdy bie ca zmiana mo e dotyczy tylko jednej linii.
Trzeba wówczas stosowa specjalne zabiegi programowe zabezpieczaj ce przed przypadkow
zmian innych bitów danego portu. W kontrolerach rodziny MCS’51 lista rozkazów zawiera
instrukcje sterowania wybranymi bitami portu, bitami rejestrów w obszarze SFR jak równie
bitami obszaru pami ci RAM od adresu 20H do adresu 2FH. Mówimy w takim przypadku o
rozkazach sterowania bitowego lub trybie adresowania bitowego:
Ŝ
ą
ą
ą
Ŝ
ą
ą
Ŝ
Ŝ
ą
ć
ć
ą
ą
ą
Ŝ
ę
CLR bit
SETB bit
CPL bit
zeruj wybrany bit
ustaw wybrany bit
neguj wybrany bit
Bit wybierany jest przez podanie numeru, je li dotyczy to obszaru adresowania bitowego w
pami ci RAM lub przez podanie jego nazwy, np. P2.0 dla bitu 0 portu P2. Nazwy bitów ustaliła
firma Intel®, a ich definicje zawiera opis rejestrów SFR.
Listing programu działaj cego podobnie do programu z listingu 1-1 przedstawiony jest ni ej.
ś
ę
Ŝ
ą
1; LISTING 1-4
2; Program sterowania bitu 0 portu P2
3
4
ORG
0
5
6
SETB P2.1
; ustaw bit 1 portu P2
7 PETLA:
8
SETB P2.0
; ustaw bit 0 portu P2
9.
CLR
P2.0
; zeruj bit 0 portu P2
10
11
SJMP PETLA
; powtórz p tl
12
13
END
ę
4
ę
ZADANIE:
Narysowa przebiegi czasowe uzyskiwane w programie 1-4.
ć
Wszystkie dotychczasowe programy wytwarzały przebiegi o cz stotliwo ciach rz du setek kHz.
Obserwacja takich przebiegów jest mo liwa oscyloskopowo, mo na te mierzy ich parametry
(cz stotliwo , okres) cz sto ciomierzem.
Dla umo liwienia wzrokowej obserwacji migania diody konieczne jest znaczne zmniejszenie
cz stotliwo ci przebiegu pr du diody LED do warto ci nie wi kszej ni kilkana cie do 25 Hz.
W tym celu nale y zastosowa opó nienia w p tli programu tak, by dioda wieciła przez czas nie
mniejszy ni ok. 20 msek. oraz by była wył czona przez podobny odcinek czasu. Naturalnie
czasy te nie musz by równe, z zachowaniem okresu wi kszego ni 40 ms.
ę
Ŝ
ś
Ŝ
ę
Ŝ
ć
ę
ś
ć
ę
ś
Ŝ
Ŝ
ę
ś
ą
ś
ę
ś
Ŝ
ć
ź
ę
ś
Ŝ
ą
Ŝ
ą
ć
ę
Algorytm takiego programu przedstawiony jest na rysunku 1-3
START
Wy lij bajt 00000000
ś
Czekaj 50 msek.
Wy lij bajt 00000001
ś
Czekaj 50 msek.
Rys. 1-3
Jedn z metod uzyskania zwłoki czasowej jest wykonywanie pewnej liczby rozkazów. Uzyskana
w ten sposób zwłoka b dzie równa iloczynowi liczby wykonanych rozkazów i czasu
potrzebnego na wykonanie jednego rozkazu. Poniewa czas potrzebny na wykonanie jednego
rozkazu jednocyklowego wynosi (w module ABC-02) 1,085 µsek, to dla odliczenia czasu ok.
50 msek. kontroler musi wykona :
ą
ę
Ŝ
ć
50 msek / 1,085 µsek = ok. 46000 cykli rozkazowych.
Wygodn metod zliczania cykli rozkazowych jest zwi kszanie lub zmniejszanie zawarto ci
rejestru roboczego kontrolera. Poniewa kontroler operuje na słowach 8-bitowych to zakres
zliczania ograniczony jest do 256 cykli. Dla zwi kszenia ilo ci zliczanych cykli nale y
wykorzysta wi cej rejestrów pracuj cych według algorytmu przedstawionego na poni szym
rysunku (liczby w przykładzie s wybrane przypadkowo):
ą
ą
ę
ś
Ŝ
Ŝ
ę
ś
Ŝ
ć
ę
ą
ą
5
START
Ładuj do R2 liczb 200
ę
Ładuj do R1 liczb 100
ę
Zmniejsz liczb w R1
ę
N
Czy R1 = 0 ?
T
Zmniejsz liczb w R2
ę
N
Czy R2 = 0 ?
T
STOP
Rys. 1-4
W algorytmie tym mo na wyró ni p tl wewn trzn pracuj c na rejestrze R1 oraz p tl
zewn trzn pracuj c na rejestrze R2. Przy ka dym wyzerowaniu rejestru R1 nast puje
zmniejszenie zawarto ci rejestru R2 o 1 i nast pnie sprawdzenie warunku wyst pienia zera
w tym rejestrze. Je li rejestr R2 zawiera liczb wi ksz od zera nast puje powrót do odtworzenia
warto ci pocz tkowej rejestru R1 i ponowne odejmowanie w p tli wewn trznej. Wyzerowanie
obu rejestrów umo liwia zako czenie pracy algorytmu. W ten sposób mo na zwi kszy liczb
zliczanych impulsów – w tym wypadku jest to iloczyn mno nej i mno nika, czyli tutaj
100 x 200. Oczywi cie nale y uwzgl dni czas potrzebny na operacje sprawdzenia warunku zera
oraz wykonania skoków w algorytmie. Faktyczny czas wykonania programu według
powy szego algorytmu b dzie wi kszy ni tylko iloczyn mno nej i mno nika.
Algorytm ten mo e by rozbudowywany o nast pne rejestry, co pozwoli na dalsze zwi kszenie
ilo ci zliczanych cykli.
Ŝ
Ŝ
ć
ę
ę
ę
ą
ą
ą
ę
ę
Ŝ
ę
ą
ą
ą
ę
ś
ę
ś
ś
ę
ę
ą
ą
ę
ą
ę
ę
Ŝ
Ŝ
ń
ę
Ŝ
ć
ę
Ŝ
Ŝ
ś
ę
Ŝ
ć
Ŝ
ę
Ŝ
Ŝ
ę
Ŝ
ć
ę
ę
ś
Program generuj cy przebieg prostok tny o cz stotliwo ci ok. 10 Hz z wykorzystaniem
algorytmu przedstawionego na rysunku 1-4 zamieszczony jest w listingu 1-5.
ą
ą
ę
6
ś
1; LISTING 1-5
2; Program sterowania bitu 0 portu P2; cz stotliwo przebiegu ok. 10 Hz
3
4
ORG
0
5
6 PETLA:
7
SETB P2.0
; ustaw bit 0 portu P2
8
9
MOV
R2, #227
; ładuj licznik p tli zewn trznej
10 CZAS1:
11
MOV
R1, #100
; ładuj licznik p tli wewn trznej
12
DJNZ
R1, $
; zmniejsz liczb w rej. R1 i sprawd czy = 0
13
; je li nie to powtórz
14
DJNZ
R2, CZAS1 ; zmniejsz liczb w rej. R2 i sprawd czy = 0
15
; je li nie to powtórz p tl CZAS1
16
CLR
P2.0
; zeruj bit 0 portu P2
17
18
MOV
R2, #227
19 CZAS2:
20
MOV
R1, #100
21
DJNZ
R1, $
22
DJNZ
R2, CZAS2
23
24
SJMP PETLA
; powtórz główn p tl programu
25
26
END
ę
ś
ć
ę
ę
ę
ę
ę
ź
ś
ę
ź
ś
ę
ą
ę
ę
ę
W programie znajduj si dwa praktycznie identyczne fragmenty, ró ni ce si tylko nazw
u ytej etykiety. Czyli do tej samej funkcji zwłoki czasowej kod został napisany dwukrotnie,
zajmuj c miejsce w pami ci programu.
W takim wypadku korzystniej jest zastosowa ide podprogramu :
Ŝ
ą
ę
ą
ę
Ŝ
ą
ę
ć
ę
1; LISTING 1-6
2; Program sterowania bitu 0 portu P2; cz stotliwo przebiegu ok. 10 Hz
3; z wykorzystaniem podprogramu
4
ORG
0
5
6 PETLA:
7
SETB P2.0
; ustaw bit 0 portu P2
8
9
CALL
CZAS_50MS
10
11
CLR
P2.0
; zeruj bit 0 portu P2
12
13
CALL
CZAS_50MS
14
15
SJMP PETLA
; powtórz główn p tl programu
16 ;*******************************************
17 ; Podprogram zwłoki czasowej 50 msek.
18 CZAS_50MS:
19
MOV
R2, #227
20 CZAS2:
21
MOV
R1, #100
22
DJNZ
R1, $
23
DJNZ
R2, CZAS2
24
RET
25
26
END
ę
ś
ć
ą
7
ę
ę
ą
Podprogram zwłoki czasowej (napisany w liniach 18 – 24) wywoływany jest w p tli głównej
dwukrotnie. Ze wzgl du na niewielk obj to podprogramu zysk zaj to ci pami ci programu
mikrokontrolera jest w tym przykładzie niezauwa alny, natomiast oczywista jest jego lepsza
czytelno .
ę
ę
ą
ę
ś
ć
ę
ś
ę
Ŝ
ś
ć
ZADANIE: Napisa program sterowania diodami LED portu P2 dla uzyskania widocznego
gołym okiem efektu wiec cego punktu biegn cego w lew stron . Po osi gni ciu skrajnej lewej
diody cykl powinien si powtarza .
ć
ś
ą
ą
ę
ą
ę
ą
ę
ć
Program wykonuj cy to zadanie mo e składa si z sekwencji o miu rozkazów ładowania do
portu P2 odpowiednich bajtów – w ka dym kolejnym bajcie jeden bit maj cy warto 1
umieszczany jest na kolejnych pozycjach, w lew stron . Posta taka, cho skuteczna, daje zbyt
obszerny kod i jest mało elegancka.
Lepszym rozwi zaniem jest wykorzystanie rozkazu RL A. Rozkaz ten przesuwa zawarto
akumulatora o jeden bit w lewo; natomiast bit z pozycji najstarszej trafia na pozycj najmłodsz .
Ŝ
ą
ć
ę
ś
Ŝ
ą
ą
ę
ć
ś
ć
ć
ą
ś
ę
Algorytm programu jest nast puj cy:
ę
ą
START
Ładuj do ACC 00000001B
Wy lij do portu P2
ś
Odczekaj 100 msek
Przesu ACC o 1 bit w lewo
ń
Rys. 1-5
Program działaj cy według tego algorytmu przedstawiony jest na listingu 1-7.
ą
1; LISTING 1-7
2; Program sterowania diodami LED portu P2; „biegn cy punkt”
3; z wykorzystaniem podprogramu
4
ORG
0
5
6
MOV
A, #00000001B
7 PETLA:
8
MOV
P2, A
; wy lij zawarto akumulatora do portu P2
9
CALL CZAS_100MS
10
11
RL
A
; przesu bity akumulatora w lewo
12
13
SJMP PETLA ; powtórz główn p tl programu
14
ą
ś
ś
ć
ń
ą
8
ę
ę
ą
ć
15 ;*******************************************
16 ; Podprogram zwłoki czasowej 100 msek, fclk = 11,0592 MHz.
17
18 CZAS_100MS:
19
MOV
R2, #228
20 CZAS2:
21
MOV
R1, #200
22
DJNZ R1, $
23
DJNZ R2, CZAS2
24
RET
25
26
END
ZADANIE:
1. Napisa program sterowania diodami LED portu P2 dla wiec cego
punktu poruszaj cego si naprzemiennie w lewo i w prawo.
ć
ś
ą
ą
ę
Powró my do listingu 1-3.
ć
Okazuje si , e drobna zmiana w programie polegaj ca na zamianie kolejno ci rozkazów
wysyłania informacji do portu przynosi znacz c zmian w efektach pracy programu:
Ŝ
ę
ą
ą
ą
ś
ę
1; LISTING 1-8
2; Program cyklicznej zmiany stanu bitu P2.0, wersja 2
3
4
ORG
0
5
6 PETLA:
7
MOV
P2, #00000010B ; wy lij bajt do portu P2
8
MOV
P2, #00000011B ; wy lij bajt do portu P2
9
SJMP PETLA
; powtórz p tl
10
11
END
ś
ś
ę
ę
Poni ej zamieszczony jest rysunek przebiegów czasowych generowanych przez zmodyfikowany
program.
Ŝ
MOV P2, #2
0
1
MOV P2, #3
2
3
SJMP PETLA
4
5
MOV P2, #2
6
1 obieg p tli
ę
Rys. 1-6
9
7
MOV P2, #3
8
W tej wersji programu cz stotliwo przebiegu jest zgodna z przebiegiem wg. programu z
listingu 1-3, natomiast współczynnik wypełnienia impulsu jest równy 2/3 co spowoduje
zwi kszenie jasno ci wiecenia diody LED sterowanej z linii P2.0.
ę
ę
ś
ś
ć
ś
W przedstawionych programach informacja wysyłana do portu podawana była w postaci
jawnej, jako stała. Mo liwe s te inne sposoby przygotowania takiej informacji. Wykorzystuj c
własno ci funkcji logicznej Ex-OR (Exclusive OR – wył cznie LUB) mo emy zmienia stan
wybranej linii portu – jednej lub wielu. Funkcja ta dla zgodnych warto ci bitów na danej pozycji
w obu bajtach operandów daje warto 0, dla warto ci przeciwnych warto 1.
Poni ej zamieszczony jest listing programu zawieraj cego tak metod zmiany stanu portu.
Rozkaz XRL P2,#stała jest przykładem rozkazu Read-Modify-Write (czytaj stan portu –
modyfikuj- zapisz do portu).
Ŝ
Ŝ
ą
ą
Ŝ
ś
ą
ć
ś
ś
ć
ś
ś
ć
Ŝ
ą
ą
ę
1; LISTING 1-9
2; Program cyklicznej zmiany stanu bitu P2.0, wersja 3
3
4
ORG
0
5
6.
MOV
P2,# 00000010B ; stan pocz tkowy
7 PETLA:
8
XRL
P2, #00000001B ; Ex-OR stanu portu P2 ze stał
9
SJMP PETLA
; powtórz p tl
10
11
END
ą
ą
ę
ę
Program ten jest prostszy od programu poprzedniego – zawiera tylko dwie instrukcje w p tli –
natomiast wytwarzany przebieg steruj cy diod LED jest zaskakuj cy:
ę
ą
SJMP
0
ą
XRL P2, #1
1
2
3
ą
SJMP
4
5
XRL P2, #1
6
7
8
9
10
1 obieg p tli
ę
Rys. 1-7
Oba rozkazy wykorzystane w tym przykładzie wykonywane s w 2 cyklach rozkazowych. Do
wygenerowania pełnego okresu przebiegu na wyj ciu P2.0 wymagane s 2 obiegi p tli.
Mimo, e program zawiera mniej rozkazów generowany przebieg prostok tny ma cz stotliwo
dwukrotnie mniejsz ni przebiegi uzyskiwane w poprzednich przykładach.
ą
ś
ą
ę
Ŝ
ą
Ŝ
ą
10
ę
ś
ć
Dla wyzerowania bitu lub kilku bitów (i w efekcie linii) portu wykorzysta mo na instrukcj
iloczynu logicznego:
Ŝ
ć
ę
ANL P2,#maska
Drugi operand instrukcji cz sto nazywany jest mask . Zgodnie z definicj iloczynu logicznego
je li bity na zgodnych pozycjach obu operandów maj warto 1 w wyniku operacji uzyskuje
si 1. Je li którykolwiek bit na zgodnych pozycjach obu operandów maj warto 0 w wyniku
operacji uzyskuje si 0. Inaczej mówi c bity maj ce warto 0 w bajcie maski nadaj bitom
wyniku warto 0 – maskuj je. Oczywi cie maska mo e by podana jawnie, jako stała lub te
mo e by umieszczona w innym rejestrze np. rejestrze roboczym, komórce pami ci adresowanej
bezpo rednio i innych. Instrukcja wykonywana jest w nast puj cych krokach:
1. odczyt stanu portu P2
2. iloczyn logiczny bajtu portu P2 z bajtem maski, operacja jest wykonywana mi dzy
bitami na zgodnych pozycjach
3. zapis wyniku do portu P2
ę
ą
ą
ś
ą
ę
ś
ć
ś
ą
ę
ą
ą
ś
ś
ć
ć
ą
Ŝ
ś
ć
ą
Ŝ
ś
ć
Ŝ
ć
ę
ś
ę
ą
ę
Przykład:
Stan portu P2:
Maska
ANL P2,#maska
10101010B = 0AAH
00001111B = 00FH
00001010B = 00AH
Dla ustawienia bitu lub kilku bitów (i w efekcie linii) portu wykorzysta mo na instrukcj sumy
logicznej:
Ŝ
ć
ę
ORL P2,#maska
Drugi operand instrukcji cz sto nazywany jest mask . Zgodnie z definicj sumy logicznej je li
bity na zgodnych pozycjach obu operandów maj warto 0 w wyniku operacji uzyskuje si 0.
Je li którykolwiek bit na zgodnych pozycjach obu operandów maj warto 1 w wyniku operacji
uzyskuje si 1. Inaczej mówi c bity maj ce warto 1 w bajcie maski nadaj bitom wyniku
warto 1 – maskuj je. Oczywi cie maska mo e by podana jawnie, jako stała lub te mo e by
umieszczona w innym rejestrze np. rejestrze roboczym, komórce pami ci adresowanej
bezpo rednio i innych. Instrukcja wykonywana jest w nast puj cych krokach:
4. odczyt stanu portu P2
5. suma logiczny bajtu portu P2 z bajtem maski, operacja jest wykonywana mi dzy
bitami na zgodnych pozycjach
6. zapis wyniku do portu P2
ę
ą
ą
ą
ś
ć
ę
ś
ą
ę
ą
ą
ś
ś
ś
ć
ć
ą
Ŝ
ś
ć
ą
Ŝ
ś
Ŝ
ć
ć
ę
ś
ę
ą
ę
Przykład:
Stan portu P2:
Maska
ORL P2,#maska
10101010B = 0AAH
00001111B = 00FH
10101111B = 0AFH
Program wykorzystuj cy opisane funkcje do cyklicznej zmiany stanu bitów P2.0 – P2.2
przedstawiony jest na listingu 1-10. Dla poprawienia czytelno ci maski wykorzystane w obu
rozkazach zast piono zdefiniowanymi na pocz tku programu nazwami symbolicznymi.
ą
ś
ą
ą
11
1; LISTING 1-10
2; Program cyklicznej zmiany stanu bitów P2.0 – P2.2
3
4 MASKA1 EQU 00000111B
5 MASKA2 EQU 11111000B
6
7
ORG 0
8
9
MOV
P2,# 00000000B ; zeruj wszystkie bity
10 PETLA:
11
ORL
P2, # MASKA1 ; OR stanu portu P2 ze stał
12
; ustaw bity P2.2 – P2.0
13
14
ANL
P2, # MASKA2 ; AND stanu portu P2 ze stał
15
; zeruj bity P2.2 – P2.0
16
17
SJMP PETLA
; powtórz p tl
18
19
END
ą
ą
ę
ę
ZADANIA:
1. Narysowa przebiegi czasowe uzyskiwane w programie 1-10.
2. Napisa podprogram zwłoki czasowej równej 1 msek wykorzystuj cy jeden
rejestr. Uwzgl dni czasy wywołania i powrotu z podprogramu.
3. Napisa program sterowania diodami LED portu P2 daj cy efekt wiec cej
linijki o zwi kszaj cej si długo ci w prawo od 1 diody do 8 diod. Nast pnie
diody powinny by wygaszane od prawej do lewej.
ć
ć
ą
ę
ć
ć
ą
ę
ą
ę
ś
ć
12
ś
ą
ę