📄 带welcome的键盘显示程序.asm
字号:
$MOD841
CLK81 EQU P3.5
DAT81 EQU P3.3
KEY EQU P3.2
KEYVAL EQU 30H
ORG 0000H
LJMP MAIN
ORG 0060H
MAIN:MOV R0,#0FFH;
CLR_IN_RAM:MOV @R0,#00H
DJNZ R0,CLR_IN_RAM
MOV SP,#50H
LCALL YS
;***********************初始化
LCALL INIWH8281
;***********************欢迎菜单
LCALL WELCOME
START:JB KEY,START
MOV A,#16H
LCALL WTO81
MOV A,#00H
LCALL WTO81
MOV A,#93H
LCALL WTO81;
LCALL RDKVAL;
MOV A,#15H;
LCALL WTO81;
MOV A,KEYVAL;
ANL A,#0F0H;
SWAP A;
ORL A,#00H
LCALL WTO81;
MOV A,#15H;
LCALL WTO81;
MOV A,KEYVAL;
ANL A,#0FH;
ORL A,#10H
LCALL WTO81;
LJMP START;
;***********************初始化WH8281
INIWH8281:SETB CLK81;
SETB DAT81;
MOV A,#12H
LCALL WTO81;
MOV A,#80H;
LCALL WTO81;
RET
;***********************欢迎界面子程
WELCOME:MOV A,#14H;
LCALL WTO81
MOV A,#0CH
LCALL WTO81
MOV A,#14H
LCALL WTO81
MOV A,#1BH
LCALL WTO81
MOV A,#14H
LCALL WTO81
MOV A,#2DH
LCALL WTO81
MOV A,#14H
LCALL WTO81
MOV A,#3DH
LCALL WTO81
MOV A,#14H
LCALL WTO81
MOV A,#40H
LCALL WTO81
RET
;***********************读取键值子程序
RDKVAL:CLR CLK81
LCALL DELAY
SETB CLK81
JB DAT81,$
CLR CLK81
LCALL DELAY
SETB CLK81
MOV R6,#08H
RD1:LCALL DELAY
LCALL DELAY
MOV C,DAT81
RLC A
CLR CLK81
LCALL DELAY
SETB CLK81
DJNZ R6,RD1
MOV KEYVAL,A
RET
;***********************写入WH8281子程序
WTO81:MOV R6,#08H
WAT:CLR CLK81
LCALL DELAY
SETB CLK81
JB DAT81,WAT
CLR CLK81
LCALL DELAY
SETB CLK81
JNB DAT81,$
WTB81:RLC A
MOV DAT81,C
CLR CLK81
LCALL DELAY
SETB CLK81
LCALL DELAY
LCALL DELAY
DJNZ R6,WTB81
SETB DAT81
RET;***********************延时程序
YS:MOV R5,#00H
MOV R4,#50H
YS1:DJNZ R5,$
DJNZ R4,YS1
RET
DELAY:NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -