基于51单片机交通灯(汇编语言)

基于51单片机交通灯(汇编语言)

设计要求:

    设计交通灯控制系统。模拟交通信号灯控制:一般情况下正常显示,东西-南北交替放行,各方向通行时间为30秒。有救护车或警车到达时,两个方向交通信号灯全为红色,以便让急救车或警车通过,设通行时间为10秒,之后交通恢复正常。用单次脉冲模拟急救车或警车申请外部中断。
proteus仿真图:
在这里插入图片描述
单片机晶振为22.114MHz
代码:

		ORG 0000H
		AJMP MAIN
		ORG 0003H
		AJMP INTV1
		ORG 000BH
		AJMP EXT0
		
		ORG 0100H
MAIN:	
		SETB P3.2		
		MOV P1,#00H	
		SETB TR0
		SETB IT0
		SETB EX0
		SETB ET0
		SETB PT0	;设置T0优先级最高
		SETB EA
		MOV TMOD,#01H	;定时器0工作方式1
LOOP:	MOV TH0,#184
		MOV R4,#100
		MOV TL0 , #0		
		SETB TR0
		MOV SP,#60H		;栈
		
START:	MOV R7,#30		;交通灯正常运行开始
LOOP1:					;南北绿灯,东西红灯,25s
		LCALL WAIT_1S
		MOV P1,#11H
		DEC R7
		CJNE R7,#5,LOOP1
LOOP2:					;南北绿灯,东西红灯,东西南北黄灯5s
		LCALL WAIT_1S
		MOV P1,#35H
		DEC R7
		CJNE R7,#0,LOOP2
		
		MOV R7,#30
		
LOOP3:					;南北红灯,东西绿灯,25s
		LCALL WAIT_1S
		MOV P1,#0AH
		DEC R7
		CJNE R7,#5,LOOP3

LOOP4:					;南北红灯,东西绿灯,东西南北黄灯5s
		LCALL WAIT_1S
		MOV P1,#2EH
		DEC R7
		CJNE R7,#0,LOOP4
		SJMP START
	
WAIT_1S:				;等待1s
		JNB 20H.0,$
		CLR 20H.0
		LCALL DISPLAY
		RET
		
EXT0: 					;1s中断拉高20H.0	
		MOV TH0 , #184
		MOV TL0 , #0	
		DJNZ R4,T0END;1S
		MOV R4,#100		
		SETB 20H.0	
T0END:	RETI

TAB:DB 3FH,06H,5BH,4FH,66H
	DB 6DH,7DH,07H,7FH,6FH//00
		

DISPLAY:				;数码管显示
		MOV A,R7
		DEC A
		MOV B,#10
		DIV AB
		MOV DPTR,#TAB
		MOVC A,@A+DPTR
		MOV P2,A
		XCH A,B
		MOVC A,@A+DPTR
		MOV P0,A
		RET
		
INTV1:					;外部中断0
		MOV P1,#09H
		PUSH ACC		;入栈保存工作状态
		PUSH B
		PUSH PSW
		SETB RS0		;更换工作区
		MOV R7,#10		;10s倒计时
;		LCALL DISPLAY
L1:		
		LCALL WAIT_1S
		DEC R7
		CJNE R7,#0,L1		
		POP PSW			;恢复工作状态
		LCALL DISPLAY
		POP B
		POP ACC
		RETI
		
END		

参考代码:: https://wenku.baidu.com/view/90866b22ee06eff9aef80750.html.

  • 30
    点赞
  • 273
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值