keyboard.asm
来自「键盘扫描程序」· 汇编 代码 · 共 37 行
ASM
37 行
;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 + =
减小字号Ctrl + -
显示快捷键?