Advertisement
Guest User

Untitled

a guest
May 14th, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. LJMP START
  2.  
  3. P5 EQU 0F8H
  4. P7 EQU 0DBH
  5.  
  6. ;REJESTRY LCD
  7. LCDstatus equ 0FF2EH
  8. LCDcontrol equ 0FF2CH
  9. LCDdataWR equ 0FF2DH
  10. LCDdataRD equ 0FF2FH
  11.  
  12.  
  13. ;LCD CONTROL BYTES
  14. #define HOME 0x80
  15. #define INITDISP 0x38
  16. #define HOM2 0xc0
  17. #define LCDON 0x0e
  18. #define CLEAR 0x01
  19.  
  20. ORG 0100H
  21. putstrLCD:
  22.     CLR A
  23.     MOVC A,@A+DPTR
  24.     JZ EXIT
  25.     PUSH DPH
  26.     PUSH DPL
  27.     CALL putcharLCD
  28.     POP DPL
  29.     POP DPH
  30.     INC DPTR
  31.     SJMP putstrLCD
  32. EXIT:RET
  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
  46.         LOCAL loop1, charDoNowej, do_drugiej, od_nowa
  47.        
  48.         PUSH ACC
  49.         MOV A, R4
  50.         MOV B, #32
  51.         DIV AB
  52.         MOV A, B
  53.         JZ od_nowa
  54.  
  55.         MOV A, R4
  56.         MOV B, #16
  57.         DIV AB
  58.         MOV A, B
  59.         JZ do_drugiej
  60.         JMP charDoNowej
  61.  
  62. do_drugiej:      ;przenoszenie kursora do drugiej linii
  63.         LCDcntrlWR #HOM2
  64.         JMP charDoNowej
  65.                
  66. od_nowa:        ;czyszczenie wyswietlacza, kursor znow w 1 linii
  67.         LCDcntrlWR #HOME
  68.         LCDcntrlWR #CLEAR
  69.         MOV R4, #0
  70.         JMP charDoNowej
  71.  
  72. charDoNowej:           ;wstawienie znaku ktory wywolal zmiane linii na 1 pozycje nowej linii
  73.         POP ACC
  74.         PUSH DPL
  75.         PUSH DPH
  76.         PUSH ACC
  77. loop1:                 ;wypisanie znaku na wyswietlacz
  78.         MOV DPTR, #LCDstatus
  79.         MOVX A, @DPTR        
  80.         JB ACC.7, loop1
  81.         MOV DPTR, #LCDdataWR
  82.         POP ACC
  83.         MOVX @DPTR, A
  84.         POP DPH
  85.         POP DPL
  86.         INC R4
  87. ENDM
  88.    
  89.  
  90. init_LCD MACRO
  91.     LCDcntrlWR #INITDISP
  92.     LCDcntrlWR #CLEAR
  93.     LCDcntrlWR #LCDON
  94. ENDM
  95.  
  96. first_line MACRO
  97.     LCDcntrlWR #HOME
  98. ENDM
  99.  
  100. second_line MACRO
  101.     LCDcntrlWR #HOM2
  102. ENDM
  103.  
  104. putcharLCD:
  105.     LCDcharWR
  106.  
  107. norep:     ;funckja odpowiedzialna za brak repetycji - dziala na zasadzie martwej petli (a nawet dwoch)
  108.     PUSH ACC
  109.     MOV A, R1
  110.     MOV R1, #0FFH
  111.  
  112. loop1:
  113.     MOV R2, #0FFH
  114. loop2:
  115.     DJNZ R2, loop2       
  116.     DJNZ R1, loop1 
  117.  
  118.     MOV R1, A
  119.     POP ACC
  120. RET
  121.  
  122. START:
  123.     init_LCD
  124.     MOV DPH, #80H
  125.     MOV DPL, #77H
  126.     MOV A, #31H
  127.     MOVX @DPTR, A
  128.     MOV DPH, #80H
  129.     MOV DPL, #7BH
  130.     MOV A, #32H
  131.     MOVX @DPTR, A
  132.     MOV DPH, #80H
  133.     MOV DPL, #7DH
  134.     MOV A, #33H
  135.     MOVX @DPTR, A
  136.     MOV DPH, #80H
  137.     MOV DPL, #7EH
  138.     MOV A, #41H
  139.     MOVX @DPTR, A
  140.     MOV DPH, #80H
  141.     MOV DPL, #0B7H
  142.     MOV A, #34H
  143.     MOVX @DPTR, A
  144.     MOV DPH, #80H
  145.     MOV DPL, #0BBH
  146.     MOV A, #35H
  147.     MOVX @DPTR, A
  148.     MOV DPH, #80H
  149.     MOV DPL, #0BDH
  150.     MOV A, #36H
  151.     MOVX @DPTR, A
  152.     MOV DPH, #80H
  153.     MOV DPL, #0BEH
  154.     MOV A, #42H
  155.     MOVX @DPTR, A
  156.     MOV DPH, #80H
  157.     MOV DPL, #0D7H
  158.     MOV A, #37H
  159.     MOVX @DPTR, A
  160.     MOV DPH, #80H
  161.     MOV DPL, #0DBH
  162.     MOV A, #38H
  163.     MOVX @DPTR, A
  164.     MOV DPH, #80H
  165.     MOV DPL, #0DDH
  166.     MOV A, #39H
  167.     MOVX @DPTR, A
  168.     MOV DPH, #80H
  169.     MOV DPL, #0DEH
  170.     MOV A, #43H
  171.     MOVX @DPTR, A
  172.     MOV DPH, #80H
  173.     MOV DPL, #0E7H
  174.     MOV A, #2AH
  175.     MOVX @DPTR, A
  176.     MOV DPH, #80H
  177.     MOV DPL, #0EBH
  178.     MOV A, #30H
  179.     MOVX @DPTR, A
  180.     MOV DPH, #80H
  181.     MOV DPL, #0EDH
  182.     MOV A, #23H
  183.     MOVX @DPTR, A
  184.     MOV DPH, #80H
  185.     MOV DPL, #0EEH
  186.     MOV A, #44H
  187.     MOVX @DPTR, A
  188.     MOV R4, #0
  189.     MOV R5, #0
  190.            
  191.  
  192. PETLA:
  193.     MOV R0, #7FH
  194.     MOV A, R0
  195.     MOV P5, A
  196.     MOV A, P7
  197.     ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
  198.     MOV R1, A
  199.     CLR C
  200.     SUBB A, R0
  201.     JZ NEXT1 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
  202.     call norep
  203.     MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
  204.     MOV DPH, #80H
  205.     MOV DPL,A
  206.     MOVX A,@DPTR
  207.     LCDcharWR
  208.     MOV P1, A
  209.  
  210. PETLA2:
  211.     JZ PETLA
  212.  
  213. NEXT1:
  214.     MOV R0, #0BFH
  215.     MOV A, R0
  216.     MOV P5, A
  217.     MOV A, P7
  218.     ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
  219.     MOV R1, A
  220.     CLR C
  221.     SUBB A, R0
  222.     JZ NEXT2 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
  223.     call norep
  224.     MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
  225.     MOV DPH, #80H
  226.     MOV DPL, A
  227.     MOVX A, @DPTR
  228.     LCDcharWR
  229.     MOV P1, A
  230.  
  231. PETLA22:
  232.     JZ PETLA2
  233.  
  234. NEXT2:
  235.     MOV R0, #0DFH
  236.     MOV A, R0
  237.     MOV P5, A
  238.     MOV A, P7
  239.     ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
  240.     MOV R1, A
  241.     CLR C
  242.     SUBB A, R0
  243.     JZ NEXT3 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
  244.     call norep
  245.     MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
  246.     MOV DPH, #80H
  247.     MOV DPL, A
  248.     MOVX A, @DPTR
  249.     LCDcharWR
  250.     MOV P1, A
  251.  
  252. PETLA12:
  253.     JZ PETLA22
  254.  
  255. NEXT3:
  256.     MOV R0, #0EFH
  257.     MOV A, R0
  258.     MOV P5, A
  259.     MOV A, P7
  260.     ANL A, R0 ;W AKUMULATORZE JEST TO CO WPISALISMY DO R0
  261.     MOV R1, A
  262.     CLR C
  263.     SUBB A, R0
  264.     JZ PETLA12 ;JEZELI '0' PRZESKAKUJEMY DO KOLEJNEGO BLOKU
  265.     call norep
  266.     MOV A, R1 ; JEZELI NIE WYSZLO '0' TO PRZYWRACAMY WARTOSC AKUMULATORA
  267.     MOV DPH, #80H
  268.     MOV DPL, A
  269.     MOVX A, @DPTR
  270.     LCDcharWR      
  271.     MOV P1, A
  272.  
  273. JMP PETLA
  274. NOP
  275. NOP
  276. NOP
  277. JMP $
  278. END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement