ORG 0000H AJMP MAIN ORG 001BH AJMP SERVE MAIN: MOV TMOD,#10H MOV 20H,#20 MOV R6,#0FFH MOV R4,#00H CLR A MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,A SETB ET1 MOV TH1,#4CH MOV TL1,#00H SETB TR1 SETB EX0 SETB EA MOV DPTR,#0FF82H MOV A,#0D1H MOVX @DPTR,A WAIT: MOVX A,@DPTR JB ACC.7,WAIT MOV A,#00H MOVX @DPTR,A MOV A,#2AH MOVX @DPTR,A HERE: LCALL DELED LCALL DISP SJMP HERE SERVE:PUSH PSW PUSH ACC LCALL DELED LCALL DISP MOV TH1,#4CH MOV TL1,#00H DJNZ 20H,RETURN MOV 20H,#20 MOV A,#01H ADD A,33H DA A MOV 33H,A XRL A,#60H JNZ RETURN MOV 33H,#00H MOV A,#01H ADD A,32H DA A MOV 32H,A XRL A,#60H JNZ RETURN MOV 32H,#00H MOV A,#01H ADD A,31H DA A MOV 31H,A XRL A,#24H JNZ RETURN MOV 31H,#00H MOV A,#01H ADD A,30H DA A MOV 30H,A XRL A,#31H JNZ RETURN MOV 30H,#00H RETURN: LCALL GETKEY CJNE A,#0FFH,RETURN1 LCALL PD RETURN1: POP ACC POP PSW RETI GETKEY: PUSH DPH PUSH DPL PUSH PSW MOV DPTR,#0FF82H MOVX A,@DPTR ANL A,#07H JNZ GETVAL MOV A,#00H SJMP NKBHIT GETVAL: MOV A,#40H MOVX @DPTR,A MOV DPTR,#0FF80H MOVX A,@DPTR ANL A,#0FH MOV B,A MOV A,#0FFH NKBHIT: POP PSW POP DPL POP DPH RET DELED: MOV A,33H ANL A,#0F0H SWAP A MOV 71H,A MOV A,33H ANL A,#0FH MOV 70H,A MOV A,32H ANL A,#0F0H SWAP A MOV 73H,A MOV A,32H ANL A,#0FH MOV 72H,A MOV A,31H ANL A,#0F0H SWAP A MOV 75H,A MOV A,31H ANL A,#0FH MOV 74H,A MOV A,30H ANL A,#0F0H SWAP A MOV 77H,A MOV A,30H ANL A,#0FH MOV 76H,A RET DISP: MOV DPTR,#0FF82H MOV A,#90H MOVX @DPTR,A MOV R0,#70H MOV R7,#08H MOV A,R0 ADD A,R4 MOV R0,A MOV DPTR,#0FF81H DL0: MOV A,@R0 ADD A,#1DH MOVC A,@A+PC PUSH ACC MOV A,R7 CJNE A,#08H,DL1 AJMP NEXT DL1: JB ACC.0,NEXT POP ACC SETB ACC.7 AJMP DIR1 NEXT: POP ACC DIR1: MOVX @DPTR,A INC R0 CJNE R0,#78H,TP SJMP TP1 TP: DJNZ R7,DL0 TP1: RET TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH PD: MOV A,B CJNE A,#0CH,KEY_G LCALL CLEAR_T KEY_G: CJNE A,#0DH,KEY_A LCALL STOP_T KEY_A: CJNE A,#0AH,KEY_B F1: LCALL GETKEY CJNE A,#0FFH,F1 MOV A,B CJNE A,#03H,PTF1 PTF1:JC NEXT2 MOV 30H,#00H AJMP RETUN NEXT2:SWAP A MOV 30H,A F2: LCALL GETKEY CJNE A,#0FFH,F2 MOV A,B CJNE A,#0AH,PTF2 PTF2:JC NEXT3 MOV 30H,#00H AJMP RETUN NEXT3:ORL 30H,A AJMP RETUN KEY_B:CJNE A,#0BH,KEY_E F3: LCALL GETKEY CJNE A,#0FFH,F3 MOV A,B CJNE A,#02H,PTF3 PTF3:JC NEXT4 MOV 31H,#00H AJMP RETUN NEXT4:SWAP A MOV 31H,A F4: LCALL GETKEY CJNE A,#0FFH,F4 MOV A,B CJNE A,#04H,PTF4 PTF4:JC NEXT5 MOV 31H,#00H AJMP RETUN NEXT5:ORL 31H,A AJMP RETUN KEY_E:CJNE A,#0EH,KEY_F F5: LCALL GETKEY CJNE A,#0FFH,F5 MOV A,B CJNE A,#06H,PTF5 PTF5: JC NEXT6 MOV 32H,#00H AJMP RETUN NEXT6: SWAP A MOV 32H,A F6: LCALL GETKEY CJNE A,#0FFH,F6 MOV A,B CJNE A,#0AH,PTF7 PTF7:JC NEXT7 MOV 32H,#00H AJMP RETUN NEXT7: ORL 32H,A AJMP RETUN KEY_F:CJNE A,#0FH,RETUN F7: LCALL GETKEY CJNE A,#0FFH,F7 MOV A,B SWAP A MOV 33H,A F8: LCALL GETKEY CJNE A,#0FFH,F8 MOV A,B ORL 33H,A MOV A,33H CJNE A,#60H,PTF8 PTF8:JC RETUN MOV 33H,#00H RETUN:RET CLEAR_T: CLR TR1 MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H MOV 33H,#00H MOV R6,#0FFH LCALL DELED LCALL DISP SETB TR1 RET STOP_T: CLR TR1 RET END