Laboratorium Podstaw Systemów Mikroprocesorowych
Ćwiczenie nr 2
TEMAT : „PORTY MIKROKONTROLERA”
Wykonał : Grzegorz Sztorc ED 5.3
Tomasz Gontarek ED 5.4
LUBLIN 16.10.2000
Zadanie nr. 1
W ćwiczeniu tym przedstawiono sposób zapisu danych do portu za pomocą instrukcji MOV.Instrukcja ta ustawia wszystkie linie portu na zadaną z góry wartość.Nie ma możliwości ustawienia pojedynczego bitu
tą instrukcją.
Wywołanie tej instrukcji ma postać :
MOV Px,#Stała
Gdzie: Px - numer portu
Stała - dowolny ciąg cyfr w systemie dziesiętnym , binarnym lub heksadecymalnym(nie przekraczający wartości FFh)
Analiza programu : w programie tym instrukcja MOV służy do zapalenia diody.Odbywa się to przez wyzerowanie bitu 7 portu P1- a więc wpisanie do tego portu wartości 01111111B.
Zadanie nr. 2
W programach tych zostały wykorzystane następujące instrukcje : ANL , ORL , XRL . Odpowiadają one odpowiednim operacjom logicznym : AND , OR , XOR .Wywołanie tych instrukcji ma postać :
ANL
OR Px,#Maska
XOR
Umożliwiają one wykonwyanie odpowiedniej operacji logicznej na każdej parze bitów to znaczy porównywane są kolejne bity b0...b7(bity portu) i m0....m7(bity maski) zgodnie z odpowiednią funkcją logiczną .
Działanie instrukcji ANL można przedstawić w następujący sposób :
Bit portu : |
b0 |
b1 |
b2 |
b3 |
b4 |
b5 |
b6 |
b7 |
Bit maski : |
m0 |
m1 |
m2 |
m3 |
m4 |
m5 |
m6 |
m7 |
Wynik : |
b0 and m0 |
b1 and m1 |
b2 and m2 |
b3 and m3 |
b4 and m4 |
b5 and m5 |
b6 and m6 |
b7 and m7 |
Instrukcje te są bardzo pomocne gdy konieczna jest zmiana kilku bitów w danym porcie.
W przypadku gdy wymagana jest zmiana jednego bitu o wiele lepiej jest użyć instrukcji takiej jak CPL,
CLR lub SETB - są one znacznie szybsze i wygodniejsze.
Zadanie nr. 3
program włączający i wyłączający diodę i brzęczyk
WLACZ EQU 10100000B
LJMP START ; 2 cykle zegara
ORG 100H
START:
XRL P1,#WLACZ ; 3 cykl zegara
MOV A,#10 ; 3 cykl zegara
LCALL DELAY_100MS ; 3 cykle + n-cykli na wykonanie procedury zawartej pod adresem + powrót ; pod adres startowy
LJMP START
; razem = 11 + n-cykli zegara na wykonanie procedury pod adresem + powrót
świecenie diody ma się odbywać na przemian z włączaniem brzęczyka
WLACZ EQU 10100000B
LJMP START ; 2 cykle zegara
ORG 100H
START:
CLR P1.7 ; włącz diodę ; 2 cykle zegara
LOOP:
XRL P1,#WLACZ ; 3 cykl zegara
MOV A,#10 ; 3 cykle zegara
LCALL DELAY_100MS ; 3 cykle + wykonanie procedury pod adresem i powrót
LJMP LOOP ; razem : 13 + n -cykli zegara na wykonanie procedury i powrót
W celu zmiany stanu portu P1 ze stanu xx00x1x1 na stan xx10x0x0x1 możemy użyć następujących rozkazów:
XRL P1,#00100100B ; 3 cykle zegara
CPL P1.3 ;
CPL P1.5 ; razem = 4 cykle zegara
CLR P1.3 ;
SETB P1.5 ;razem = 2 cykle zegara
Czasy wykonywania poszczególnych instrukcji (wszystkie pomiary zostały przeprowadzone na procesorze
z rodziny i8086 i mogą odbiegać od pomiarów uzyskanych na mikrokontrolerze i8051) :
rozkazy typu xrl,anl,orl były szybsze niż zapis/zmiana pojedynczych bitów.
przy obliczaniu cykli zegara dla poszczególnych instrukcji przyjąłem zasadę:
instrukcja CLR - wykonywana jest w jednym takcie ( negacja danego bitu bez potrzeby sprawdzania jego stanu
intrukcja CPL - wykonywana jest w 2 taktach ( odczyt bitu , negacja a następnie ustawienie bitu portu)
intrukcja SETB - wykonywana w jednym takcie ( ustawienie bitu na wartość 1 )
intrukcje logiczne ANL,XRL,ORL - wykonywane w 3 taktach ( odczyt danych z portu , wykonanie operacji z maską a następnie ustawienie portu)
intrukcja MOV - wykonywana zazwyczaj w 3 cyklach zegara
Laboratorium Podstaw Systemów Mikroprocesorowych - Ćwiczenie nr 2
1
2