汇编语言实现简易交通灯(含中断)

运用单片机的定时器及外部中断系统,设计具有应急通行功能的简易交通灯应用

功能:
交通灯运行状态有六种:
按照简单的交通路口规则,正常情况有四种状态不停轮换:
状态1:南北绿灯亮,东西红灯亮:
状态2:南北黄灯闪,东西红灯亮;
状态3.南北红灯亮,东西绿灯亮:
状态4.南北红灯亮,东西黄灯闪;
状态5.为应急通行模式。由外部中断0控制。当应急通行开关闭合时,所有路口的红灯处于常亮状态,黄、绿灯熄灭。
状态6为深夜模式,外部中断1控制。当深夜模式开关闭合时,所有路口的黄灯闪烁。

protues连接图:(连接各个点的时候一点要注意是否打点,千万别没点直接跨线)
在这里插入图片描述
分析一下情况:
在这里插入图片描述
上代码:

ORG 0000H
JMP INIT
ORG 0003H
JMP INIT_0
ORG 0013H
JMP INIT_1

INIT:
	CLR IT0
	CLR IT1
	SETB EA
	SETB EX0
	SETB EX1
	SETB PX0
	CLR PX1

S1:
	MOV P1,#01111110B
	CALL DELAY3S
	
S2:
	MOV R4,#3
	L4:
		MOV P1,#10111110B
		CALL DELAY500MS
		MOV P1,#11111110B
		CALL DELAY500MS
		DJNZ R4,L4
	
S3:
	MOV P1,#11011011B
	CALL DELAY3S
	
S4:
	MOV R4,#3
	L5:
		MOV P1,#11011101B
		CALL DELAY500MS
		MOV P1,#11011111B
		CALL DELAY500MS
		DJNZ R4,L5
		
JMP S1
	
	
DELAY3S:
	MOV R3,#3
	L3:
		CALL DELAY1S
	DJNZ R3,L3
	RET
	
DELAY1S:
	CALL DELAY500MS
	CALL DELAY500MS
	RET
	
DELAY500MS:
	MOV R2,#250
	L2:
		CALL DELAY1MS
	DJNZ R2,L2
	RET
	
DELAY1MS:
	MOV R1,#250
	L1:
		NOP
		NOP
		DJNZ R1,L1
	RET
	
INIT_0:	
	MOV P1,#11011110B
	RETI
	
INIT_1:	
	;PUSH PSW ;push and pop way
	;MOV PSW,#10H
	;MOV P1,#10111101B
	;CALL DELAY500MS
	;MOV P1,#11111111B
	;CALL DELAY500MS
	;POP PSW
	;RETI

	MOV P1,#10111101B
	CALL DELAY500MS
	MOV P1,#11111111B
	CALL DELAY500MS
	RETI

END

个人理解(不一定正确):
中断并不是靠软件变成来实现,你可能想到的是调用子程序,代码部分仅仅是靠
定时/计数器0、1控制寄存器TCON
中断允许寄存器IE
中断优先级控制寄存器IP
这些来实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值