📄 main.asm
字号:
LACC R_CON
SACL DATA
CALL WRITE
CALL ACK
CALL READ
CALL STOP
RET
;****************READ END**********************
;*********************************************
;****************I2C时序程序******************
;*********************************************
;***************开始子程序*******************
START
LDP #PBDATDIR>>7
LACC PBDATDIR
SPLK #0C0C0H,PBDATDIR
CALL DELAY3
LDP #PBDATDIR>>7
SPLK #0C040H,PBDATDIR
NOP
CALL DELAY3
SPLK #0C000H,PBDATDIR
CALL DELAY3
RET
;***************写数据子程序*****************
WRITE
CALL DELAY3
LDP #DATA
LACC DATA,1
SACL DATA
BIT DATA,BIT8
BCND SET,TC
LDP #PBDATDIR>>7
LACC PBDATDIR
AND #0F070H
SACL PBDATDIR
NOP
B CONTIUE
SET
LDP #PBDATDIR>>7
LACC PBDATDIR
OR #0F080H
SACL PBDATDIR
NOP
CONTIUE
CALL DELAY3
LDP #PBDATDIR>>7
LACC PBDATDIR
OR #0F040H
SACL PBDATDIR
NOP
CALL DELAY3
CALL DELAY3
LDP #PBDATDIR>>7
LACC PBDATDIR
AND #0F080H
SACL PBDATDIR
NOP
LDP #COUNT
LACC COUNT
ADD #1
SACL COUNT
SUB #8
BNZ WRITE
LDP #COUNT
SPLK #0,COUNT
RET
;*************应答信号子程序********************
ACK
CALL DELAY3
LDP #PBDATDIR>>7
SPLK #04000H,PBDATDIR
NOP
NOP
CALL DELAY3
LACC PBDATDIR
NOP
ACK_C
BIT PBDATDIR,BIT7
BCND ACK_C,TC
SPLK #04040H,PBDATDIR
CALL DELAY3
SPLK #04000H,PBDATDIR
NOP
CALL DELAY3
SPLK #0C000H,PBDATDIR
RET
;******************结束子程序*******************
STOP
CALL DELAY3
LDP #PBDATDIR>>7
SPLK #0C000H,PBDATDIR
CALL DELAY3
SPLK #0C040H,PBDATDIR
CALL DELAY3
SPLK #0C0C0H,PBDATDIR
CALL DELAY3
SPLK #00000H,PBDATDIR
RET
;*******************读数据子程序*****************
READ
LDP #PBDATDIR>>7
LACC PBDATDIR
SPLK #4000H,PBDATDIR
READ_L
CALL DELAY3
CALL DELAY3
SPLK #04040H,PBDATDIR
CALL DELAY3
LACC PBDATDIR
BIT PBDATDIR,BIT7
BCND R_SET,TC
LDP #R_DAT
LACC R_DAT
SFL
AND #0FFFEH
SACL R_DAT
B CON_R
R_SET
LDP #R_DAT
LACC R_DAT
SFL
OR #01H
SACL R_DAT
CON_R
LDP #COUNT
LACC COUNT
ADD #1
SACL COUNT
SUB #8
BZ READ_END
CALL DELAY3
LDP #PBDATDIR>>7
LACC PBDATDIR
SPLK #4000H,PBDATDIR
B READ_L
READ_END
LDP #COUNT
SPLK #0,COUNT
CALL DELAY3
RET
;****************I2C时序子程序结束***************
DELAY3
LACC #050H
D3_LOOP
SUB #1
BNZ D3_LOOP
RET
DELAY2
LACC #05800H
D2_LOOP
SUB #1
BNZ D2_LOOP
RET
;*************************************************
;****************显示子程序***********************
;*************************************************
LCD_SHOW
LDP #L_COUNT
SPLK #0,L_COUNT
LDP #TEMP1
SPLK #80H,TEMP1
CALL ADD_SET
SHOW_LP
LDP #L_COUNT
LACC L_COUNT
; LACC #20h
AND #00FFH
ADD #TABLE1
TBLR TEMP1
CALL DATA_SET
LACC L_COUNT
ADD #1
SACL L_COUNT
SUB #64
BCND SHOW_LP,LT
RET
LCD_INIT
CALL A11 ;送数据,基本功能指令
CALL A0 ;清寄存器子程序
CALL A2 ;送数据,使显示关
CALL A3 ;整体显示
NOP
RET
A0
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示锁存器
SPLK #01H,TEMP ;清寄存器,也为待命模式
OUT TEMP,04000H ;送数据到液晶显示寄存器
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H ;片选,加一时钟信号,使负责液晶数据输入显示的锁存器工作
CALL DELAY1
CALL DELAY1
CALL DELAY1
RET
A1
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示锁存器
SPLK #02H,TEMP ;地址复位
OUT TEMP,04000H ;送数据到液晶显示锁存器
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示锁存器
CALL DELAY1
CALL DELAY1
CALL DELAY1
RET
A2
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示锁存器
SPLK #08H,TEMP ;送数据,显示关(整体显示,游标,游标位置均关)
OUT TEMP,04000H ;送数据到液晶显示寄存器
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示锁存器
CALL DELAY
RET
A3
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示锁存器
SPLK #0cH,TEMP ;整体显示,字体左右移可通过修改此数据实现
OUT TEMP,04000H ;送数据到液晶显示锁存器
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示锁存器
CALL DELAY
RET
A4
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H ;送数据到液晶使能显示寄存器
SPLK #0EH,TEMP ;游标显示
OUT TEMP,04000H ;送数据到液晶显示寄存器
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
A5
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
SPLK #0FH,TEMP ;游标位置显示
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
A6
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
SPLK #10H,TEMP ;光标左移
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
A7
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
SPLK #14H,TEMP ;光标右移
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
A8
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
SPLK #18H,TEMP ;整体显示左移
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
A9
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
SPLK #02H,TEMP ;整体显示右移
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
A10
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
SPLK #34H,TEMP ;扩充指令
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
A11
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
SPLK #30H,TEMP ;基本指令
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
ADD_SET
LDP #TEMP
SPLK #0f6H,TEMP
OUT TEMP,0C000H
LACC TEMP1
SACL TEMP ;DDRAM地址设定
OUT TEMP,04000H
CALL DELAY
SPLK #0f4H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
DATA_SET
LDP #TEMP
SPLK #0f7H,TEMP
OUT TEMP,0C000H
LACC TEMP1
SACL TEMP
OUT TEMP,04000H
CALL DELAY
SPLK #0f5H,TEMP
OUT TEMP,0C000H
CALL DELAY
RET
;*******************************************
DELAY
LACC #0100H
D_LOOP
SUB #1
BNZ D_LOOP
RET
DELAY1
LACC #2000H
D1_LOOP
SUB #1
BNZ D1_LOOP
RET
TABLE1
.WORD #0FH ;80
.WORD #0FH ;80
.WORD #0FH ;1
.WORD #0FH ;80
.WORD #20H ;81
.WORD #54H ;2
.WORD #48H ;82
.WORD #46H ;
.WORD #2DH ;83
.WORD #2DH ;
.WORD #32H ;84
.WORD #20H ;
.WORD #0FH ;80
.WORD #0FH ;80
.WORD #0FH ;80
.WORD #0FH ;80
.WORD #20H ;1
.WORD #20H ;
.WORD #20H ;2
.WORD #20H ;
.WORD #20H ;3
.WORD #20H ;
.WORD #20H ;4
.WORD #20H ;
.WORD #0d0H ;5
.WORD #0c7H ;
.WORD #0c6H ;6
.WORD #0daH ;
.WORD #0d2H ;7
.WORD #0bbH ;
.WORD #020H ;8
.WORD #020H ;
.WORD #020H ;2
.WORD #020H ;
.WORD #030H ;3
.WORD #030H ;
.WORD #03aH ;4
.WORD #030H ;
.WORD #030H ;5
.WORD #03aH ;
.WORD #030H ;6
.WORD #030H ;
.WORD #020H ;7
.WORD #020H ;
.WORD #020H ;8
.WORD #020H ;
.WORD #020H ;1
.WORD #020H ;
.WORD #20H ;1
.WORD #20H ;
.WORD #32H ;2
.WORD #30H ;
.WORD #30H ;3
.WORD #36H ;
.WORD #0c4H ;4
.WORD #0eaH ;
.WORD #30H ;5
.WORD #31H ;
.WORD #0d4H ;6
.WORD #0c2H ;
.WORD #30H ;7
.WORD #31H ;
.WORD #0c8H ;8
.WORD #0d5H ;
TABLE2
.WORD #00c8h
.WORD #00d5h ;ri
.WORD #00d2h
.WORD #00bbh ;1
.WORD #00b6h
.WORD #00feh ;2
.WORD #00c8h
.WORD #00fdh ;3
.WORD #00cbh
.WORD #00c4h ;4
.WORD #00ceh
.WORD #00e5h ;5
.WORD #00c1h
.WORD #00f9h ;6
;.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -