Advertisement
Guest User

Untitled

a guest
May 14th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. LJMP START
  2. LCDstatus equ 0FF2EH    //adres do odczytu gotowosci
  3. LCDcontrol equ 0FF2CH   //adres do podania bajtu sterującego
  4. LCDdataWR equ 0FF2DH    //adres do podania kodu ASCII na LCD
  5. LCDdataRD equ 0FF2FH
  6.  
  7. //bajty sterujace LCD
  8. #define HOME 0x80  //ustawienie kursora na druga linie
  9. #define INITDISP 0x38 //inicjalizacja
  10. #define HOM2 0xc0 //ustawienie kursora na druga linie
  11. #define LCDON 0x0e  //wlaczenie wyswietlacza, ustawienie opcji
  12. #define CLEAR 0x01  // czyszczenie wyswietlacza
  13.  
  14. ORG 0100H
  15.  
  16. //macro do wprowadzenia bajtu sterujacego na LCD
  17. LCDcntrlWR MACRO x  // x - parametr wywolania makra - bajt sterujacy
  18.     LOCAL loop      //zmienna lokalna - moze sie powtorzyc w programie
  19.  
  20. loop:
  21.     mov DPTR,#LCDstatus //DPTR załadowany adresem statusu
  22.     movx A,@DPTR        //pobranie bajtu z biezacym statusem LCD
  23.     jb ACC.7,loop   //jesli lcd zajety skacz do etykiety loop
  24.  
  25.     mov DPTR,#LCDcontrol    //DPTR zaladowany adresem do podania bajtu sterującego
  26.     mov A,x         //do akumulatora trafia argument wywolania macra-bajt sterujący
  27.     movx @DPTR,A    //bajt sterujacy podany do LCD - akcja widoczna na LCD
  28.  
  29.     ENDM
  30.  
  31. //macro do wypisania znaku ASCII na LCD, znak ASCII przed wywołaniem macra ma być w A
  32. LCDcharWR MACRO
  33.     LOCAL loop1     //local oznacza ze etykieta loop1 moze powtorzyc sie w programie
  34.     push ACC        //odlozenie biezacej wartosci akumulatora na stos
  35. loop1:
  36.     mov DPTR,#LCDstatus     //DPTR zaladowany adresem statusu
  37.     movx A,@DPTR            //pobranie bajtu z aktualnym statusem LCD
  38.     jb ACC.7,loop1  //jesli lcd zajety skacz do etykiety loop
  39.  
  40.     mov DPTR,#LCDdataWR     //DPTR zaladowany adresem do podania bajtu sterujacego
  41.     pop ACC             //w akumulatorze ponownie kod ASCII znaku na LCD
  42.     movx @DPTR,A        //kod ASCII podany do LCD - znak widoczny na LCD
  43.     ENDM
  44.  
  45. //macro do inicjalizacji wyswietlacza - bez parametrów
  46. init_LCD MACRO
  47.     LCDcntrlWR #INITDISP    //wywolanie makra LCDcntrlWR - inicjalizacja LCD
  48.     LCDcntrlWR #CLEAR       //wywolanie makra LCDcntrlWR - czyszczenie LCD
  49.     LCDcntrlWR #LCDON       //wywolanie makra LCDcntrlWR - konfiguracja kursora
  50.     ENDM
  51.  
  52. START:
  53.     init_LCD
  54.     mov A,#41H      //zaladowanie znaku 'A' do akumulatora
  55.     LCDcharWR       //wywolanie macra
  56.  
  57.     mov A,#4CH      //zaladowanie znaku 'L' do akumulatora
  58.     LCDcharWR       //wywolanie macra
  59.  
  60.     mov A,#41H      //zaladowanie znaku 'A'
  61.     LCDcharWR       //wywolanie macra
  62.  
  63.     LCDcntrlWR #HOM2    //przejscie do nastepnej linii
  64.  
  65.     mov A,#4BH      //zaladowanie znaku 'K' do akumulatora
  66.     LCDcharWR       //wywolanie macra
  67.  
  68.     mov A,#4FH      //zaladowanie znaku 'O' do akumulatora
  69.     LCDcharWR       //wywolanie macra
  70.  
  71.     mov A,#54H      //zaladowanie znaku 'T' do akumulatora
  72.     LCDcharWR       //wywolanie macra
  73.  
  74.     NOP     //no operation
  75.     NOP
  76.     NOP
  77.     jmp $
  78.     END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement