Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Constants
- WR_CMD EQU 0FF2CH
- WR_DATA EQU 0FF2DH
- READ_STAT EQU 0FF2EH
- READ_DATA EQU 0FF2FH
- INIT_DISP EQU 038H
- CLEAR EQU 001H
- LCD_ON EQU 00FH
- SEC: DS 1
- MIN: DS 1
- HOUR: DS 1
- COUNT: DS 1
- ;---------------------------
- ORG 0
- call lcd_init
- SJMP $
- ;---------------------------
- ; LCD commands
- ;-------------------------------------------
- ; Uses Acumulator
- ;-------------------------------------------
- lcd_init:
- mov A, #INIT_DISP
- call lcd_wr_cmd
- mov A, #CLEAR
- call lcd_wr_cmd
- mov A, #LCD_ON
- call lcd_wr_cmd
- RET
- ;-------------------------------------------
- ; A - command to send
- ;-------------------------------------------
- lcd_wr_cmd:
- push ACC
- mov DPTR, #READ_STAT
- LOOP_WR_CMD:
- movx A, @DPTR
- jb ACC.7, LOOP_WR_CMD
- mov DPTR, #WR_CMD
- pop ACC
- movx @DPTR, A
- RET
- ;-------------------------------------------
- ; A - data to send
- ;-------------------------------------------
- lcd_wr_data:
- push ACC
- mov DPTR, #READ_STAT
- LOOP_WR_DATA:
- movx A, @DPTR
- jb ACC.7, LOOP_WR_DATA
- mov DPTR, #WR_DATA
- pop ACC
- movx @DPTR, A
- RET
- ;-------------------------------------------
- ; A - char to write on display
- ;-------------------------------------------
- lcd_putc:
- call lcd_wr_data
- RET
- ;-------------------------------------------
- ; A - decimal to write on display, uses A and B registers
- ;-------------------------------------------
- lcd_put_dec:
- mov B, #10
- div AB
- add A, #'0'
- call lcd_wr_data
- mov A, B
- add A, #'0'
- call lcd_wr_data
- RET
- ;-------------------------------------------
- ; A - position format A = (---yxxxx)
- ; Uses A, B, R6, R7
- ;-------------------------------------------
- lcd_goto_xy:
- anl A, #00011111b
- jnb ACC.4, SET_X
- SET_Y:
- anl A, #00001111b
- add A, #40H
- SET_X:
- orl A, #010000000b
- call lcd_wr_cmd
- RET
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement