Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Podstawy techniki mikroprocesorowej
- ; Sprawozdanie Laboratorium 3
- ; Temat: Obsługa wyświetlacza LCD.
- ; Data zajęć w laboratorium: 17.04.18
- ; Przygotowali: Marcel Domagała i Kamil Skarbież
- LJMP START ;Skok do miejsca oznaczonego START
- ;czyli do pętli głównej programu
- LCDstatus equ 0FF2EH ;Adres w pamięci XRAM dla linii odczytu statusu
- LCDControl equ 0FF2CH ;Adres w pamięci XRAM dla linii sterowania
- LCDdataWR equ 0FF2DH ;Adres w pamięci XRAM dla linii zapisu danych
- #define HOME 0x80 ;Umieszczanie kursora w drugiej linii
- #define INITDISP 0x38 ;Zainicjowanie wyświetlacza(w trybie 8-bit)
- #define HOM2 0xc0 ;Umieszczanie kursora w drugiej linii
- #define LCDON 0x0e ;Właczenie wyświetlacza, Wyłączenie kursora, wyłączenie migania
- #define CLEAR 0x01 ;Czyszczenie wyświetlacza
- ORG 0100H ;Rozpoczęcie programu od adresu 0x0100
- LCDcntrlWR MACRO x ;Makro przesyłajace zawartość na linię sterowania
- LOCAL loop
- loop:
- MOVDPTR,#LCDstatus ;Pętla sprawdzająca zajętość wyświetlacza
- MOVX A,@DPTR ;Przesłanie wartości spod adresu w DPTR do akumulatora
- JB ACC.7,loop ;Sprawdzenie, czy wyświetlacz jest zajęty
- MOV DPTR,#LCDcontrol ;Zapisanie do LCD control
- MOV A,x
- MOVX @DPTR,A ;Przesłanie zawartości akumulatora na linię sterowania
- ENDM
- LCDcharWR MACRO ;Makro pozwalajace wypisać zmienna na wyświetlaczu
- LOCAL tutu
- PUSH ACC ;Odłożenie akumulatora na stos
- tutu:
- MOV DPTR,#LCDstatus ;Pętla sprawdzająca zajętość wyświetlacza
- MOVX A,@DPTR ;Przesłanie wartości spod adresu w DPTR do akumulatora
- JB ACC.7,tutu ;Sprawdzenie czy wyświetlacz jest zajęty
- MOV DPTR,#LCDdataWR ;Wypisanie zmiennej na wyświetlaczu
- POP ACC ;Zdjęcie akumulatora ze stosu
- MOVX @DPTR,A ;Przesłanie zawartości akumulatora na linię sterowania
- ENDM
- init_LCD MACRO ;Zainicjowanie wyświetlacza, wyczyszczenie, włączenie.
- LCDcntrlWR #INITDISP
- LCDcntrlWR #CLEAR
- LCDctnrlWR #LCDON
- ENDM
- START: ;Rozpoczęcie pętli START
- ;init_LCD ;Zainicjowanie wyświetlacza
- ;MOV A, #31H ;Wypisanie na ekranie "1".
- ;LCDcharWR
- ;MOV A, #2EH ;Wypisanie na ekranie ".".
- ;LCDcharWR
- ;MOV A, #4CH ;Wypisanie na ekranie "L".
- ;LCDcharWR
- ;MOV A, #49H ;Wypisanie na ekranie "I".
- ;LCDcharWR
- ;MOV A, #4EH ;Wypisanie na ekranie "N".
- ;LCDcharWR
- ;MOV A, #49H ;Wypisanie na ekranie "I".
- ;LCDcharWR
- ;MOV A, #41H ;Wypisanie na ekranie "A".
- ;LCDcharWR
- ;LCDcntrlWR #HOM2 ;Przeniesienie kursora do drugiej linii
- ;MOV A, #32H ;Wypisanie na ekranie "2".
- ;LCDcharWR
- ;MOV A, #2EH ;Wypisanie na ekranie ".".
- ;LCDcharWR
- ;MOV A, #4CH ;Wypisanie na ekranie "L".
- ;LCDcharWR
- ;MOV A, #49H ;Wypisanie na ekranie "I".
- ;LCDcharWR
- ;MOV A, #4EH ;Wypisanie na ekranie "N".
- ;LCDcharWR
- ;MOV A, #49H ;Wypisanie na ekranie "I".
- ;LCDcharWR
- ;MOV A, #41H ;Wypisanie na ekranie "A".
- ;LCDcharWR
- ;Drugie zadanie.
- MOV DPTR, #8000h ;Ustawienie rejestru wskaźnika dancyh na #8000h
- MOV A,#'A'
- MOVX @DPTR,A ;Wpisanie na pozycje #8000h, A
- MOV DPTR, #8001h ;Ustawienie rejestru wskaźnika dancyh na #8001h
- MOV A,#'L'
- MOVX @DPTR,A ;Wpisanie na pozycje #8001h, L
- MOV DPTR, #8002h ;Ustawienie rejestru wskaźnika dancyh na #8002h
- MOV A,#'A'
- MOVX @DPTR,A ;Wpisanie na pozycje #8002h, A
- MOV DPTR, #8003h ;Ustawienie rejestru wskaźnika dancyh na #8003h
- MOV A,' '
- MOVX @DPTR,A ;Wpisanie na pozycje #8003h, spacja
- MOV DPTR, #8004h ;Ustawienie rejestru wskaźnika dancyh na #8004h
- MOV A,#'M'
- MOVX @DPTR,A ;Wpisanie na pozycje #8004h, M
- MOV DPTR, #8005h ;Ustawienie rejestru wskaźnika dancyh na #8005h
- MOV A,#'A'
- MOVX @DPTR,A ;Wpisanie na pozycje #8005h, A
- MOV DPTR, #8006h ;Ustawienie rejestru wskaźnika dancyh na #8006h
- MOV A,#' '
- MOVX @DPTR,A ;Wpisanie na pozycje #8006h, spacja
- MOV DPTR, #8007h ;Ustawienie rejestru wskaźnika dancyh na #8007h
- MOV A,#'K'
- MOVX @DPTR,A ;Wpisanie na pozycje #8007h, K
- MOV DPTR, #8008h ;Ustawienie rejestru wskaźnika dancyh na #8008h
- MOV A,#'O'
- MOVX @DPTR,A ;Wpisanie na pozycje #8008h, O
- MOV DPTR, #8009h ;Ustawienie rejestru wskaźnika dancyh na #8009h
- MOV A,#'T'
- MOVX @DPTR,A ;Wpisanie na pozycje #8009h, T
- MOV DPTR, #800Ah ;Ustawienie rejestru wskaźnika dancyh na #800Ah
- MOV A,#'A'
- MOVX @DPTR,A ;Wpisanie na pozycje #800Ah, A
- MOV DPTR, #800Bh ;Ustawienie rejestru wskaźnika dancyh na #800Bh
- MOV A,#' '
- MOVX @DPTR,A ;Wpisanie na pozycje #800Bh, spacja
- MOV DPTR, #800Ch ;Ustawienie rejestru wskaźnika dancyh na #800Ch
- MOV A,#'A'
- MOVX @DPTR,A ;Wpisanie na pozycje #800Ch, A
- MOV DPTR, #800Dh ;Ustawienie rejestru wskaźnika dancyh na #800Dh
- MOV A,#'L'
- MOVX @DPTR,A ;;Wpisanie na pozycje #800Dh, L
- MOV DPTR, #800Eh ;Ustawienie rejestru wskaźnika dancyh na #800Eh
- MOV A,#'A'
- MOVX @DPTR,A ;Wpisanie na pozycje #800Eh, A
- MOV DPTR, #800Fh ;Ustawienie rejestru wskaźnika dancyh na #800Fh
- MOV A,#' '
- MOVX @DPTR,A ;Wpisanie na pozycje #800Fh, spacja
- MOV DPTR, #8016h ;Ustawienie rejestru wskaźnika dancyh na #8016h
- MOV A,#'M'
- MOVX @DPTR,A ;Wpisanie na pozycje #8016h, M
- MOV DPTR, #8017h ;Ustawienie rejestru wskaźnika dancyh na #8017h
- MOV A,00H
- MOVX @DPTR,A
- MOV DPTR, #8000H ;Ustawienie rejestru wskaźnika dancyh na #8000h
- MOV R2, #00H ;Wyzerowanie licznika
- ;Nie zdążyliśmy wykonać pętli wypisującej na wyświetlaczu, oraz zliczającej liczbę wypisanych liter.
- NOP ;Oczekiwanie przez 1 cykl maszynowy
- NOP
- NOP
- END START: ;Zakończenie pętli START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement