LABORATORIUM PODSTAW SYSTEMÓW MIKROPROCESOROWYCH
|
|||
TEMAT. PORTY MIKROKONTROLERA
|
CWICZENIE NR.2 |
GRUPA ED.5.1 |
OCENA |
IMIĘ I NAZWISKO Paweł Grudzień Grzegorz Gołofit |
DATA 12-12-98 |
Wpisywanie danych do portu.
Zadanie 1 - zapis do portu.
Dane wykonywania programu nr.1 podczas pracy krokowej.
Lp |
Adres instrukcji w pamięci |
Mnemonik |
Stan portu 1 |
Stan akumulatora |
1 |
0000 |
LJMP 0100H |
FF |
00 |
2 |
0100 |
MOV P1.#7FH |
FF |
00 |
3 |
0103 |
LJMP 0103H |
7F |
00 |
Linia 1: skok do adresu 0100H.
Linia 2: załadowanie do portu P1 wartości 7FH - włączenie diody LED.
Linia 3: zatrzymanie pracy mikrokontrolera i pozostanie w pętli.
Zerowanie i ustawianie linii portów przy pomocy logicznych operacji na portach bitów.
Zadanie 2—zerowanie linii w porcie.
Dane wykonywania programu nr.2 podczas pracy krokowej.
Lp |
Adres instrukcji w pamięci |
Mnemonik |
Stan portu 1 |
Stan akumulatora |
1 |
0000 |
LJMP 0100H |
FF |
00 |
2 |
0100 |
ANL P1,#7FH |
FF |
00 |
3 |
0103 |
LJMP 103H |
7F |
00 |
Linia 1: skok do adresu 0100H.
Linia 2: zerowanie linii 7 w porcie P1 w wyniku wykonania funkcji AND.
Linia 3: zatrzymanie pracy mikrokontrolera i pozostanie w pętli.
Zadanie 3—zerowanie/ustawianie linii w porcie.
Dane wykonywania programu nr.3 podczas pracy krokowej.
Lp |
Adres instrukcji w pamięci |
Mnemonik |
Stan portu 1 |
Stan akumulatora |
1 |
0100 |
ANL P1,#7FH |
FF |
00 |
2 |
0103 |
ORL P1,#80H |
7F |
00 |
3 |
0106 |
LJMP 0100H |
FF |
00 |
Linia 1: zerowanie linii 7 w porcie P1 w wyniku wykonania funkcji AND.
Linia 2: ustawienie linii 7 w porcie P1 w wyniku wykonania funkcji OR.
Linia 3: zatrzymanie pracy mikrokontrolera i pozostanie w pętli.
Zadanie 4—zmiana stanu linii w porcie.
Dane wykonywania programu nr.4 podczas pracy krokowej.
Lp |
Adres instrukcji w pamięci |
Mnemonik |
Stan portu 1 |
Stan akumulatora |
1 |
0000 |
LJMP 0100H |
FF |
00 |
2 |
0100 |
XRL P1,#80H |
FF |
00 |
3 |
0103 |
MOV A,#0AH |
7F |
00 |
4 |
0105 |
LCALL 8112H |
7F |
0A |
5 |
0100 |
LJAMP 0100H |
7F |
00 |
Linia 1: skok do adresu 0100H.
Linia 2: negowanie linii w porcie P1 w wyniku wykonania funkcji OR.
Linia 3: wpisanie do akumulatora A wartości 0AH.
Linia 4: skok do podprogramu - opużnienie 1s.
Linia 5: skok do początku programu.
Zaletą stosowania rozkazu dotyczącego całego bajtu jest to, że rozkazów
z adresowaniem bitowym musi być odpowiednio więcej natomiast rozkaz
z adresowaniem bajtowym może być jedna. Kolejnymi zaletami stosowania funkcji
logicznych jest to, że możemy zmienić tylko stan wybranych linii w porcie nie znając
jak były one ustawione przed jego wykonaniem, oraz to , że zmiany na poszczególnych
liniach następują jednocześnie. Natomiast przy sterowaniu poszczególnymi bitami
zmiany następują kolejno.
3. Sterowanie dwoma liniami portu mikrokontrolera.
Zadanie 5—sterowanie jednoczesne.
Program.
;**********************************************************
; LEKCJA 2 - PORTY MIKROKONTROLERA
; ZAD. 1 - ZMIANA STANU LINII W PORCIE
;**********************************************************
; Dioda TEST podłączona do linii 7 w porcie P1
; Brzęczyk podłączony do linii 5 w porcie P1
MASK EQU 10100000B ; maska do zmiany stanu
; linii 5 i 7 w porcie P1
LJMP START
ORG 100H
START:
LOOP: ; Pętla zmiany stanów
XRL P1,#MASK ; neguj linie portu P1
; zgodnie z maską MASK
; 1 w masce zmienia stan
; odpowiedniej linii P1
MOV A,#10 ; czekaj czas 10*100ms=1s
LCALL DELAY_100ms ; podprogram z EPROMU
LJMP LOOP ; powtórz
Algorytm programu.
LOOP:
Zadanie 6 - sterowanie naprzemienne.
;**********************************************************
; LEKCJA 2 - PORTY MIKROKONTROLERA
; ZAD. 2 - ZMIANA STANU LINII W PORCIE
STEROWANIE NAPRZEMIENNE
;**********************************************************
; Dioda TEST podłączona do linii 7 w porcie P1
; Brzęczyk podłączony do linii 5 w porcie P1
LED_ON EQU 01111111B ; maska zerowania linii 7
MASK EQU 10100000B ; maska do zmiany stanu
; linii 5 i 7 w porcie P1
LJMP START
ORG 100H
START:
ANL P1,#LED_ON ; zapal diodę TEST
LOOP: ; Pętla zmiany stanów
XRL P1,#MASK ; neguj linie portu P1
; zgodnie z maską MASK
; 1 w masce zmienia stan
; odpowiedniej linii P1
MOV A,#10 ; czekaj czas 10*100ms=1s
LCALL DELAY_100ms ; podprogram z EPROMU
LJMP LOOP ; powtórz
Algorytm programu:
LOOP:
Zadanie 7 -ciąg rozkazów służący do zmiany stanu portu xx00x1x1 na xx10x0x1.
MASK_CLR EQU 11111011B ; maska zerowania 2 linii
; pozostałe linii bez zmian
MASK_SET EQU 00100000B ; maska do zmiany stanu
; linii 5
; pozostałe linii bez zmian
ANL P1,#MASK_CLR
ORL P1,#MASK_SET
START:
Zapal diodę TEST
Wyłącz brzęczyk
Odczekaj 1s
START:
Zapal diodę TEST
Odczekaj 1s
Włącz / wyłącz brzęczyk
Zgaś / Zapal diodę