📄 t16064.asm
字号:
;*************************************************************************
; Testing Program for 16064A Graphic LCM
;*************************************************************************
;------------------- 1. 8051 PORT DEFINE ---------------------------------
WR_ BIT P3.6 ; WRITE SIGNAL
RD_ BIT P3.7 ; READ SIGNAL
CE BIT P2.7 ; CHIP ENABLE SIGNAL, LOW LEVEL:ENABLE
CD BIT P2.6 ; H:INSTRUCTION DATA; L:DISPLAY DATA
RST BIT P1.4 ; RESET SIGNAL
FS BIT P3.2 ; Font Select (INT0)
DBUS EQU P0 ; Data Bus
DTADDR EQU 3FFFH
CMADDR EQU 7FFFH
;------------------- 2. 8051 RAM DEFINE ------------------------------
IR EQU 22H
DR1 EQU 23H
DR2 EQU 24H
DTREG EQU 25H
LOOPNUM EQU 26H
LOOPBLK EQU 27H
ROW_LINE EQU 65
COL_UNIT EQU 20
X_LOC EQU 28H
Y_LOC EQU 29H
DLYTIME EQU 2AH
;------------------- 3. COMMAND CODE DEFINE --------------------------
DW_ADP_I EQU 0C0H
DR_ADP_I EQU 0C1H
;=====================================================================
ORG 0000H
LJMP START
ORG 0013H
LJMP KEY_PRS
ORG 0030H
START:
MOV SP,#50H
MOV DLYTIME,#35
MOV TCON,#00001100B
MOV IE,#10000100B
BEGIN:
ACALL INIT_T6963C
;**********************************************************
; GRAPHIC MODE
;**********************************************************
MOV DTREG,#0FFH
ACALL ALLSCR
LCALL DELAYL
MOV DTREG,#000H
ACALL ALLSCR
MOV DTREG,#0AAH
ACALL ALLSCR
LCALL DELAYL
MOV DTREG,#055H
ACALL ALLSCR
LCALL DELAYL
MOV DTREG,#000H
ACALL ALLSCR
;----------------------------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0078H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,#ROW_LINE
H1_LOOT:
MOV R7,#COL_UNIT
H1_LOO1: MOV A,#0FFH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H1_LOO1
MOV R7,#COL_UNIT
H1_LOO2: MOV A,#000H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H1_LOO2
DJNZ R6,H1_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
;----------------------------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0078H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,#ROW_LINE
H2_LOOT:
MOV R7,#COL_UNIT
H2_LOO1: MOV A,#000H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H2_LOO1
MOV R7,#COL_UNIT
H2_LOO2: MOV A,#0FFH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,H2_LOO2
DJNZ R6,H2_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
;----------------------------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0078H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,#ROW_LINE
X1_LOOT:
MOV R7,#COL_UNIT
X1_LOO1: MOV A,#0AAH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X1_LOO1
MOV R7,#COL_UNIT
X1_LOO2: MOV A,#055H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X1_LOO2
DJNZ R6,X1_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
;----------------------------------------------------------
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#000H ; ADDRESS POINTER 0078H
MOV R1,#000H ; R1-->ADDR_H, R0-->ADDR_L
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
MOV R6,#ROW_LINE
X2_LOOT:
MOV R7,#COL_UNIT
X2_LOO1: MOV A,#055H
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X2_LOO1
MOV R7,#COL_UNIT
X2_LOO2: MOV A,#0AAH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,X2_LOO2
DJNZ R6,X2_LOOT
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
; ACALL LOC_DEMO
ACALL DISP_ICON
LJMP BEGIN
;-------------------------------------------------------------------------
; LOCATE DISPLAY DEMO
;-------------------------------------------------------------------------
LOC_DEMO:
MOV DTREG,#00H
ACALL ALLSCR
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#14H ; ADDRESS POINTER 0014H
MOV R1,#00H
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
;------------------------------------------------
MOV R7,#20
LOO1: MOV A,#0FFH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,LOO1
MOV R0,#000H ; ADDRESS POINTER 0500H
MOV R1,#005H
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
;------------------------------------------------
MOV R7,#20
LOO2: MOV A,#0FFH
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,LOO2
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
RET
;----------------------------------------------------------
; Display Bitmap : "OLYLAI" at Screen
;----------------------------------------------------------
DISP_ICON:
MOV DPTR,#BITMAP
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
MOV R0,#14H ; ADDRESS POINTER 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
;------------------------------------------------
MOV R6,#ROW_LINE
LOP1: MOV R7,#COL_UNIT
LOP2: CLR A
MOVC A,@A+DPTR
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
INC DPTR
DJNZ R7,LOP2
DJNZ R6,LOP1
MOV IR,#98H
LCALL COMMAND_WR
LCALL DELAYL
RET
;-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
; Initialize Display Device
;===============================================================
INIT_T6963C:
CLR FS
;RESET T6963C
LCALL DELAYL ; RESET T6963C
CLR RST
LCALL DELAYL
SETB RST
LCALL DELAYL
MOV IR,#90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
;GRAPHIC HOME ADDRESS SET
MOV R0,#00H ; GRAPHIC HOME ADDRESS 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#42H ; GR_HOME
LCALL COMMAND_WR
;GRAPHIC AREA SET
MOV R0,#20 ; COLUMNS = 20 (8*20=160)
MOV R1,#00H
LCALL DT2
MOV IR,#43H ; GR_AREA
LCALL COMMAND_WR
;SET CURSOR LOCATION
MOV R0,#00H ; COUSOR POINTER LOCATE 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#21H
LCALL COMMAND_WR
;SET MODE ("OR" MODE,INTERNAL CHARACTER GENERATER MODE)
MOV IR,#80H
LCALL COMMAND_WR
;SET DISPLAY MODE (TEXT ON,GRAPHICS ON,CURSOR ON)
MOV IR,#93H
LCALL COMMAND_WR
RET
;===================================================================
ALLSCR:
MOV IR, #90H ; TURN OFF DISPLAY
LCALL COMMAND_WR
;------------------------------------------------
MOV R0,#00H ; ADDRESS POINTER 0000H
MOV R1,#00H
LCALL DT2
MOV IR,#24H
LCALL COMMAND_WR
;------------------------------------------------
MOV R6,#ROW_LINE ; 64*20*8 Dots
SLOOP1: MOV R7,#COL_UNIT ; 64*20 DDRAM Units
SLOOP2: MOV A,DTREG
LCALL DT1
MOV IR,#0C0H
LCALL COMMAND_WR
DJNZ R7,SLOOP2
DJNZ R6,SLOOP1
;------------------------------------------------
MOV IR,#98H
LCALL COMMAND_WR
;------------------------------------------------
RET
;****************************************************************************
;SUBROUTINE:COMMMAND WRITE,1&2-BYTE DATA WRITE,AUTO WRITE MODE,DELAY&DELAYA
;****************************************************************************
; COMMAND WRITE ROUTINE
COMMAND_WR:
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#CMADDR
MOV A,IR
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
; DATA WRITE (1 BYTE) ROUTINE
DT1:
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#DTADDR
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
; DATA WRITE (2 BYTE) ROUTINE
DT2:
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#DTADDR
MOV A,R0
MOVX @DPTR,A
MOV A,R1
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
;****************************************************************************
; CLEAR SCREEN
;****************************************************************************
CLRSCR:
MOV R0,#00H
MOV R1,#00H ; SET ADDRESS POINTER TO 0000H
LCALL DT2 ; (GRAPHIC HOME ADDRESS)
MOV IR,#24H ; ADPSET
LCALL COMMAND_WR
MOV IR,#0B0H ; AWRON (DATA AUTO WRITE SET)
LCALL COMMAND_WR
MOV R2,#01FH ; CLEAR ALL 8K
CLR1: MOV R3,#0FFH
CLR2: MOV A,#DR1 ; DATA WRITE
LCALL ADT ; (BLANK CODE WRITE)
DJNZ R3,CLR2
DJNZ R2,CLR1
MOV IR,#0B2H ; AWROFF (AUTO RESET)
LCALL COMMAND_WR
RET
; AUTO WRITE MODE ROUTINE
ADT:
PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#DTADDR
MOVX @DPTR,A
POP DPL
POP DPH
POP ACC
RET
;-------------------------------------------------------------------------
;
;-------------------------------------------------------------------------
DELAYL: MOV R5,DLYTIME
DELAY: MOV R6,#1FH
MOV R7,#50H
DEL: DJNZ R7,$
DJNZ R6,DEL
DJNZ R5,DELAY
RET
;-------------------------------------------------------------------------
;
;-------------------------------------------------------------------------
KEY_PRS:
MOV R4,#0
DJNZ R4,$
PUSH ACC
MOV A,DLYTIME
ADD A,#5
MOV DLYTIME,A
POP ACC
RETI
;=========================================================================
BITMAP:
;-------------------------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -