Katowice 22.04.2009
SPRAWOZDANIE
LABORATORIUM Z ELEKTRONIKI
Temat: Wyświetlacz LED
Grupa dziekańska: T-24
Grupa: B
Sekcja: 5
1.Karamuz Michał
2. Andryszek Anna
PRZEBIEG ĆWICZENIA
1. Programy wgrane i sprawdzone podczas ćwiczeń:
• Program 1 – liczy wstecz i zapala diodę po osiągnięciu wartości zerowej licznika
1.
MOV R1, #0FH
-zapisanie do rejestru R1 wartości 15
2.
MOV A, R1
-zapisanie do akumulatora zawartości R1
3.
MOV R0, A
-zapisanie A w R0
4.
L00:
-etykieta
5.
LCALL LCD_CLR
-wywołanie czyszczenia wyświetlacza
6.
MOV A, R0
-zapisanie do akumulatora zawartości R0
7.
LCALL WR_HEX
-wywołanie wyświetlenia liczby z akumulatora
8.
MOV A, R0
-zapisanie do akumulatora zawartości R0
9.
JZ L01
-skok do L01, gdy akumulator = 0
10.
DEC A
-dekrementacja A
11.
MOV R0, A
-zapisanie A w R0
12.
MOV A, #0AH
13.
LCALL DEL_100
-wywołanie opóźnienia A*MS
14.
LJMP L00
-skok do etykiety
15.
L01
-etykieta
16.
CLR P1.7
-zapalenie diody
17.
L02
-etykieta
18.
LJMP L02
19.
.END
a)
Program zaczyna liczyć od liczby wpisanej do akumulatora – w tym przypadku 0F =15.
b)
Program zapisuje liczbę do rejestru.
c)
Etykieta
d)
Program czyści wyświetlacz i znowu zapisuje liczbę do rejestru.
e)
Potem porównuje czy liczba jest już równa 0, czy nie. Jeżeli jest przeskakuje do L01 i
zapala diodę, jeżeli nie to odejmuje od akumulatora kolejną liczbę, zapisuje ją i wraca
do etykiety L00.
f)
Sytuacja powtarza się, dopóki akumulator nie osiągnie 0 – JZ L01.
• Program 2 – podobnie jak pierwszy program, tylko że dioda nie zapala się.
1.
MOV R1, #0FH
-zapisanie do rejestru R1 wartości 15
2.
MOV A, R1
-zapisanie do akumulatora zawartości R1
3.
MOV R0, A
-zapisanie A w R0
4.
L00:
-etykieta
5.
LCALL LCD_CLR
-wywołanie czyszczenia wyświetlacza
6.
MOV A, R0
-zapisanie do akumulatora zawartości R0
7.
LCALL WR_HEX
-wywołanie wyświetlenia liczby z akumulatora
8.
MOV A, R0
-zapisanie do akumulatora zawartości R0
9.
JZ L01
-skok do L01, gdy akumulator = 0
10.
DEC A
-dekrementacja A
11.
MOV R0, A
-zapisanie A w R0
12.
MOV A, #0AH
13.
LCALL DEL_100
-wywołanie opóźnienia A*MS
14.
LJMP L00
-skok do etykiety
15.
L01
-etykieta
16.
L02
-etykieta
17.
LJMP L02
18.
.END
•
Program 3 – wpisuje do akumulatora zawartość rejestru R1 z banku rejestru 0,
po naciśnięciu klawisza 0, oraz zawartość rejestru R1 z banku rejestrów 2, po
naciśnięciu innego klawisz.
1.
SETB RS1
-wybranie banku rejestrów 2
2.
MOV R1, #05H
- zapisanie do rejestru R1 wartości 5
3.
CLR RS0
-wybranie banku rejestrów 0
4.
MOV R1, #07H
-zapisanie do rejestru R1 wartości 7
5.
LCALL W_KEY
- pobranie numeru klawisza z klawiatury do akumulatora
6.
JZ L01
-skok do etykiety L01, gdy akumulator = 0
7.
SETB RS1
-wybranie banku rejestrów 2
8.
L01
-etykieta
9.
MOV A, R1
-zapisanie do akumulatora zawartości R1
10.
LCALL WR_HEX
-wywołanie wyświetlenia liczby z akumulatora
11.
L00
-etykieta
12.
LJMP L00
-skok do etykiety
13.
.END
a)
Program zapisuje w banku rejestru 2 wartość podaną ( w tym przypadku 5), oraz w
banku rejestru 0 inną wartość podaną (w tym przypadku 7).
b)
Program pobiera numer klawisza z klawiatury.
c)
Jeżeli jest to 0 to od razu przeskakuje do etykiety L01 czyli wybiera bank 0, a jeżeli nie
jest to 0 to wybiera bank rejestru 2.
d)
Zapisuję liczbę w akumulatorze i wyświetla ją.
• Program 4 – liczy wstecz z interwałem jednej sekundy do zera, od jednej z
dwóch wartości zapisanych w rejestrach R1, w bankach 0 i 2, a wybór banku
odbywa się przez naciśnięcie przycisku uruchamiającego zliczanie (0 to bank 0,
a 2 to bank 2)
1.
SETB RS1
-wybranie banku rejestrów 2
2.
MOV R1, #05H
- zapisanie do rejestru R1 wartości 5
3.
CLR RS0
-wybranie banku rejestrów 0
4.
MOV R1, #07H
-zapisanie do rejestru R1 wartości 7
5.
LCALL W_KEY
- pobranie numeru klawisza z klawiatury do akumulatora
6.
JZ L01
-skok do etykiety L01, gdy akumulator = 0
7.
SETB RS1
-wybranie banku rejestrów 2
8.
L01
-etykieta
9.
MOV A, R1
-zapisanie do akumulatora zawartości R1
10.
L00:
-etykieta
11.
LCALL LCD_CLR
-wywołanie czyszczenia wyświetlacza
12.
MOV A, R1
-zapisanie do akumulatora zawartości R1
13.
LCALL WR_HEX
-wywołanie wyświetlenia liczby z akumulatora
14.
MOV A, R1
-zapisanie do akumulatora zawartości R0
15.
JZ L02
-skok do L02, gdy akumulator = 0
16.
DEC A
-dekrementacja A
17.
MOV R1, A
-zapisanie A w R0
18.
MOV A, #0AH
19.
LCALL DEL_100
-wywołanie opóźnienia A*ms
20.
LJMP L00
-skok do etykiety
21.
L02
-etykieta
22.
LJMP L02
23.
.END
a)
Program wybiera z dwóch wartości z dwóch banków tak jak w programie 3.
b)
Program zaczyna zliczanie od jednej z dwóch wybranych wartości, liczy tak jak w
programie 1.
• Program 5 – liczy wprzód od 00H do 0FH z interwałem 0,5 sekundy i wyświetla
wynik na wyświetlaczu LCD. Po zakończeniu oczekuje na naciśnięcie klawisza.
1.
MOV R1, #0FH
-zapisanie do rejestru R1 wartości 15
2.
MOV A, R1
-zapisanie do akumulatora zawartości R1
3.
MOV R0, A
-zapisanie A w R0
4.
L00:
-etykieta
5.
LCALL LCD_CLR
-wywołanie czyszczenia wyświetlacza
6.
MOV A, R0
-zapisanie do akumulatora zawartości R0
7.
LCALL WR_HEX
-wywołanie wyświetlenia liczby z akumulatora
8.
MOV A, R0
-zapisanie do akumulatora zawartości R0
9.
SUBB A, #0EH
-odjęcie od akumulatora 14
10.
JZL01
-skok do L01 gdy akumulator = 0
11.
MOV A, R0
-zapisanie do akumulatora zawartości R0
12.
INC A
-
13.
JZ L01
-skok do L01, gdy akumulator = 0
14.
DEC A
-dekrementacja A
15.
MOV R0, A
-zapisanie A w R0
16.
MOV A, #05H
17.
LCALL DEL_100
-wywołanie opóźnienia A*MS
18.
LJMP L00
-skok do etykiety
19.
L01
-etykieta
20.
CLR P1.7
-zapalenie diody
21.
L02
-etykieta
22.
LJMP L02
-skok do etykiety
23.
.END
a)
Program zaczyna liczyć w górę od zawartości 00H do OFH.
b)
Najważniejsza jest instrukcja SUBB A, #0EH, która odejmuje od zawartości
akumulatora liczbę 14.
c)
Program sprawdza czy akumulator = 0, czy nie i działa tak jak program 1.