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.