Laboratorium Techniki Mikroprocesorowej.
Iwaniuk Paweł
Szatanek Michał
Grupa 1.
Ćwiczenie nr 1.
Temat:
Linie wejść / wyjść mikrokontrolera.
WSTĘP.
Celem ćwiczenia jest zapoznanie się ze sposobami sterowania portami mikrokontrolera 8051. Przećwiczone zostanie wykorzystanie rozkazów adresujących cały port, a nie tylko poszczególne linie wejść / wyjść.
Układ 8051 zawiera cztery 8-bitowe porty PO, Pl, P2, P3. Wszystkie te porty mogą być adresowane jako całe bajty lub jako poszczególne ich bity. Jeżeli program jest umieszczony w zewnętrznej pamięci EPROM ( tak jak w systemie DSM-51 ) lub jeżeli z innych powodów została zorganizowana zewnętrzna szyna mikrokontrolera, to do bezpośredniego sterowania pozostaje tylko port Pl i 6 linii portu P3. W wykonywanym ćwiczeniu mamy do dyspozycji port P1.
Port mikrokontrolera 8051 ma 8 linii, co odpowiada 8 końcówkom mikroprocesora, do których można podłączyć urządzenia zewnętrzne. Do portu można wpisać l bajt informacji, czyli 8 bitów. Sterowanie urządzeń zewnętrznych odbywa się poprzez wpisanie odpowiednio na poszczególne bity stanu niskiego - 0 lub wysokiego - l ( po sygnale RESET wszystkie bity w portach są w stanie 1 ). Wpisany stan utrzymuje się aż do następnej operacji zapisu.
Najprostsze urządzenia zewnętrzne, które mogą być podłączone do portu mikrokontrolera, to dioda świecąca ( ang. LED - Light Emitting Diode ), lub tzw. brzęczyk. W systemie DSM-51 do linii 7 w porcie Pl podłączona jest dioda świecąca TEST, która służy do zobrazowania działania najprostszych programów. Jeśli linia jest w stanie 0, to dioda świeci się, a gdy jest w stanie l to nie świeci się ( po sygnale RESET dioda nie świeci się ). Natomiast brzęczyk podłączony jest do linii 5 portu P1. Działa on analogicznie, jak dioda TEST, tzn. jeśli linia jest w stanie 0 to brzęczyk działa, a gdy linia jest w stanie 1, to brzęczyk jest wyłączony ( po sygnale RESET brzęczyk jest wyłączony ).
ZADANIE NR 1.
Wpisywanie danych do portu.
Kod źródłowy programu do zadania znajduje się w pliku o nazwie l02_p1.asm. Zawartość pliku przedstawiona jest poniżej:
;****************************************
;LEKCJA 2 - PORTY MIKROKONTROLERA;PRZYKLAD l - ZAPIS DO PORTU
;Dioda TEST podłączona do linii 7 w porcie PlLED_ON EQU 01111111B
LJMP START
ORG 100H
START:
MOV P1,#LED_ON ; wpisz 0 na bit 7 portu Pl
; wpisz 1-ki na bity 0 .. 6
; czyli zapal diodę TEST
LJMP $ ;pozostań w pętli
W wyniku działania programu powstają następujące zbiory:
l02_p1.hex - zbiór zawierający kod wynikowy w formacie Intel HEX.
l02_p1.lst - listing programu.
Postać listingu programu ( fragment bez nagłówka ) przedstawiona jest poniżej:
7 007F LED_ON EQU 01111111B
8
9 0000: 02 01 00 LJMP START
10 0100: ORG 100H
11
12 0100: START:
13 0100: 75 90 7F MOV P1,#LED_ON
14
15 0103: 02 01 03 LJMP $
1.2. Następnie należy uruchomić program w trybie pracy krokowej. W tym celu należy uruchomić program DSM-51, załadować program i wybrać opcję MONITOR w zakładce DSM-51. Kolejne kroki programu wykonuje się poprzez naciśnięcie SPACJI.
Poniżej znajduje się tabela ilustrująca zawartość licznika rozkazów (nr linii programu), stany logiczne linii portu P1 oraz rezultaty działania w kolejnych krokach wykonywania programu.
Krok
PC – licznik rozkazów
Zawartość portu P1
Komentarz
1
0000h
FFh
Dioda nie świeci
2
0100h
3
0103h
7Fh
Dioda świeci
4
Dioda świeci – program zakończony
1.3. Program można zmodyfikować tak, aby jednocześnie z zapaleniem diody TEST załączał się również brzęczyk. W tym celu wystarczy oprócz ustawienia 7 bitu portu P1 w stan niski ustawić również bit 5 w stan niski.
Kod źródłowy tak zmodyfikowanego programu będzie miał postać:
;LEKCJA 2 - PORTY MIKROKONTROLERA;PRZYKLAD 1A - ZAPIS DO PORTU
;Dioda TEST podłączona do linii 7 w porcie Pl
;Brzęczyk jest podłączony do linii 5 w porcie PlLED_BRZ EQU 01011111B
MOV P1,#LED_BRZ ; wpisz 0 na bity 5 i 7 portu Pl
; wpisz 1-ki na bity 0..4 i 6
; czyli zapal diodę TEST i załącz
; brzęczyk
5Fh
Dioda świeci, brzęczyk włączony
...
koliuk