Mikroprocesory, LEKCJA~1, Politechnika Lubelska


Politechnika Lubelska

Laboratorium podstaw systemów mikroprocesorowych

w Lublinie

Ćwiczenie nr 1 i 2

Nazwisko:

Łakomy

Tuźnik

Bober

Imię:

Mirosław

Piotr

Dariusz

Semestr

5

Grupa

ED 5.3

Rok akademicki

1997/98

Temat ćwiczenia:

Linie wejść i wyjść mikrokontrolera

Data wykonania

17.10.97

Ocena:

1. Cel ćwiczenia :

Poznanie metod sterowania urządzeniami podłączonymi do portów mikrokontrolera.

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

;LEKCJA 1 - LINIE WEJŚĆ/WYJŚĆ MIKROKONTROLERA

;PRZYKŁAD 4 - MRUGANIE DIODY - OPÓŹNIENIA CZASOWE

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

LED EQU P1.7 ;Dioda TEST podłączona do portu P1.7

LJMP START

ORG 100H

START:

LOOP: ; pętla mrugania diody TEST

CLR LED ; zerowanie linii P1.7 powoduje zapalenie się diody

MOV A,#10 ; wprowadzenie do akumulatora wartości 10

LCALL DELAY_100MS ; wywołuje podprogram z EPROMu odpowiedzialny za opóźnienie

SETB LED ; ustawienie linii P1.7 powodujące wygaszenie diody

MOV A,#10 ; wprowadzenie do akumulatora wartości 10

LCALL DELAY_100MS ;wywołanie podprogramu z EPROMu odpowiedzialnego za opóźnienie

LJMP LOOP ; skok do początku programu

Program pokazuje nam, że w systemie jest możliwość zdefiniowania swoich zmiennych - np. LED [etykiecie LED przypisaliśmy bit #7 portu 1].

Instrukcja DELAY_100MS, będąca podprogramem zawartym w pamięci EPROM, wprowadza opóźnienie w granicach (1 - 256)* 100ms.

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

;LEKCJA 1 - LINIE WEJŚĆ/WYJŚĆ MIKROKONTROLERA

;PRZYKŁAD 6 - STEROWANIE DIODY I BRZĘCZYKA

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

LED EQU P1.7 ; dioda TEST podłączona do P1.7

BUZZER EQU P1.5 ; brzęczyk podłączony do P1.5

LJMP START

ORG 100H

START:

LOOP: ; pętla mrugania diody

; i sterowania brzęczyka

CPL LED ; zapal/zgaś diodę TEST

CPL BUZZER ;włącz/wyłącz brzęczyk

MOV A,#10 ;czekaj czas 10*100ms=1s

LCALL DELAY_100MS ;podprogram z EPROMu

LJMP LOOP ;powtórz

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

LED EQU P1.7 ;dioda TEST podłączona do P1.7

BUZZER EQU P1.5 ;brzęczyk podłączony do P1.5

LJMP START

ORG 100H

START:

LOOP: ;pętla mrugania diody

;i sterowania brzęczyka

CPL LED

MOV A,#20 ; czekaj 20*100ms

LCALL DELAY_100MS ; podprogram z EPROMu

CPL LED ;negowanie P1.7

CPL BUZZER ; negowanie P1.5

MOV A,#10 ; wprowadzenie do ALU wartości 10

LCALL DELAY_100MS ; wywołanie podprogramu z EPROMu

CPL BUZZER ; negowanie P1.5

LJMP LOOP ;skok do początku programu

Powyższy program zapala diodę i gasi ją na przemian z działaniem brzęczyka przy czym dioda włącza się na czas dwukrotnie dłuższy t.j. na 2s .

Wykorzystano tu instrukcję logiczną CPL która powoduje negację bitu którego adres podamy.

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

;LEKCJA 2 - PORTY MIKROKONTROLERA

;PRZYKŁAD 3 - ZEROWANIE/USTAWIANIE LINII W PORCIE

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

;Dioda TEST podłączona do linii 7 w porcie P1

LED_ON EQU 01111111B

LED_OFF EQU 10000000B

LJMP START

ORG 100H

START:

LOOP: ; pętla mrugania diody

ANL P1,#LED_ON ;zeruje linię 7 portu P1 [włączenie diody TEST]

ORL P1,#LED_OFF ;ustawia linię 7 portu P1[wyłączenie diody TEST]

LJMP LOOP ;skok na początek programu

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

;LEKCJA 2 - PORTY MIKROKONTROLERA

;PRZYKŁAD 4 - ZMIANA STANU LINII W PORCIE

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

;Dioda TEST podłączona do linii 7 w porcie P1

LED_MASK EQU 10000000B ;maska do zmiany

;stanu linii 7

LJMP START

ORG 100H

START:

LOOP: ; pętla mrugania diody

XRL P1,#LED_MASK neguje linię 7 portu 1 (zapal/zgaś diodę TEST)

MOV A,#10 ;wprowadza do akumulatora wartość 10

LCALL DELAY_100MS ; wywołuje podprogram z EPROMu

LJMP LOOP ;skok do początku programu

W programach zastosowano maski, które powodują ustawienie bitów które chcemy zmienić w porcie, możemy również zmienić ustawienie całego portu. Zaletą takiego programowania jest możliwość modyfikacji programu bez większej ingerencji w program.

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

;LEKCJA 1 - LINIE WEJŚĆ/WYJŚĆ MIKROKONTROLERA

;PRZYKŁAD 6 - STEROWANIE DIODY I BRZĘCZYKA

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

LED EQU P1.7

LED_BUZ EQU 10100000B ;Maska do zmiany stanu linii 5 i 7

LJMP START

ORG 100H

START:

CLR LED

LOOP: ;Pętla mrugania diody i sterowania brzęczyka

XRL P1,#LED_BUZ ; Negacja linii (0⇒1,1⇒0)

MOV A,#10 ;Czekaj czas 10*100ms=1s

LCALL DELAY_100MS ;Podprogram z EPROMu

XRL P1,#LED_BUZ

MOV A,#20

LCALL DELAY_100MS

LJMP LOOP ;Skok do początku pętli

Powyższy program powoduje świecenie diody na przemian z działaniem brzęczyka, gdzie czas działania diody (2s) jest dwukrotnie dłuższy od brzęczyka t.j.. Zmiana stanów linii diody i brzęczyka jest dokonywana za pomocą maski LED_BUZ.



Wyszukiwarka