📄 main.asm
字号:
.file "main.asm"
.title "show.asm"
.mmregs
.def COM
.def RS ;复位信号
.def RW ;读写信号
.def E ;使能信号
.def PDATA
.def DATA ;数据地址
.def start
.include bsp.h
.sect ".text"
COM .usect "varibl",1
RS .usect "varibl",1
RW .usect "varibl",1
E .usect "varibl",1
PDATA .usect "varibl",1
DATA .usect "varibl",1
TABCL .usect "data",10h
start:
*********************控制口地址***************
STM A14,RS
STM R/W,RW
STM A15,E
***********************初始化子程序***********
;INT
STM #30H,PDATA ;工作方式指令代码
RSBX RS ;RS=0
RSBX RW ;R/W=0
STM #3,A ;循环量3
;INT1
SSBX E ;E=1
RSBX E ;E=0
CALL DELAY ;调用延时程序
SUB #1,A
AGEQ INT1 ;A>=0转移
STM #28H,PDATA ;设置工作方式
SSBX E
RSBX E
STM #01H,COM ;清屏
CALL PR1
STM #06H,COM ;设置输入方式
CALL PR1
STM #0FH,COM ;设置显示方式
CALL PR1
;RET
**********************字符的写入方式*********
*******************采用光标左移方式**********
LSHOW
STL #04H,COM
CALL PR1
STL #90H,COM
CALL PR1
STL #TABCL,DPTR
STL #12H,B
L1
STM B,A
SUB #1,A
STL @A+DPTR,A
STL A,DATA
CALL PR2
CALL DELAY
SUB #1,B
BGEQ DELAY1
.end
***********************延时子程序*************
DELAY
STM #200H,B
DELAY1
NOP
SUB #1,B
BGEQ DELAY1
RET
*********************写指令代码子程序********
PR1
PUSH A
RSBX RS
SSBX RW
PR11
STL #0FFH,PDATA
SSBX E
STM PDATA,A
RSBX E
AND #80H,A
STL A,AR1 ;
NOP
ST #80H,AR0 ;
NOP
CMPR EQ,AR1 ;EQ=0;;;;;;;;;;;;;;;;;
NOP
BC PR11,NTC
NOP
RSBX RW
STL COM,PDATA
SSBX E
RSBX E
POP A
RET
*********************写显示数据子程序**********
PR2
PUSH A
RSBX RS
SSBX RW
PR21
STL #0FFH,PDATA
SSBX E
STM PDATA,A
RSBX E
AND #80H,A
STL A,AR1 ;
NOP
ST #80H,AR0 ;
NOP
CMPR EQ,AR1 ;EQ=0;;;;;;;;;;;;;;;;;
NOP
SSBX RS
RSBX RW
STL DATA,PDATA
SSBX E
RSBX E
RET
********************读显示数据子程序***********
PR3
PUSH A
RSBX RS
SSBX RW
PR31
STL #0FFH,PDATA
SSBX E
STM PDATA,A
RSBX E
AND #80H,A
STL A,AR1 ;
NOP
ST #80H,AR0 ;
NOP
CMPR EQ,AR1 ;EQ=0;;;;;;;;;;;;;;;;;
NOP
SSBX RS
SSBX RW
STL #0FFH,PDATA
SSBX E
STM PDATA,A
STL A,DATA
POP A
RET
************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -