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

📄 text1.asm

📁 实现交通灯控制
💻 ASM
字号:
		ORG 0000H
		LJMP START
		ORG 0003H		;INT0中断矢量
		LJMP EMERGY
		ORG 0013H		;INT1中断矢量		
		LJMP PASSER
		ORG 1000H
START:  MOV SP,#60H
	    SETB IE.0		;允许外部中断0
		SETB IE.2		;允许外部中断1
		CLR IP.2		;外部中断0为高先级
		SETB IP.0		;外部中断1为低优先级
		CLR TCON.0		;外0触发方式为低电平有效
		CLR TCON.2		;外1触发方式为低电平有效
		CLR EA			;关中断			
		MOV P2,#00H
		SETB EA			;开中断
		MOV P1,#11011110B 	;A绿,B红	
		MOV R4,#30		;A路口30秒
		MOV R5,#35		;B路口35秒
		ACALL DELAY
		MOV P1,#11011101B	;A黄,B红
		MOV R4,#5		
		MOV R5,#5
		ACALL DELAY
		MOV P1,#11110011B	;A红,B绿
		MOV R4,#20
		MOV R5,#15
		ACALL DELAY
		MOV P1,#11101011B	;A红,B黄
		MOV R4,#5			
		MOV R5,#5
		ACALL DELAY
		AJMP START
DELAY:	MOV R1,#10		;延时子程序,延时1秒
D1:		MOV R2,#80
D2:		MOV R3,#100
;***************数码管显示*****************************
;        *******显示A路口时间*********
		MOV A,R4		;显示A路口的时间 
		MOV B,#10
		DIV AB
		ORL B,#0F0H		;B或F0H,个位高四位置1
		MOV 80H,B		;A路口时间个位数送P0口  
		SETB P0.4		;关1号管			
		CLR P0.5		;开2号管显示个位
		MOV R7,#100		
D4:		DJNZ R7,D4		;数码管显示延时
		ORL A,#0F0H		
		MOV 80H,A		;A路口时间十位数送P0口
		SETB  P0.5		;关2号管
		CLR P0.4		;开1号管显示十位
		MOV R7,#100		
D8:		DJNZ R7,D8		;数码管显示延时

;        *******显示B路口时间*********
		MOV A,R5		;显示B路口的时间 
		MOV B,#10
		DIV AB
		ORL 0F0H,#0F0H		;个位高四位置1
		MOV 80H,0F0H		;B路口时间个位数送P0口
		SETB P0.6		;关3号管
		CLR P0.7		;开4号管显示个位
		MOV R7,#100
D5:		DJNZ  R7,D5		;数码管显示延时
		ORL A,#0F0H
		MOV 80H,A
		SETB P0.7		;关4号管
		CLR P0.6		;开3号管显示十位
;***************延时1s循环***********************					   
D3:		DJNZ R3,D3
		DJNZ R2,D2
		DJNZ R1,D1
		DJNZ R5,D6		;R4或R5减为0时延时返回
		RET
D6:		DJNZ R4,DELAY
		RET
;***************紧急车辆处理***************		
EMERGY:	        JNB P1.2,E2	        ;A通道为红灯跳到E2,不是红灯判断B通道
                JNB P1.5,E1             ;B通道为红灯跳到E1,不是红灯则AB通道各亮5秒黄灯
                CLR P1.1                
                SETB P1.0
                MOV R4,#5
E2:		MOV R5,#5               ;A通道继续亮5秒红灯,B通道亮5秒黄灯
                CLR P1.4
                SETB P1.3
                SJMP E3
E1:             MOV R4,#5               ;A通道亮5秒黄灯,B通道继续亮5秒红灯
                CLR P1.1 
                SETB P1.0 
E3:             ACALL DELAY
	        MOV P1,#11011011B	;A红B红20秒
		MOV R4,#20
		MOV R5,#20
		ACALL DELAY
		POP 70H			;修改PC的值 
		POP 71H
		MOV 70H,#10H
		MOV 71H,#00H
		PUSH 71H
		PUSH 70H	
		RETI
;***************行人过街处理******************
PASSER:	JB P2.1,LOOP2		;A有行人 
		JB P2.2,LOOP3		;B有行人 
; 	********A行人过街处理*******
INTEND:	RETI
LOOP2:	JNB P1.0,INTEND		;A道为绿灯则中断返回
		CLR P2.1		;A行人中断选择位清0
		MOV P1,#11101011B	;A黄B黄秒
		MOV R4,#5
		MOV R5,#5
		ACALL DELAY
		POP 70H			;修改PC的值
		POP 71H
		MOV 70H,#10H
		MOV 71H,#00H
		PUSH 71H
		PUSH 70H
		AJMP INTEND
;	*******B行人过街处理*********
LOOP3:	JNB P1.3,INTEND		;B道为绿灯则中断返回
		CLR P0.2		;B行人中断选择位清0
		MOV P1,#11011101B	;A黄B黄5秒
		MOV R4,#5
		MOV R5,#5
		ACALL DELAY
		MOV P1,#11110011B	;A红B绿15秒
		MOV R4,#20
		MOV R5,#15
		ACALL DELAY
		MOV P1,#11101011B	;A红B黄5秒
		MOV R4,#5
		MOV R5,#5
		ACALL DELAY
		POP 70H			;修改PC的值
		POP 71H
		MOV 70H,#10H
		MOV 71H,#00H
		PUSH 71H
		PUSH 70H
		AJMP INTEND
		END
;注紧急车辆按钮接P3.2,AB行人按钮接P3.3

⌨️ 快捷键说明

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