|
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTa
ORG 000BH
LJMP ITa
ORG 001BH
LJMP ITb
ORG 0100H
MAIN:MOV SP,#70H
MOV TMOD,#11H //定時器初始化
SETB EA
SETB ET0
SETB ET1
SETB IT0
MOV TL0,#00H
MOV TH0,#00H//定時器0賦值
MOV TL1,#00H
MOV TH1,#00H//定時器1賦值
MOV P1,#0FFH
MOV B,#0
MOV R0,#0
MOV R1,#0
MOV R2,#0
MOV R3,#0
MOV A,#0
MOV DPTR,#0000H//數(shù)據(jù)指針初始化
AJMP KEYSCAN
KEYSCAN:
MOV P3,#0F0H //給P3賦值,讀行線
MOV A,P3
ANL A,#0F0H //與
XRL A,#0F0H //異或
JNZ DELAY
DELAY:MOV R2,#05H
LOOP1:MOV R3,#0FAH
LOOP2:DJNZ R3,LOOP2
DJNZ R2,LOOP1
MOV A,P3
ANL A #0F0H
JNZ KEYSCAN1
LJMP KEYSCAN
KEYSCAN1:
MOV A,#00H
MOV P3,#0FH
MOV A ,P3
ANL A ,#0FH
MOV R1,A
XRL A ,#0FH
JNZ NUM
LJMP KEYSCAN
NUM:
MOV A ,R0
MOV B,R1
ORL A,B//A或上B,數(shù)據(jù)保存在A
MOV DPTR,#TAB
SJMP DISP0
DISP0:
CJNE A,#0EEH,DISP1
MOV A ,#00H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP1:
CJNE A ,#0EDH,DISP2
MOV A ,#01H
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP2:
CJNE A ,#0EBH,DISP3
MOV A ,#02H
MOVC A @A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP3:
CJNE A,#0E7H,DISP4
MOV A,#03H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP4:
CJNE A,#0DEH,DISP5
MOV A #04H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP5:
CJNE A,#0DDH,DISP6
MOV A ,#05H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP6:
CJNE A,#0DBH,DISP7
MOV A ,#06H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP7:
CJNE A,#0D7H,DISP8
MOV A ,#07H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP8:
CJNE A,#0BEH,DISP9
MOV A ,#08H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISP9:
CJNE A,#0BDH,DISPA
MOV A ,#09H
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPA:
CJNE A,#0BBH,DISPB
MOV A ,#0AH
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPB:
CJNE A,#0B7H,DISPC
MOV A ,#0BH
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPC:
CJNE A,#07EH,DISPD
MOV A ,#0CH
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPD:
CJNE A,#07DH,DISPE
MOV A ,#0DH
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPE:
CJNE A,#07BH,DISPF
MOV A ,#0EH
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DISPF:
CJNE A,#077H,KEY
MOV A ,#0FH
MOVC A ,@A+DPTR
MOV P0,A
LCALL DELAY1
LJMP KEYSCAN
DELAY1:MOV R2,#0FH
LOOP10:MOV R3,0FAH
LOOP20:DJNZ R3,LOOP20
DJNE R2,LOOP10
RET
KEY:LJMP MAIN
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
|
|