ORG 0000H JMP MAIN MAIN: MOV SP,#60H MOV P3,#00001111B MOV R0,P3 LCALL DELAY ;消抖 MOV R0,P3 CJNE R0,#00001111B,TP1 JMP MAIN TP1: ;判断键盘所在行行号 JB P3.0,LINE1 MOV A,#00H LINE1:JB P3.1,LINE2 MOV A,#04H LINE2:JB P3.2,LINE3 MOV A,#08H LINE3:JB P3.3,TP2 MOV A,#0CH TP2: MOV P3,#11110000B JB P3.4,LE1 MOV R1,#00H LE1:JB P3.5,LE2 MOV R1,#01H LE2:JB P3.6,LE3 MOV R1,#02H LE3:JB P3.7,TP3 MOV R1,#03H TP3:ADD A,R1;获取键号 S1:MOV R0,P3 CJNE R0,#11110000B,S1;判断按键是否放开 DISPLAY: MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,#0C0h MOV P0,A TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH DELAY:MOV 71H,#100 ;(延时10ms子程序,晶振12m) LOOP1:MOV 70H,#47 LOOP0:DJNZ 70H,LOOP0 NOP DJNZ 71H,LOOP1 MOV 70H,#48 LOOP4:DJNZ 70H,LOOP4 RET END