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

  1. 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.

  1. 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.

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

LOOP:

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic

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

0x08 graphic
Algorytm programu:

0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
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ę