Advertisement
Guest User

Untitled

a guest
Apr 28th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. LJMP START
  2.  
  3. ;REJESTRY LCD
  4. LCDstatus equ 0FF2EH
  5. LCDcontrol equ 0FF2CH
  6. LCDdataWR equ 0FF2DH
  7. LCDdataRD equ 0FF2FH
  8.  
  9. ;LCD CONTROL BYTES
  10. #define HOME 0x80
  11. #define INITDISP 0x38
  12. #define HOM2 0xc0
  13. #define LCDON 0x0e
  14. #define CLEAR 0x01
  15.  
  16. putstrLCD: ;funkcja wypisujaca lancuch znakow na wyswietlacz
  17.     CLR A
  18.     MOVC A,@A+DPTR
  19.     JZ EXIT
  20.     PUSH DPH
  21.     PUSH DPL
  22.     CALL putcharLCD
  23.     POP DPL
  24.     POP DPH
  25.     INC DPTR
  26.     SJMP putstrLCD
  27. EXIT:RET
  28.  
  29. ORG 0100H
  30.  
  31. text: DB "Jakis tekst", 00 ;przypisanie napisu "Jakis tekst" do zmiennej text
  32. text2: DB "Jakis drugi tekst", 00 ;przypisanie napisu "Jakis tekst" do zmiennej text2
  33.  
  34. LCDcntrlWR MACRO x
  35.     LOCAL loop
  36. loop:
  37.     MOV DPTR,#LCDstatus
  38.     MOVX A,@DPTR
  39.     JB ACC.7,loop
  40.     MOV DPTR,#LCDcontrol
  41.     MOV A,x
  42.     MOVX @DPTR,A
  43.     ENDM
  44.  
  45. LCDcharWR MACRO ;funkcja wypisujaca pojedynczy znak na wyswietlacz
  46.     LOCAL loop1,loop2
  47.     PUSH ACC
  48. loop1:
  49.     MOV DPTR,#LCDstatus
  50.     MOVX A,@DPTR
  51.     JB ACC.7,loop1
  52.  
  53. loop2:
  54.     MOV DPTR, #LCDdataWR
  55.     POP ACC
  56.     MOVX @DPTR,A
  57. ENDM
  58.  
  59. init_LCD MACRO ;funkcja inicjujaca wyswietlacza
  60.     LCDcntrlWR #INITDISP
  61.     LCDcntrlWR #CLEAR
  62.     LCDcntrlWR #LCDON
  63. ENDM
  64.  
  65. first_line MACRO ;funkcja ustawiajaca kursor w 1 linii wyswietlacza
  66.     LCDcntrlWR #HOME
  67. ENDM
  68.  
  69. second_line MACRO ;funkcja ustawiajaca kursor w 2 linii wyswietlacza
  70.     LCDcntrlWR #HOM2
  71. ENDM
  72.  
  73. putcharLCD:
  74. LCDcharWR
  75. RET
  76.  
  77. START:
  78.     init_LCD    ;zainicjowanie wyswietlacza
  79.  
  80.     first_line  ;wywolanie funkcji first_line ustawiajacej kursor w 1 lini wyswietlacza
  81.     MOV A,#61H  ;przypisanie kodu ASCII znaku 'a' do akumulatora
  82.     LCDcharWR   ;wywolanie funkcji LCDcharWR wypisujacej znak na wyswietlacz
  83.  
  84.     second_line ;wywolanie funkcji second_line ustawiajacej kursor w 2 lini wyswietlacza
  85.     MOV A,#62H  ;przypisanie kodu ASCII znaku 'b' do akumulatora
  86.     LCDcharWR   ;wywolanie funkcji LCDcharWR wypisujacej znak na wyswietlac
  87.  
  88.     first_line  ;powrotne ustawienie kursora w 1 linii wyswietlacza
  89.     MOV DPTR,#text ;zaladowanie adresu do wskaznika danych DPTR
  90.     CALL putstrLCD ;wywolanie funkcji putstrLCD wypisujacej lancuch znakow na wyswietlacz
  91.  
  92.    
  93. NOP
  94. NOP
  95. NOP
  96. JMP $
  97. END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement