📄 ad.asm
字号:
************************************************
* FileName: ex8.asm *
* Description: 液晶屏 *
* Copyright(C) SanZhi Electronic, Author Zpin *
************************************************
.title "exx"
.global _c_int00
.mmregs
LCDAWD .set 7009h ;液晶屏片选1写数据
LCDARO .set 700Ah ;液晶屏片选1读状态
LCDAWO .set 7008h ;液晶屏片选1写命令
LCDBWD .set 6009h ;液晶屏片选2写数据
LCDBRO .set 600Ah ;液晶屏片选2读状态
LCDBWO .set 6008h ;液晶屏片选2写命令
STATE .set 60h ;STATE
CONTROL .set 61h ;CONTROL
DAT .set 62h ;DATA
XPOS .set 66h ;列指针
YPOS .set 67h ;行指针
VXPOS .set 68h
VYPOS .set 69h
.data
;.byte 018H,0cH,0feH,0ffH,0feH,0cH,018H,0h
;.byte 0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
;.byte 0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
;.byte 0h,0h,0ffh,0ffh,0ffh,80h,80h,80h
;.byte 0h,0h,0ffh,0ffh,0ffh,01h,01h,01h
;.byte 0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
;.byte 0h,0h,0ffh,0ffh,0ffh,0h,0h,0h
;.byte 0h,0h,0ffh,0ffh,0ffh,0h,0h,0h;第1个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第2个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第3个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第4个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第5个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第6个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第7个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第8个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第9个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第10个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第11个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第12个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第13个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第14个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,80h,80h,80h,80h
;.byte 1h,1h,1h,1h,1h,1h,1h,1h ;第15个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 80h,80h,80h,80h,90h,0A0h,0C0h,80h
;.byte 1h,1h,1h,1h,9h,5h,3h,1h ;第16个8列
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;.byte 0h,0h,0h,0h,0h,0h,0h,0h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.byte 18h;1列 2000 xpos=0,ypos=0
.byte 0ch;2列 2001 xpos=1,ypos=0
.byte 0feh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ;3列2002-2009xpos=2,ypos=0-7
.byte 0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ;4列200a-2011xpos=3,ypos=0-7
.byte 0feh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh,0ffh ;5列2012-2019xpos=4,ypos=0-7
.byte 0ch;6列 201axpos=5,ypos=0
.byte 18h;7列 201bxpos=6,ypos=0
.byte 80h,01h,90h,0A0h,0C0h,80h,9h,5h,3h,1h;201c-2025
;xpos=7-123,ypos=4;xpos=7-123,ypos=5;xpos=124-127,ypos=4;xpos=124-127,ypos=5
DELAY .macro sec_tenth ;延时 sec_tenth/10 秒
STM sec_tenth-1,AR5
loop1? STM #09h,AR6
loop0? STM #49999,AR7
BANZ $,*AR7-
BANZ loop0?,*AR6-
BANZ loop1?,*AR5-
.endm
.sect ".vectors"
rst: B _c_int00
NOP
NOP
.space 15*4*16
.text
_c_int00
LD #0h,DP
STM #3000h,SP
SSBX INTM
STM #07FFFh,SWWSR ;IO总线外部等待时间14个周期
STM #01h,2Bh
STM #0h,CLKMD ;20MHz工作
tst BITF CLKMD,#1h
BC tst,TC
STM #09007h,CLKMD
RPT #0FFh
NOP
ST #0FFFFh,IFR
ORM #0001h,IMR
RSBX INTM
LD #0h,DP
call LCDRESET;read state
ST #0H,DAT
CALL FILL
main nop
nop
call XY
;DELAY #0FFFFH
ST #0H,DAT
CALL FILL
;DELAY #0FFFFH
B main
;----------------------------------------->
XY st #0,XPOS
ST #0,YPOS
st #2000h,ar0
MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD ;1arrange
st #1,XPOS
ST #0,YPOS
MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD ;2arrange
NOP
NOP
ST #2,XPOS
ST #0,YPOS
CALL SHU ;3arrange
ST #3,XPOS
ST #0,YPOS
CALL SHU ;4arrange
ST #4,XPOS
ST #0,YPOS
CALL SHU ;5arrange
st #5,XPOS
ST #0,YPOS
MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD ;6arrange
st #6,XPOS
ST #0,YPOS
MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD ;7arrange
NOP
ST #5,XPOS
ST #3,YPOS
CALL HEN
NOP
ST #5,XPOS
ST #4,YPOS
st #201dh,ar0
CALL HEN
ST #201EH,AR0
ST #124,XPOS
ST #3,YPOS
ST #3,AR2
HEND MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD
ADDM #1,XPOS
BANZ HEND,*AR2-
ST #124,XPOS
ST #4,YPOS
ST #3,AR2
HEND1 MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD
ADDM #1,XPOS
BANZ HEND1,*AR2-
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHU ST #07H,AR2
SHU1 MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD
ADDM #01H,YPOS
BANZ SHU1,*AR2-
ST #07H,AR2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HEN ST #118,AR2
HEN1 MVDK *AR0,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD
ADDM #01H,XPOS
BANZ HEN1,*AR2-
ST #118,AR2
RET
;----------------------------------填充
FILL ST #00H,YPOS
LFLPB ST #00H,XPOS
LFLPA CALL LCDPOS
nop
nop
nop
rpt #10
CALL LCDWD
ADDM #01H,XPOS
BITF XPOS,#80H
BC LFLPA,NTC
ADDM #01H,YPOS
BITF YPOS,#08H
BC LFLPB,NTC
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;每64个点一次
WRITE MVDK XPOS,VXPOS
ST #07H,AR2
WRITE1 MVDK *AR0+,DAT
ANDM #0FFH,DAT
CALL LCDPOS
CALL LCDWD
ADDM #01H,XPOS
BANZ WRITE1,*AR2-
MVDK VXPOS,XPOS
ST #0FH,AR2
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDRESET ST #003FH,CONTROL ;复位LCD
CALL LCDWC1
CALL LCDWC2
ST #00C0H,CONTROL
CALL LCDWC1
CALL LCDWC2
RET
LCDWD BITF XPOS,#0040H
BC LWDLAY,tc
CALL LCDWD1
B LWDLAX
LWDLAY CALL LCDWD2
LWDLAX RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDPOS BITF XPOS,#0040H ;XPOS列方向小于64则对CS1操作
BC LPSLAY,tc
MVDK YPOS,VYPOS
ANDM #0007H,VYPOS
ADDM #0B8H,VYPOS
MVDK VYPOS,CONTROL
CALL LCDWC1 ;设页码
MVDK XPOS,VXPOS
ANDM #03FH,VXPOS
ORM #40H,VXPOS
MVDK VXPOS,CONTROL ;设列码
CALL LCDWC1
B LCDLAX
LPSLAY MVDK YPOS,VYPOS
ANDM #0007H,VYPOS ;XPOS列方向大于等于64则对CS1操作
ADDM #0B8H,VYPOS
MVDK VYPOS,CONTROL
CALL LCDWC2 ;设页码
MVDK XPOS,VXPOS
ANDM #03FH,VXPOS
ORM #40H,VXPOS
MVDK VXPOS,CONTROL
CALL LCDWC2 ;设列码
LCDLAX RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCDWC1 CALL WAITIDLE1 ;WRITE CS1 CONTROL
PORTW CONTROL,LCDAWO
RET
LCDWC2 CALL WAITIDLE2 ;WRITE CS2 CONTROL
PORTW CONTROL,LCDBWO
RET
LCDWD1 CALL WAITIDLE1 ;WRITE CS1 DATA
PORTW DAT,LCDAWD
RET
LCDWD2 CALL WAITIDLE2 ;WRITE CS2 DATA
PORTW DAT,LCDBWD
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WAITIDLE1 PORTR LCDARO,STATE ;READ CS1 STATE
nop
nop
BITF STATE,#80H ;为0表示准备好
BC WAITIDLE1,tc
ret
WAITIDLE2 PORTR LCDBRO,STATE ;READ CS2 STATE
nop
nop
BITF STATE,#080H
BC WAITIDLE2,tc
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DELAY ST #0100h,AR7 ;延时子程序
; BANZ $,*AR7-
; BANZ DELAY,*AR6-
; RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -