📄 keyboard.asm
字号:
;exec减速,next加速,here左移,last右移,ret返回初始状态
MOV R0,#20H ;R0为显示列码
MOV R1,#80H ;R1为显示缓冲,初始化LED输出字型8
MOV R3,#08H ;初始化显示速度
CLR 21H.0 ;21H.0为显示方向判据,缺省显示方向为左
START: ACALL ROLL
ACALL DISPLAY
ACALL DELAY
SJMP START
DELAY: MOV A,R3 ;循环速度送A
MOV R5,A ;保存于R5
WAIT3: MOV 23H,#0FFH
WAIT2: ACALL KEY_SCAN
ACALL DISPLAY
CJNE A,#0,GETKEY ;a不为零,代表有键按下
SJMP DLT
GETKEY: ACALL K_G
CJNE A,#0FFH,NEXT ;无键按下则显示原来内容,有键按下则跳Next
SJMP DLT
NEXT: ACALL VALUE
ACALL DISPLAY
DLT: MOV 22H,#0FH
WAIT1: DJNZ 22H,WAIT1 ;22H,23H用于计数
DJNZ 23H,WAIT2
DJNZ R5,WAIT3 ;R3延时计数
RET
VALUE: MOV A,R7 ;R7为键码
JB ACC.4,KP ;键值不是0-F就转移到KP
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV R1,A
MOV P1,A
RET
KP: CJNE A,#15H,CHECK1 ;A为键值为15(LAST)时
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -