Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; Constants
  2. WR_CMD      EQU 0FF2CH
  3. WR_DATA     EQU 0FF2DH 
  4. READ_STAT   EQU 0FF2EH
  5. READ_DATA   EQU 0FF2FH
  6.  
  7. INIT_DISP   EQU 038H
  8. CLEAR       EQU 001H
  9. LCD_ON      EQU 00FH
  10.  
  11. SEC:        DS 1
  12. MIN:        DS 1
  13. HOUR:       DS 1
  14. COUNT:      DS 1
  15. ;---------------------------
  16.     ORG 0
  17.     call lcd_init
  18.     SJMP $
  19.  
  20. ;---------------------------
  21. ; LCD commands
  22.  
  23.  
  24. ;-------------------------------------------
  25. ; Uses Acumulator
  26. ;-------------------------------------------
  27. lcd_init:
  28.     mov A, #INIT_DISP
  29.     call lcd_wr_cmd
  30.     mov A, #CLEAR
  31.     call lcd_wr_cmd
  32.     mov A, #LCD_ON
  33.     call lcd_wr_cmd
  34.     RET
  35.  
  36. ;-------------------------------------------
  37. ; A - command to send
  38. ;-------------------------------------------
  39. lcd_wr_cmd:
  40.     push ACC
  41.     mov DPTR, #READ_STAT
  42.  
  43.     LOOP_WR_CMD:
  44.         movx A, @DPTR
  45.         jb ACC.7, LOOP_WR_CMD
  46.         mov DPTR, #WR_CMD
  47.         pop ACC
  48.         movx @DPTR, A
  49.     RET
  50.  
  51. ;-------------------------------------------
  52. ; A - data to send
  53. ;-------------------------------------------
  54. lcd_wr_data:
  55.     push ACC
  56.     mov DPTR, #READ_STAT
  57.  
  58.     LOOP_WR_DATA:
  59.         movx A, @DPTR
  60.         jb ACC.7, LOOP_WR_DATA
  61.         mov DPTR, #WR_DATA
  62.         pop ACC
  63.         movx @DPTR, A
  64.     RET
  65.  
  66. ;-------------------------------------------
  67. ; A - char to write on display
  68. ;-------------------------------------------
  69. lcd_putc:
  70.     call lcd_wr_data
  71.     RET
  72.  
  73. ;-------------------------------------------
  74. ; A - decimal to write on display, uses A and B registers
  75. ;-------------------------------------------
  76. lcd_put_dec:
  77.     mov B, #10
  78.     div AB
  79.     add A, #'0'
  80.     call lcd_wr_data
  81.    
  82.     mov A, B
  83.     add A, #'0'
  84.     call lcd_wr_data
  85.     RET
  86.    
  87. ;-------------------------------------------
  88. ; A - position format A = (---yxxxx)
  89. ; Uses A, B, R6, R7
  90. ;-------------------------------------------   
  91. lcd_goto_xy:
  92.     anl A, #00011111b
  93.     jnb ACC.4, SET_X
  94.  
  95.     SET_Y:
  96.         anl A, #00001111b
  97.         add A, #40H
  98.        
  99.     SET_X: 
  100.          orl A, #010000000b
  101.  
  102.     call lcd_wr_cmd
  103.     RET
  104. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement