⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 turn lamp.asm

📁 用到Proteus软件来仿真51单片机
💻 ASM
字号:
		ORG		0000H
		AJMP	START1
		ORG		0030H
SAME	EQU		4EH
START1:	MOV		P1,#00H			;无输入时无输出
START:	MOV		A,P3			;读P3口数据
		ANL		A,#1FH			;取用P3口的低五位数据
		CJNE	A,#1FH,SHIY		;对P3口低五位数据进行判断
		AJMP	START1
SHIY:	MOV		SAME,A
		LCALL	YS				;延时
		MOV		A,P3			;读P3口的数据
		ANL		A,#1FH			;取用P3口的低五位数据
		CJNE	A,#1FH,SHIY1	;对P3口的低五位数据进行判断
		AJMP	START1			;开关没有动作时无输出
SHIY1:	CJNE	A,SAME,START1
		CJNE	A,#17H,NEXT1	;P3.3=0时进入左转分支
		AJMP	LEFT
NEXT1:	CJNE	A,#0FH,NEXT2	;P3.4=0时进入右转分支
		AJMP	RIGHT
NEXT2:	CJNE	A,#1DH,NEXT3	;P3.1=0时进入紧急分支
		AJMP	EARGE
NEXT3:	CJNE	A,#1EH,NEXT4	;P3.0=0时进入刹车分支
		AJMP	BRAKE
NEXT4:	CJNE	A,#16H,NEXT5	;P3.0=P3.3=0时进入左转刹车分支
		AJMP	LEBR
NEXT5:	CJNE	A,#0EH,NEXT6	;P3.0=P3.4=0时进入右转刹车分支
		AJMP	RIBR
NEXT6:	CJNE	A,#1CH,NEXT7	;P3.0=P3.1=0时进入紧急刹车分支
		AJMP	BRER
NEXT7:	CJNE	A,#14H,NEXT8	;P3.0=P3.1=P3.3=0时进入左转紧急刹车分支
		AJMP	LBE
NEXT8:	CJNE	A,#0CH,NEXT9	;P3.0=P3.1=P3.4=0时进入右转紧急刹车分支
		AJMP	RBE
NEXT9:	CJNE	A,#1BH,NEXT10	;P3.2=0时进入停靠分支
		AJMP	STOP
NEXT10:	AJMP	ERROR			;其他情况进入错误分支
LEFT:	MOV		P1,#2AH			;左转分支
		LCALL	Y1s
		MOV		P1,#00H
		LCALL	Y1s
		AJMP	START
RIGHT:	MOV		P1,#54H			;右转分支
		LCALL	Y1s
		MOV		P1,#00H
		LCALL	Y1s
		AJMP	START
EARGE:	MOV		P1,#7FH			;紧急分支
		LCALL	Y1s
		MOV		P1,#00H
		LCALL	Y1s
		AJMP	START
BRAKE:	MOV		P1,#60H			;刹车分支
		AJMP	START
LEBR:	MOV		P1,#6AH			;左转刹车分支
		LCALL	Y1s
		MOV		P1,#40H
		LCALL	Y1s
		AJMP	START
RIBR:	MOV		P1,#6AH			;右转刹车分支
		LCALL	Y1s
		MOV		P1,#40H
		LCALL	Y1s
		AJMP	START
BRER:	MOV		P1,#7EH			;紧急刹车分支
		LCALL	Y1s
		MOV		P1,#60H
		LCALL	Y1s
		AJMP	START
LBE:	MOV		P1,#7EH			;左转紧急刹车分支
		LCALL	Y1s
		MOV		P1,#40H
		LCALL	Y1s
		AJMP	START
RBE:	MOV		P1,#7EH			;右转紧急刹车分支
		LCALL	Y1s
		MOV		P1,#20H
		LCALL	Y1s
		AJMP	START
STOP:	MOV		P1,#66H			;停靠分支
		LCALL	Y100ms
		MOV		P1,#00H
		LCALL	Y100ms
		AJMP	START
ERROR:	MOV		P1,#80H			;错误分支
		LCALL	Y1s
		MOV		P1,#00H
		LCALL	Y1s
		AJMP	START
YS:		MOV		R7,#20H			;延时
YS0:	MOV		R6,#0FFH
YS1:	DJNZ	R6,YS1
		DJNZ	R7,YS0
		RET
Y1s:	MOV		R7,#04H			;延时
Y1s1:	MOV		R6,#0FFH
Y1s2:	MOV		R5,#0FFH
		DJNZ	R5,$
		DJNZ	R6,Y1s2
		DJNZ	R7,Y1s1
		RET
Y100ms:	MOV		R7,#66H			;延时
Y100ms1:MOV		R6,#0FFH
Y100ms2:DJNZ	R6, Y100ms2
		DJNZ	R7, Y100ms1
		RET
		END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -