;/*********************************************************************************** ;* 描述: 花費了一天時間寫這個小程序,發表于此,以此為激勵自己繼續向著單片機前進 * ;* 按矩陣鍵盤上的鍵對應的LED顯示相應鍵值 * ;* 矩陣鍵盤定義: * ;* P1.1-P1.3為行線,P1.4-P 1.7為列線 * ; P0口接led顯示 * ;********************************************************************************/ ORG 0000H JMP MAIN MAIN: MOV P0,#0FFH ;初始化端口口 MOV P1,#0FFH KEYDOWN: ;;;;判斷是否有鍵按下部分 MOV P1,#0F0H LCALL DELAY MOV A,P1 CJNE A,#0F0H,KEYSCAN JMP KEYDOWN KEYSCAN: ;;掃描鍵值部分222 MOV A,#00H MOV P1,#0F0H MOV A,P1 CJNE A,#70H,N1 MOV R4,#03H JMP NEXT N1: CJNE A,#0B0H,N2 MOV R4,#02H JMP NEXT N2: CJNE A,#0D0H,N3 MOV R4,#01H JMP NEXT N3: CJNE A,#0E0H,NEXT MOV R4,#00H JMP NEXT NEXT: MOV P1,#00FH MOV A,P1 CJNE A,#07H,N4 MOV R3,#08H JMP NEXT1 N4: CJNE A,#0BH,N5 MOV R3,#04H JMP NEXT1 N5: CJNE A,#0DH,DISPLAY MOV R3,#00H JMP DISPLAY DISPLAY: ;顯示部分 MOV A,R4 ADD A,R3 MOV DPTR,#LEDTAB MOVC A,@A+DPTR MOV P0,A LCALL DELAY LCALL DELAY MOV P0,#0FFH LJMP KEYDOWN DELAY: ;消抖延時部分 MOV R6,#25 D2: MOV R7,#100 DJNZ R7,$ DJNZ R6,D2 RET LEDTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H END