多开关控制多灯2
硬件连接:
程序1:
ORG 10
START:
;MOV P0,#0FH
JNB P0.0,LOP1 ;P0.0位为0则跳转至LOP1
SETB P0.4
SJMP NEXT1
LOP1:
CLR P0.4
NEXT1:
JNB P0.1,LOP2
SETB P0.5
SJMP NEXT2
LOP2:
CLR P0.5
NEXT2:
JNB P0.2,LOP3
SETB P0.6
SJMP NEXT3
LOP3:
CLR P0.6
NEXT3:
JNB P0.3,LOP4
SETB P0.7
SJMP NEXT4
LOP4:
CLR P0.7
NEXT4:
AJMP START
RET
END
程序2:
ORG 000H
START:
MOV P0,#0FFH ;高四位LED灯灭,低四位开关状态置1
MOV A,P0 ;读P0口状态,送到累加器A中
SWAP A ;低四位、高四位状态互换
ANL A,#0F0H ;高四位值不变
MOV P0,A ;从P0口输出
LCALL Dealy
SJMP START ;循环
Dealy: ;延时子程序,软件防抖
MOV R7,#250
D1: MOV R6,#250
D2: NOP
NOP
DJNZ R6,D2
DJNZ R7,D1
RET
END
仿真结果:
若将程序2中延时函数注释
;LCALL Dealy
LED出现余辉: