Advertisement
Guest User

lab4

a guest
May 8th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. READ_STATUS         EQU 0FF2EH
  2. WRITE_CMD           EQU 0FF2CH
  3. WRITE_DATA          EQU 0FF2DH
  4.    
  5. INIT_LCD            EQU 038H
  6. CLEAR_LCD           EQU 001H
  7. TURN_ON_LCD         EQU 06H
  8. CURSOR_SECOND_LINE  EQU 40H
  9. SHIFT_RIGHT         EQU 14H
  10. CURSOR_HIDE         EQU 0CH
  11.  
  12. ORG 0
  13.  
  14. START:
  15.     LCALL INITIALIZE_LCD
  16.  
  17.     LCALL HIDE_CURSOR
  18.  
  19.     MOV A, #7
  20.     LCALL SET_CURSOR
  21.  
  22.     MOV A, #'H'
  23.     LCALL WRITE_CHAR
  24.     MOV A, #'W'
  25.     LCALL WRITE_CHAR
  26.     MOV A, #':'
  27.     LCALL WRITE_CHAR
  28.     MOV A, #' '
  29.     LCALL WRITE_CHAR
  30.  
  31.     ;LCALL CLEAR_DISPLAY
  32.    
  33.     MOV A, #3
  34.     SETB ACC.4
  35.     LCALL SET_CURSOR
  36.  
  37.     MOV DPTR, #INPUT_STRING
  38.     LCALL WRITE_STRING
  39.  
  40.    
  41.  
  42.     SJMP $
  43.  
  44.  
  45. INITIALIZE_LCD:
  46.     MOV A, #INIT_LCD
  47.     LCALL WRITE_TO_CMD
  48.     MOV A, #CLEAR_LCD
  49.     LCALL WRITE_TO_CMD
  50.     MOV A, #TURN_ON_LCD
  51.     LCALL WRITE_TO_CMD
  52.     RET
  53.  
  54. WRITE_TO_CMD:
  55.     PUSH ACC
  56.     MOV DPTR, #READ_STATUS
  57. WRITE_TO_CMD_LOOP:
  58.     MOVX A, @DPTR
  59.     JB ACC.7, WRITE_TO_CMD_LOOP
  60.     MOV DPTR, #WRITE_CMD
  61.     POP ACC
  62.     MOVX @DPTR, A
  63.     RET
  64.  
  65. WRITE_CHAR:
  66.     PUSH ACC
  67.     MOV DPTR, #READ_STATUS
  68. WRITE_CHAR_LOOP:
  69.     MOVX A, @DPTR
  70.     JB ACC.7, WRITE_CHAR_LOOP
  71.     MOV DPTR, #WRITE_DATA
  72.     POP ACC
  73.     MOVX @DPTR, A
  74.     RET
  75.  
  76. WRITE_STRING:
  77.     CLR A
  78.     MOVC A, @A+DPTR
  79.     JZ WRITE_STRING_END
  80.     PUSH DPH
  81.     PUSH DPL
  82.     LCALL WRITE_CHAR
  83.     POP DPL
  84.     POP DPH
  85.     INC DPTR
  86.     SJMP WRITE_STRING
  87. WRITE_STRING_END:
  88.     RET
  89.  
  90. SET_CURSOR:
  91.    
  92.     JNB ACC.4, SET_CURSOR_FIRST_LINE
  93.     CLR ACC.4
  94.     ADD A, #CURSOR_SECOND_LINE
  95.  
  96. SET_CURSOR_FIRST_LINE:
  97.    
  98.     ADD A, #80H
  99.     CALL WRITE_TO_CMD
  100.     RET
  101.  
  102. SHIFT_CURSOR_RIGHT:
  103.     MOV A, #SHIFT_RIGHT
  104.  
  105.     CALL WRITE_TO_CMD
  106.     RET
  107.  
  108. CLEAR_DISPLAY:
  109.     MOV A, #CLEAR_LCD
  110.  
  111.     CALL WRITE_TO_CMD
  112.     RET
  113.  
  114. HIDE_CURSOR:
  115.     MOV A, #CURSOR_HIDE
  116.  
  117.     CALL WRITE_TO_CMD
  118.     RET
  119.  
  120. INPUT_STRING: DB 'HELLO WORLD', 0
  121.  
  122. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement