📄 em458+ht1621.dt
字号:
;********************************** LCD程序 ****************************************
;======================= LCD写命令子程序 ===========================
;包括命令头(100)
C_WRITE: MOV A,@0X08
MOV R_LOOP,A
BS P6,1 ;/WR=1
BC P6,0 ;/CS=0
BC P6,1 ;/WR=0
BS P6,2 ;DATA=1
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
BC P6,2 ;DATA=0
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
BC P6,2 ;DATA=0
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
C8_C1_WRITE: JBC COMMAND,7 ;COMMAND,7=0
JMP SET_DATA_1
BC P6,2 ;DATA=0
JMP NEXT_1
SET_DATA_1: BS P6,2 ;DATA=1
NEXT_1: RLC COMMAND
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
DJZ R_LOOP
JMP C8_C1_WRITE
BC P6,2 ;DATA=0
BS P6,1 ;/WR=1
BS P6,0 ;/CS=1
RET
;============================= LCD显示子程序 ===========================
;包括头(101)+(地址)+(数据)
LCD_WRITE: BS P6,1 ;/WR=1
BC P6,0 ;/CS=0
BC P6,1 ;/WR=0
BS P6,2 ;DATA=1
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
BC P6,2 ;DATA=0
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
BS P6,2 ;DATA=1
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
;WRITE THE LCD MEMORY ADD 00
BC P6,2 ;DATA=0, 1
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
;DATA=0, 2
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
;DATA=0, 3
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
;DATA=0, 4
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
;DATA=0, 5
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
;DATA=0, 6
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
MOV A,SEG0
MOV LCDRAM,A ;SEG0
CALL LCDDATA_W
MOV A,SEG1
MOV LCDRAM,A ;SEG1
CALL LCDDATA_W
MOV A,SEG2
MOV LCDRAM,A ;SEG2
CALL LCDDATA_W
MOV A,SEG3
MOV LCDRAM,A ;SEG3
CALL LCDDATA_W
MOV A,SEG4
MOV LCDRAM,A ;SEG4
CALL LCDDATA_W
MOV A,SEG5
MOV LCDRAM,A ;SEG5
CALL LCDDATA_W
MOV A,SEG6
MOV LCDRAM,A ;SEG6
CALL LCDDATA_W
MOV A,SEG7
MOV LCDRAM,A ;SEG7
CALL LCDDATA_W
MOV A,SEG8
MOV LCDRAM,A ;SEG8
CALL LCDDATA_W
MOV A,SEG9
MOV LCDRAM,A ;SEG9
CALL LCDDATA_W
MOV A,SEG10
MOV LCDRAM,A ;SEG10
CALL LCDDATA_W
MOV A,SEG11
MOV LCDRAM,A ;SEG11
CALL LCDDATA_W
MOV A,SEG12
MOV LCDRAM,A ;SEG12
CALL LCDDATA_W
MOV A,SEG13
MOV LCDRAM,A ;SEG13
CALL LCDDATA_W
BS P6,0 ;/CS=1
RET
;=========================== LCD写数据子程序(4Bit) ========================
LCDDATA_W: MOV A,@0X04 ;RAM DATA WRITE
MOV R_LOOP,A
DATA_W: JBC LCDRAM,0
JMP RAM_SET
BC P6,2 ;DATA=0
JMP NEXT_3
RAM_SET: BS P6,2 ;DATA=1
NEXT_3: RRC LCDRAM
BS P6,1 ;/WR=1
BC P6,1 ;/WR=0
DJZ R_LOOP
JMP DATA_W
RET
;============================ LCD初始化子程序 ==============================
LCD_INIT: MOV A,@0X07
MOV P6,A ;P50-P53 RESET TO 1
BC P6,0 ;RESET 1621 INTERFACE
BS P6,0
BC P6,0
BS P6,0 ;P50 SET TO 1,/CS=1
MOV A,@0B11100011 ;COMMAND TNORMAL
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B10000000 ;COMMAND /IRQ DIS
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00011000 ;COMMAND RC 256K
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00100101 ;COMMAND BIASZ1/3,3 COM
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B01100000 ;COMMAND TONE 2K
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00001000 ;COMMAND TONE OFF
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000101 ;COMMAND WDT DIS
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000100 ;COMMAND TIMER DIS
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000001 ;COMMAND SYS_EN
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000011 ;COMMAND LCD_ON
MOV COMMAND,A
CALL C_WRITE
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -