ORG 0000H
MOV R0,#0
MOV DPTR,#TAB
START:MOV A,P0
ANL A,#0FH ;取A的低四位
CJNE A,#0FH,KEY1
SJMP START
KEY1:LCALL DELAY ;調用延遲子程序
MOV A,P0 ;確認按鍵是否確實按下
ANL A,#0FH
CJNE A,#0FH,KEY2
SJMP START
KEY2:JNB ACC.0,K1 ;確認按下的是哪個開關
JNB ACC.1,K2
JNB ACC.2,K3
JNB ACC.3,K4
LJMP START
K1:MOV R1,#1 ;分別輸入不同數值對應不同開關
LJMP ADDOPR
K2:MOV R1,#2
LJMP ADDOPR
K3:MOV R1,#3
LJMP ADDOPR
K4:DEC R0
LJMP WAIT
ADDOPR:MOV A,R0 ;與值相加
ADD A,R1
MOV R0,A
WAIT:MOV A,P0
ANL A,#0FH
CJNE A,#0FH,WAIT
MOV A,R0
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A
MOV A,B
MOVC A,@A+DPTR
MOV P3,A
LJMP START
DELAY:MOV R6,#15 ;延時子程序
DEL2:MOV R7,#200
DEL1:DJNZ R7,DEL1
DJNZ R6,DEL2
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
|