做了一個矩陣鍵盤程序,要求是當按下對應的鍵時數(shù)碼管顯示對應的數(shù)值0到F,問題在按下按鍵時數(shù)碼管無反應
ORG 0000H
AJMP MAIN
NOP
MAIN: LCALL KEY
LCALL DIS
AJMP MAIN
KEY: LCALL KEYY //調(diào)掃描鍵盤
JNZ KEY1 //有鍵按下轉(zhuǎn)KEY1
LCALL DEL
AJMP MAIN
KEY1: LCALL DEL //去抖
LCALL KEYY //再檢測
JZ MAIN //無鍵按下轉(zhuǎn)回主程序
KEY0: JNZ KEY0 //等待釋放按鍵
CPL A
MOV R3,A
LCALL KEY2
KEYY: MOV P1,#0FH
MOV A,P1
MOV 30H,A
MOV P1,#0F0H
MOV A,P1
MOV 31H,A
ANL 30H,#0FH
MOV A,30H
ANL 31H,#0F0H
ADD A,31H
CPL A
RET
KEY2: CJNE R3,#0EEH,KEY3
MOV R2,#00H
AJMP DIS
KEY3: CJNE R3,#0EDH,KEY4
MOV R2,#01H
AJMP DIS
KEY4: CJNE R3,#0EBH,KEY5
MOV R2,#02H
AJMP DIS
KEY5: CJNE R3,#0E7H,KEY6
MOV R2,#03H
AJMP DIS
KEY6: CJNE R3,#0DEH,KEY7
MOV R2,#04H
AJMP DIS
KEY7: CJNE R3,#0DEH,KEY8
MOV R2,#05H
AJMP DIS
KEY8: CJNE R3,#0DEH,KEY9
MOV R2,#06H
AJMP DIS
KEY18: AJMP MAIN
KEY9: CJNE R3,#0DEH,KEY10
MOV R2,#07H
AJMP DIS
KEY10: CJNE R3,#0DEH,KEY11
MOV R2,#08H
AJMP DIS
KEY11: CJNE R3,#0DEH,KEY12
MOV R2,#09H
AJMP DIS
KEY12: CJNE R3,#0DEH,KEY13
MOV R2,#0AH
AJMP DIS
KEY13: CJNE R3,#0DEH,KEY14
MOV R2,#0BH
AJMP DIS
KEY14: CJNE R3,#0DEH,KEY15
MOV R2,#0CH
AJMP DIS
KEY15: CJNE R3,#0DEH,KEY16
MOV R2,#0DH
AJMP DIS
KEY16: CJNE R3,#0DEH,KEY17
MOV R2,#0EH
AJMP DIS
KEY17: CJNE R3,#0DEH,KEY18
MOV R2,#0FH
AJMP DIS
DIS: MOV A,R2
MOV DPTR,#DUAN
MOVC A,@A+DPTR
MOV P0,A
SETB P2.3
CLR P2.3
MOV P0,#0FEH
SETB P2.2
LCALL DEL
CLR P2.2
RET
DEL: MOV R7,#50
DEL2: MOV R6,#100
DJNZ R6,$
DJNZ R7,DEL2
RET
DUAN: DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,77h,7Ch,39h,5Eh,79h,71h
END
|