這個是我以前做的掃描法,電路如圖所示,程序附上。
ORG?00H
LJMP?MAIN
ORG?30H
MAIN:?LCALL?LOOP1
LCALL?DELAY
LCALL?LOOP1
LCALL?LOOP2
LCALL?LOOP3
LJMP?MAIN
LOOP1:?MOV?P2,#0F0H;判斷有鍵按下?
MOV?A,P2
MOV?B,A
MOV?P2,#0FH
MOV?A,P2
ORL?A,B
MOV?30H,A
CJNE?A,#0FFH,LOOP11
LJMP?MAIN
LOOP11:?RET
LOOP2:MOV?R3,#00H;比較計算得出鍵值
LOOP21:MOV?A,R3
INC?R3 MOV?DPTR,#TAB MOVC?A,@A+DPTR CJNE?A,30H,LOOP21 RETLOOP3:MOV?A,R3?;數碼管顯示
MOV?DPTR,#TAB1 MOVC?A,@A+DPTR MOV?P1,A ;MOV?P1,#0F1H RETDELAY:;延時R5×10MS
MOV?R6,#50
DELAY1:MOV?R7,#100
DJNZ?R7,$
DJNZ?R6,DELAY1
RET
TAB:
DB?0EEH,0EDH,0EBH,0E7H?
DB?0DEH,0DDH,0DBH,0D7H?
DB?0BEH,0BDH,0BBH,0B7H
DB?07EH,07DH,07BH,077H?
TAB1:?DB?0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB?80H,90H,88H,83H,0C6H,0A1H,86H,8EHEND
這個是我以前做的掃描法,電路如圖所示,程序附上。