按下K1键, LED指示的二进制数加1;按下K2键, LED指示的二进制数加2;按下K3键, LED指示的二进制数加3;按下K4键, LED指示的二进制数加4。
按键三次k1键后如图显示:
K1:代表加1,按了三次后为十进制的3,换位二进制后为0011,由于当引脚输出为零的时候亮,所以为1100 代码: K1 BIT P1.4 K2 BIT P1.5 K3 BIT P1.6 K4 BIT P1.7 ORG 0000H LJMP START1 ORG 0060H
START1:
MOV DPTR,#TAB1
MOV A,#00H PUSH ACC
START: MOV P1,#0FFH MOV A,P1
CJNE A,#0FFH,LOP1 LJMP START;无按下
LOP1:ACALL DELAY;有按下 MOV P1,#0FFH MOV A,P1
CJNE A,#0FFH,LOP2 ;有效按键 LJMP START ;无效按键
LOP2:JNB ACC.4,KEY1;判断键号 JNB ACC.5,KEY2 JNB ACC.6,KEY3 JNB ACC.7,KEY4 SJMP START
KEY1:
WT1: JNB K1,WT1
POP ACC ADD A,#1
PUSH ACC
MOVC A,@A+DPTR MOV P2,A
LJMP START KEY2:
WT2: JNB K2,WT2
POP ACC ADD A,#2 PUSH ACC
MOVC A,@A+DPTR MOV P2,A
LJMP START KEY3:
WT3: JNB K3,WT3
POP ACC ADD A,#3
PUSH ACC
MOVC A,@A+DPTR
MOV P2,A
LJMP START KEY4:
WT4: JNB K4,WT4 POP ACC ADD A,#4 PUSH ACC
MOVC A,@A+DPTR
MOV P2,A
LJMP START
DELAY:MOV R0,#255 D1:MOV R1,#255 DJNZ R1,$ DJNZ R0,D1 RET TAB1:
DB
0FFH,0FEH,0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H,0F5H,0F4H,0F3H,0F2H,0F1H,0F0H END
因篇幅问题不能全部显示,请点此查看更多更全内容