Advertisement
Guest User

Untitled

a guest
May 14th, 2018
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 5.85 KB | None | 0 0
  1. ; Podstawy techniki mikroprocesorowej
  2. ; Sprawozdanie Laboratorium 3
  3. ; Temat: Obsługa wyświetlacza LCD.
  4. ; Data zajęć w laboratorium: 17.04.18
  5. ; Przygotowali: Marcel Domagała i Kamil Skarbież
  6.  
  7. LJMP START                  ;Skok do miejsca oznaczonego START
  8.                             ;czyli do pętli głównej programu
  9.  
  10. LCDstatus equ 0FF2EH        ;Adres w pamięci XRAM dla linii odczytu statusu
  11. LCDControl equ 0FF2CH       ;Adres w pamięci XRAM dla linii sterowania
  12. LCDdataWR equ 0FF2DH        ;Adres w pamięci XRAM dla linii zapisu danych
  13.  
  14. #define HOME 0x80       ;Umieszczanie kursora w drugiej linii  
  15. #define INITDISP 0x38       ;Zainicjowanie wyświetlacza(w trybie 8-bit)
  16. #define HOM2 0xc0           ;Umieszczanie kursora w drugiej linii
  17. #define LCDON 0x0e          ;Właczenie wyświetlacza, Wyłączenie kursora, wyłączenie migania
  18. #define CLEAR 0x01          ;Czyszczenie wyświetlacza
  19.  
  20. ORG 0100H                   ;Rozpoczęcie programu od adresu 0x0100
  21.  
  22. LCDcntrlWR MACRO x            ;Makro przesyłajace zawartość na linię sterowania
  23.     LOCAL loop
  24. loop:
  25.         MOVDPTR,#LCDstatus    ;Pętla sprawdzająca zajętość wyświetlacza
  26.     MOVX A,@DPTR          ;Przesłanie wartości spod adresu w DPTR do akumulatora
  27.     JB ACC.7,loop         ;Sprawdzenie, czy wyświetlacz jest zajęty
  28.  
  29.     MOV DPTR,#LCDcontrol  ;Zapisanie do LCD control
  30.     MOV A,x
  31.     MOVX @DPTR,A          ;Przesłanie zawartości akumulatora na linię sterowania
  32.     ENDM
  33.  
  34. LCDcharWR MACRO                ;Makro pozwalajace wypisać zmienna na wyświetlaczu
  35.  
  36.     LOCAL tutu
  37.     PUSH ACC               ;Odłożenie akumulatora na stos
  38. tutu:
  39.         MOV DPTR,#LCDstatus    ;Pętla sprawdzająca zajętość wyświetlacza
  40.     MOVX A,@DPTR           ;Przesłanie wartości spod adresu w DPTR do akumulatora
  41.     JB ACC.7,tutu          ;Sprawdzenie czy wyświetlacz jest zajęty
  42.  
  43.  
  44.     MOV DPTR,#LCDdataWR    ;Wypisanie zmiennej na wyświetlaczu
  45.     POP ACC                ;Zdjęcie akumulatora ze stosu
  46.     MOVX @DPTR,A           ;Przesłanie zawartości akumulatora na linię sterowania
  47.     ENDM
  48.  
  49.  
  50. init_LCD MACRO                ;Zainicjowanie wyświetlacza, wyczyszczenie, włączenie.
  51. LCDcntrlWR #INITDISP
  52. LCDcntrlWR #CLEAR
  53. LCDctnrlWR #LCDON
  54. ENDM
  55.  
  56. START:           ;Rozpoczęcie pętli START
  57.  
  58. ;init_LCD         ;Zainicjowanie wyświetlacza
  59. ;MOV A, #31H      ;Wypisanie na ekranie "1".
  60. ;LCDcharWR
  61. ;MOV A, #2EH      ;Wypisanie na ekranie ".".
  62. ;LCDcharWR
  63. ;MOV A, #4CH      ;Wypisanie na ekranie "L".
  64. ;LCDcharWR
  65. ;MOV A, #49H      ;Wypisanie na ekranie "I".  
  66. ;LCDcharWR
  67. ;MOV A, #4EH      ;Wypisanie na ekranie "N".
  68. ;LCDcharWR
  69. ;MOV A, #49H      ;Wypisanie na ekranie "I".
  70. ;LCDcharWR
  71. ;MOV A, #41H      ;Wypisanie na ekranie "A".
  72. ;LCDcharWR
  73.  
  74. ;LCDcntrlWR #HOM2   ;Przeniesienie kursora do drugiej linii
  75.  
  76. ;MOV A, #32H      ;Wypisanie na ekranie "2".
  77. ;LCDcharWR
  78. ;MOV A, #2EH      ;Wypisanie na ekranie ".".
  79. ;LCDcharWR
  80. ;MOV A, #4CH      ;Wypisanie na ekranie "L".
  81. ;LCDcharWR
  82. ;MOV A, #49H      ;Wypisanie na ekranie "I".
  83. ;LCDcharWR
  84. ;MOV A, #4EH      ;Wypisanie na ekranie "N".
  85. ;LCDcharWR
  86. ;MOV A, #49H      ;Wypisanie na ekranie "I".
  87. ;LCDcharWR
  88. ;MOV A, #41H      ;Wypisanie na ekranie "A".
  89. ;LCDcharWR
  90.  
  91. ;Drugie zadanie.
  92. MOV DPTR, #8000h   ;Ustawienie rejestru wskaźnika dancyh na #8000h
  93. MOV A,#'A'        
  94. MOVX @DPTR,A       ;Wpisanie na pozycje #8000h, A
  95.  
  96. MOV DPTR, #8001h   ;Ustawienie rejestru wskaźnika dancyh na #8001h
  97. MOV A,#'L'        
  98. MOVX @DPTR,A       ;Wpisanie na pozycje #8001h, L
  99.  
  100. MOV DPTR, #8002h   ;Ustawienie rejestru wskaźnika dancyh na #8002h
  101. MOV A,#'A'
  102. MOVX @DPTR,A       ;Wpisanie na pozycje #8002h, A
  103.  
  104. MOV DPTR, #8003h   ;Ustawienie rejestru wskaźnika dancyh na #8003h
  105. MOV A,' '
  106. MOVX @DPTR,A       ;Wpisanie na pozycje #8003h, spacja
  107.  
  108. MOV DPTR, #8004h   ;Ustawienie rejestru wskaźnika dancyh na #8004h
  109. MOV A,#'M'
  110. MOVX @DPTR,A       ;Wpisanie na pozycje #8004h, M
  111.  
  112. MOV DPTR, #8005h   ;Ustawienie rejestru wskaźnika dancyh na #8005h
  113. MOV A,#'A'
  114. MOVX @DPTR,A       ;Wpisanie na pozycje #8005h, A
  115.  
  116. MOV DPTR, #8006h   ;Ustawienie rejestru wskaźnika dancyh na #8006h
  117. MOV A,#' '
  118. MOVX @DPTR,A       ;Wpisanie na pozycje #8006h, spacja
  119.  
  120. MOV DPTR, #8007h   ;Ustawienie rejestru wskaźnika dancyh na #8007h
  121. MOV A,#'K'
  122. MOVX @DPTR,A       ;Wpisanie na pozycje #8007h, K
  123.  
  124. MOV DPTR, #8008h   ;Ustawienie rejestru wskaźnika dancyh na #8008h
  125. MOV A,#'O'
  126. MOVX @DPTR,A       ;Wpisanie na pozycje #8008h, O
  127.  
  128. MOV DPTR, #8009h   ;Ustawienie rejestru wskaźnika dancyh na #8009h
  129. MOV A,#'T'
  130. MOVX @DPTR,A       ;Wpisanie na pozycje #8009h, T
  131.  
  132. MOV DPTR, #800Ah   ;Ustawienie rejestru wskaźnika dancyh na #800Ah
  133. MOV A,#'A'
  134. MOVX @DPTR,A       ;Wpisanie na pozycje #800Ah, A
  135.  
  136. MOV DPTR, #800Bh   ;Ustawienie rejestru wskaźnika dancyh na #800Bh
  137. MOV A,#' '
  138. MOVX @DPTR,A       ;Wpisanie na pozycje #800Bh, spacja
  139.  
  140. MOV DPTR, #800Ch   ;Ustawienie rejestru wskaźnika dancyh na #800Ch
  141. MOV A,#'A'
  142. MOVX @DPTR,A       ;Wpisanie na pozycje #800Ch, A
  143.  
  144. MOV DPTR, #800Dh   ;Ustawienie rejestru wskaźnika dancyh na #800Dh
  145. MOV A,#'L'
  146. MOVX @DPTR,A       ;;Wpisanie na pozycje #800Dh, L
  147.  
  148. MOV DPTR, #800Eh   ;Ustawienie rejestru wskaźnika dancyh na #800Eh
  149. MOV A,#'A'
  150. MOVX @DPTR,A       ;Wpisanie na pozycje #800Eh, A
  151.  
  152. MOV DPTR, #800Fh   ;Ustawienie rejestru wskaźnika dancyh na #800Fh
  153. MOV A,#' '
  154. MOVX @DPTR,A       ;Wpisanie na pozycje #800Fh, spacja
  155.  
  156. MOV DPTR, #8016h   ;Ustawienie rejestru wskaźnika dancyh na #8016h
  157. MOV A,#'M'
  158. MOVX @DPTR,A       ;Wpisanie na pozycje #8016h, M
  159.  
  160. MOV DPTR, #8017h   ;Ustawienie rejestru wskaźnika dancyh na #8017h
  161. MOV A,00H
  162. MOVX @DPTR,A
  163.  
  164. MOV DPTR, #8000H   ;Ustawienie rejestru wskaźnika dancyh na #8000h
  165. MOV R2, #00H       ;Wyzerowanie licznika
  166.  
  167. ;Nie zdążyliśmy wykonać pętli wypisującej na wyświetlaczu, oraz zliczającej liczbę wypisanych liter.
  168.  
  169. NOP              ;Oczekiwanie przez 1 cykl maszynowy
  170. NOP
  171. NOP
  172. END START:       ;Zakończenie pętli START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement