background image

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 

background image

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. 

 

 

background image

•  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 

 

 

 

background image

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. 

 

 

 

background image

•  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. 

 

 

 

 

 

 

background image