;;EXTERN VARI
EXTERN CT1:BYTE
LCMDELAYCT EQU CT1
;PUBLIC PROC
PUBLIC LCMWRITELINE1
PUBLIC LCMWRITELINE2
PUBLIC LCM_CLEARBUFFER2
PUBLIC LCMINITIAL
PUBLIC LCMCLEAR
;PUBLIC DATA
PUBLIC _LCMBUFFER1
PUBLIC LCMBUFFERCT
PUBLIC _LCMBUFFER2
PUBLIC LCMDELAY1600US
;============================================================================================
; DATA SECTION.
;============================================================================================
RAMBANK 1 BUFFERDATASG
BUFFERDATASG .SECTION 'DATA'
_LCMBUFFER1 DB 16 DUP(20H)
_LCMBUFFER2 DB 16 DUP(31H)
LCMDATASG .SECTION 'DATA'
LCMBUFFERCT DB ?
;------------------------------------------------------
;============================================================================================
; CODE SECTION.
;============================================================================================
LCMCODESG .SECTION 'CODE'
;--------------------------------------
LCMDELAY40US PROC
CLR LCMEN
SET LCMEN
MOV A,LCM_DELAY_40US
MOV LCMDELAYCT,A
LCMDELAY40_1:
DEC LCMDELAYCT
SZ LCMDELAYCT
JMP LCMDELAY40_1
RET
LCMDELAY40US ENDP
LCMDELAY1600US PROC
CLR LCMEN
SET LCMEN
MOV A,LCM_DELAY_1600US
MOV LCMDELAYCT,A
LCMDELAY1600_1:
DEC LCMDELAYCT
SZ LCMDELAYCT
JMP LCMDELAY1600_1
RET
LCMDELAY1600US ENDP
;--------------------------------------
LCMINITIAL PROC
SET LCMCS
MOV A,0E0H ;_LCDIO=0XE0;
MOV LCDIO,A
CLR PEC ;_PEC=0X00;
CLR PDC ;_PDC=0X00;
CALL LCMDELAY40US
CLR LCMRS
CLR LCMRW
CLR LCMEN
MOV A,038H ;FUNCTION SET
MOV LCMDATA,A
CALL LCMDELAY1600US
MOV A,038H
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,08H ;LCM OFF
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,01H ;CLEAR DISPLAY
MOV LCMDATA,A
CALL LCMDELAY1600US
MOV A,06H ;CURSOR RETURN
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,038H
MOV LCMDATA,A
CALL LCMDELAY40US
CALL LCMDELAY1600US
MOV A,0CH
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,06H
MOV LCMDATA,A
CALL LCMDELAY40US
CALL LCMCLEAR
RET
LCMINITIAL ENDP
;--------------------------------------
LCMWRITELINE1 PROC
MOV A,080H
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,BANK _LCMBUFFER1
MOV BP,A
MOV A,OFFSET _LCMBUFFER1
MOV MP1,A
MOV A,010H
MOV LCMBUFFERCT,A
LCMWRITELOOP116:
SET LCMRS
MOV A,IAR1
XOR A,0FFH
SZ Z
JMP WRBLANK1
MOV A,IAR1
JMP WRDATA1
WRBLANK1:
MOV A,20H
WRDATA1:
MOV LCMDATA,A
CALL LCMDELAY40US
CLR LCMRS
INC MP1
SDZ LCMBUFFERCT
JMP LCMWRITELOOP116
LCMWRITEEND1:
MOV A,06H
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,02H
MOV LCMDATA,A
CALL LCMDELAY1600US
RET
LCMWRITELINE1 ENDP
;--------------------------------------
LCMWRITELINE2 PROC
MOV A,0C0H
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,BANK _LCMBUFFER2
MOV BP,A
MOV A,OFFSET _LCMBUFFER2
MOV MP1,A
MOV A,010H
MOV LCMBUFFERCT,A
LCMWRITELOOP216:
SET LCMRS
MOV A,IAR1
XOR A,0FFH
SZ Z
JMP WRBLANK2
MOV A,IAR1
JMP WRDATA2
WRBLANK2:
MOV A,20H
WRDATA2:
MOV LCMDATA,A
CALL LCMDELAY40US
CLR LCMRS
INC MP1
SDZ LCMBUFFERCT
JMP LCMWRITELOOP216
LCMWRITEEND2:
MOV A,06H
MOV LCMDATA,A
CALL LCMDELAY40US
MOV A,02H
MOV LCMDATA,A
CALL LCMDELAY1600US
RET
LCMWRITELINE2 ENDP
;--------------------------------------
LCMCLEAR PROC
MOV A,BANK _LCMBUFFER1
MOV BP,A
MOV A,OFFSET _LCMBUFFER1
MOV MP1,A
MOV A,010H
MOV LCMBUFFERCT,A
LCMCLEARLOOP16:
MOV A,020H
MOV IAR1,A
INC MP1
SDZ LCMBUFFERCT
JMP LCMCLEARLOOP16
CALL LCMWRITELINE1
MOV A,BANK _LCMBUFFER2
MOV BP,A
MOV A,OFFSET _LCMBUFFER2
MOV MP1,A
MOV A,010H
MOV LCMBUFFERCT,A
LCMCLEARLOOP26:
MOV A,020H
MOV IAR1,A
INC MP1
SDZ LCMBUFFERCT
JMP LCMCLEARLOOP26
CALL LCMWRITELINE2
RET
LCMCLEAR ENDP
;;=========================================================================================
;;=================================================================================================
LCM_CLEARBUFFER2 PROC
MOV A,BANK _LCMBUFFER2
MOV BP,A
MOV A,OFFSET _LCMBUFFER2
MOV MP1,A
MOV A,010H
MOV LCMBUFFERCT,A
LCM_CLEARBUFFER16:
MOV A,020H
MOV IAR1,A
INC MP1
SDZ LCMBUFFERCT
JMP LCM_CLEARBUFFER16
RET
LCM_CLEARBUFFER2 ENDP