Urządzenia zewnętrzne mikrokontrolera 8051
2. Wprowadzić i uruchomić program zapalający dwa segmenty trzech sekcji wyświetlacza siedmiosegmentowego (UWAGA– w systemie DSM-51 w try-bie pracy statycznej, tak jak w tym ćwiczeniu, nie należy wybierać do 1. Zapoznać się z elementami zestawu DSM-51: świecenia mniej niż dwie sekcje, aby nie przekraczać dopuszczalnych prądów
–
16 bitowy rejestr-wskaźnik danych DPTR do adresowania pamięci dla jednej sekcji).
zewnętrznej,
L00
–
wyświetlacz siedmiosegmentowy składający się z sześciu sekcji,
–
bufor wyboru sekcji o adresie FF30H
MOV DPTR, #FF30H ;zapisanie do rejestru DPTR adresu bufora
–
zawartość bufora wyboru sekcji określa sekcję:
;wyboru sekcji
MOV A, #07H
;zapisanie do akumulatora 0000 0111 (wybór Bit bufora
Wybrana
;sekcji 1, 2, 3)
wyboru sekcji
sekcja
MOVX @DPTR, A
;zapisanie A do bufora wyboru sekcji (adres b0=1
sekcja 1
;bufora wyboru sekcji znajduje w rejestrze b1=1
sekcja 2
b2=1
sekcja 3
;DPTR)
b3=1
sekcja 4
b4=1
sekcja 5
MOV DPTR, #FF38H ;zapisanie do rejestru DPTR adresu bufora b5=1
sekcja 6
;wyboru segmentu
b6=1
diody LED
MOV A, #03H
;zapisanie do akumulatora 0000 011 (wybór
–
bufor wyboru segmentu o adresie FF38H
;segmentów „a”, „b”)
–
zawartość bufora wyboru segmentu określa segment: MOVX @DPTR, A
;zapisanie A do bufora wyboru segmentu
Bit bufora
;(adres bufora wyboru sekcji znajduje w
Segment
Segment
wyboru
;rejestrze DPTR
sekcji
segmentu
a
b0=1
a
CLR P1.6
;odblokowanie wyświetlania całego
––
b1=1
b
f
| | b
b2=1
c
;wyświetlacza siedmiosegmentowego
g
––
b3=1
d
LJMP L00
;skok do etykiety L00
e
| | c
b4=1
e
––
• DP
b5=1
f
d
b6=1
g
b7=1
DP
3. Zmodyfikować program wprowadzając przed etykieta podane rozkazy.
5. Zmodyfikować program, tak aby po uruchomieniu i po naciśnięciu klawisza (program po uruchomieniu będzie oczekiwał na naciśnięcie klawisza)
„0” wyświetlał cyfry 0, po naciśnięciu klawisza 1 wyświetlał cyfry 1, a po naciśnięciu klawisza 2 wyświetlał cyfry 2.
MOV R0, #30H
;wpisanie do rejestru R0 wartości 30H (adres
;pamięci wewnętrznej)
6. Zmodyfikować program, tak, aby liczył wstecz, od 02H do 00H, z interwałem 1 sekundy i wyświetlaniem wyniku na trzech sekcjach wyświetlacza LED.
MOV A, #3FH
;zapisanie do rejestru R1 wartości 0011 1111
;(kod cyfry „0”)
Mnemoniki z parametrami
MOV @R0, A
;zapisanie do komórki pamięci o adresie
–
wybór parametru ([←], [→], [↑], [↓]) i akceptacja ([↵]),
;zawartym w rejestrze R0 zawartości
–
Rr (jeden z o
;akumulatora
śmiu rejestrów R0..R7),
–
@Ri (jeden z dwu rejestrów @R1, @R2),
–
dir (wybór rejestru specjalnego lub edycja adresu komórki pami LCALL W_KEY
;pobranie numeru klawisza z klawiatury do ęci),
–
#d8 (edycja dwucyfrowej liczny szesnastkowej), akumulatora
ADD A, #30H
;dodanie do akumulatora warto
–
#d16 (edycja czterocyfrowej liczny szesnastkowej), ści 30H
–
bit (wybór bitu rejestru specjalnego),
MOV R1, A
;zapisanie akumulatora w rejestrze R1
;(w rejestrze R1 znajduje si
–
addr (wybór etykiety L0..L3F),
ę adres pamięci
–
addr w rozkazie LCALL (wybór podprogramu lub etykiety),
;wewnętrznej powiększony o numer
–
addr w dyrektywie ORG (edycja czterocyfrowej liczby szesnastkowej)
;naciśniętego klawisza)
–
rel (wybór etykiety L0..L3F).
W programie zamienić rozkaz wyboru segmentów „MOV A, #03H” na rozkaz
„MOV A, @R1”, uruchomi
Uruchomienie programu
ć program i po uruchomieniu nacisnąć klawisz „0”.
4. Na pocz
–
MAIN,
ątek programu wprowadzić rozkazy
–
RUN.
MOV R0, #31H
;wpisanie do rejestru R0 wartości 31H (adres Zatrzymanie programu
;pamięci wewnętrznej)
MOV A, #06H
;zapisanie do rejestru R1 warto
–
RESET RAM.
ści 0000 0110
Uwaga: Nie naciska
;(kod cyfry „1”)
ć przycisku RESET ROM, spowodowałoby to usunięcie MOV @R0, A
;zapisanie do komórki pami
wprowadzonego programu z pamięci.
ęci o adresie
;zawartym w rejestrze R0 zawartości
;akumulatora
Uruchomić program i sprawdzić działanie programu po naciśnięciu klawisza „1”
i klawisza „0”.