📄 键盘逐显.asm
字号:
ORG 0
ORG 0
MOV R5,#00H;
MAIN: ;扫描有无按键按下;
MOV P3,#0FH; ;
MOV R0,P3; ;
CJNE R0,#0FH,LIE; 有按键按下则跳转至LIE;
JMP MAIN; 没有则重新执行MAIN;
LIE:CALL BACK;
MOV A,P3; 扫描是键盘的第几行按键按下;
L1:CJNE A,#0EH,L2; 第一行有按键按下;
MOV DPTR,#FIRST;
JMP HANG;
L2:CJNE A,#0DH,L3; 第二行有按键按下;
MOV DPTR,#SECOND;
JMP HANG;
L3:CJNE A,#0BH,L4; 第三行有按键按下;
MOV DPTR,#THIRD;
JMP HANG;
L4:CJNE A,#07H,MAIN; 第四行有按键按下;
MOV DPTR,#FOURTH;
HANG:MOV P3,#0F0H; 扫描键盘的第几列有按键按下;
CLR A;
MOV A,P3;
H1:CJNE A,#0E0H,H2; 第一列有按键按下;
CLR A;
MOV R1,#0;
MOV A,R1;
CALL CHOOSE;
JMP MAIN;
H2:CJNE A,#0D0H,H3; 第二列有按键按下;
CLR A;
MOV R1,#1;
MOV A,R1;
CALL CHOOSE;
JMP MAIN;
H3:CJNE A,#0B0H,H4; 第三列有按键按下;
CLR A;
MOV R1,#2;
MOV A,R1;
CALL CHOOSE;
JMP MAIN;
H4:CJNE A,#70H,LIE; 第四列有按键按下;
CLR A;
MOV R1,#3;
MOV A,R1;
CALL CHOOSE;
JMP MAIN;
CHOOSE:MOVC A,@A+DPTR; 选择相应的数字或字母;
STAY:MOV R2,P3;
CJNE R2,#0F0H,STAY1;
MOV P0,A;
CALL DELAY;
CLR A;
RET;
STAY1:MOV P0,#0FFH;
JMP STAY;
DELAY:MOV R7,#200; 延时;
D1:MOV R6,#200;
DJNZ R6,$;
DJNZ R7,D1;
RET;
FIRST: db 0C0H,0F9H,0A4H,0B0H
SECOND: db 099H,092H,082H,0F8H
THIRD: db 080H,098H,088H,083H
FOURTH: db 0C6H,0A1H,086H,08EH
BACK:CJNE R5,#06H,NEXT;
JMP JUMP;
NEXT:MOV A,R5;
MOV DPTR,#TAB;
MOVC A,@A+DPTR;
MOV P2,A;
CLR A;
INC R5;
RET;
JUMP:MOV R5,#00H;
JMP BACK;
S1:MOV P2,#0DFH;
MOV P0,#0C0H;
MOV P0,#0FFH;
S2:MOV P2,#0EFH;
MOV P0,#0F9H;
MOV P0,#0FFH;
S3:MOV P2,#0F7H;
MOV P0,#0A4H;
MOV P0,#0FFH;
S4:MOV P2,#0FBH;
MOV P0,#0B0H;
MOV P0,#0FFH;
S5:MOV P2,#0FDH;
MOV P0,#99H;
MOV P0,#0FFH;
S6:MOV P2,#0FEH;
MOV P0,#92H;
MOV P0,#0FFH;
MOV A,R3;
MOV DPTR,#TAB1;
MOVC A,@A+DPTR;
MOV P0,A;
TAB: DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH
TAB1: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
DB 080H,098H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -