ORG 0000H AJMP K ORG 0100H K: MOV SP,#60H MOV R0,#30H MOV R2,#08H S: MOV @R0,#10H INC R0 DJNZ R2,S START: MOV R0,#30H MOV R2,#00H MOV R3,#08H MOV DPTR,#TAB MOV P2,#00H MAIN: MOV P2,R2 MOV P0,@R0 LCALL DELAY INC R2 INC R0 DJNZ R3,MAIN LCALL KS JNZ K1 LCALL D10ms AJMP START SJMP $ DELAY: MOV R5,#20 DEL0: MOV R6,#1 DEL1: MOV R7,#20 DEL2: DJNZ R7,DEL2 DJNZ R6,DEL1 DJNZ R5,DEL0 RETURN: RET KEY2: LCALL KS JNZ K1 LCALL D10ms AJMP KEY2 K1: LCALL D10ms LCALL KS JNZ K2 AJMP KEY2 K2: MOV R2,#0EFH MOV R4,#00H K3: MOV P1,R2 L6: JB P1.0,L1 MOV A,#00H AJMP LK L1: JB P1.1,L2 MOV A,#04H AJMP LK L2: JB P1.2,L3 MOV A,#08H AJMP LK L3: JB P1.3,NEXT MOV A,#0CH LK: ADD A,R4 MOV R5,A LCALL K4 LCALL LEFT AJMP START NEXT: INC R4 MOV A,R2 JNB ACC.7,KEY2 RL A MOV R2,A AJMP K3 K4: LCALL KS JNZ K4 MOV A,R5 RET KS: MOV P1,#0FH MOV A,P1 XRL A,#0FH RET D10ms: MOV R7,#25 D1: MOV R6,#200 DJNZ R6,$ DJNZ R7,D1 RET LEFT: MOV DPTR,#TAB MOV R6,A MOV R0,#30H MOV R1,#31H MOV R5,#07H S1: MOV A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R5,S1 MOV A,R6 MOVC A,@A+DPTR MOV @R0,A RET ORG 1000H TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH DB 77H,7CH,39H,5EH,79H DB 71H,00H END