MCS51流水灯_按键检测_Proteus仿真

流水灯_按键检测

功能:按键控制LED亮、灭

硬件连接:
MCS51流水灯_按键检测_Proteus仿真

程序:

ORG		0000H
	AJMP	START
	ORG		0030H
START:	
	SETB	P2.0			;将P2.0置为输入功能
MAIN:
	MOV		R0,#0FFH		;-1→R0
	MOV		R2,16			;循环次数16
	MOV		DPTR,#TAB		;将数据表起始数据放入数据指针DPTR中
LOOP:
	INC		R0
	MOV		A,R0
	MOVC	A,@A+DPTR		;以累加器A作为数据表中的数组下标,将数据表中数据提取出来,并存入累加器A
SHOW:
	JNB		P2.0,INCR		;按键检测,若P2.0=0(按键按下)则跳转
	JMP		SHOW			;否则,继续检测
INCR:
	JNB		P2.0,INCR		;若按键按下未松开,继续等待
	MOV		P0,A			
	LCALL	DELAY
	LCALL	DELAY
	LCALL	DELAY
	DJNZ	R2,LOOP
	AJMP	MAIN
	RET
DELAY:						;延时程序
	MOV		R7,#250
D1:	MOV		R6,#250
D2: DJNZ	R6,D2
	DJNZ	R7,D1
	RET
TAB:
	DB	01111110B
	DB	00111100B
	DB	00011000B
	DB	00000000B
	DB	00011000B
	DB	00111100B
	DB	01111110B
	DB	11111111B
	DB	01010101B
	DB	10101010B
	DB	00000111B
	DB	00001111B
	DB	00011111B
	DB	00111111B
	DB	01111111B
	DB	11111111B
	END

仿真效果:
MCS51流水灯_按键检测_Proteus仿真
MCS51流水灯_按键检测_Proteus仿真