ORG 0000H
LJMP MAIN
ORG 0003H //外部中断0,作为急救车信号,当p3.2按钮按下,即有急救车信号
LJMP INTO
ORG 000BH
LJMP INTR0
ORG 1000H
MAIN:
MOV P3,#0FFH
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IE,#83H
SETB TR0
BEGIN:
MOV P1,#11101110B //东西红灯亮
MOV P0,#11101110B //南北红灯亮
HERE:SJMP HERE //等待中断
INTR0:
MOV R0,30H
MOV R1,31H
PUSH ACC
PUSH PSW
MOV TH0,#3CH
MOV TL0,#0B0H
INC R0
MOV 30H,R0
CJNE R0,#20,RETURN
MOV R0,#00
MOV 30H,R0
INC R1
MOV 31H,R1
LOOP:
CJNE R1,#3,L1
MOV P1,#10111011B //东西绿灯亮
MOV P0,#11101110B //南北红灯亮
L1: CJNE R1,#13,L2
MOV P1,#11011101B //东西黄灯亮
L2: CJNE R1,#14,L3
MOV P1,#11111111B //东西黄灯灭
L3: CJNE R1,#15,L4
MOV P1,#11011101B //东西黄灯亮
L4: CJNE R1,#16,L5
MOV P1,#11111111B //东西黄灯灭
L5: CJNE R1,#17,L6
MOV P1,#11011101B //东西黄灯亮
L6: CJNE R1,#18,L7
MOV P1,#11111111B //东西黄灯灭
MOV P1,#11101110B //东西红灯亮
MOV P0,#10111011B //南北绿灯亮
L7: CJNE R1,#29,L8
MOV P0,#11011101B //南北黄灯亮
L8: CJNE R1,#30,L9
MOV P0,#11111111B //南北黄灯灭
L9: CJNE R1,#31,L10
MOV P0,#11011101B //南北黄灯亮
L10:CJNE R1,#32,L11
MOV P0,#11111111B //南北黄灯灭
L11:CJNE R1,#33,L12
MOV P0,#11011101B //南北黄灯亮
L12:CJNE R1,#34,RETURN
MOV P0,#11111111B //南北黄灯灭
MOV R1,#3
MOV 31H,R1
LJMP LOOP
return:
POP ACC
POP PSW
RE
ti
INTO:
CLR TR0
PUSH PSW
PUSH ACC
MOV P1,#11101110B //东西红灯亮
MOV P0,#11101110B //南北红灯亮
ACALL DELAY
POP PSW
POP ACC
SETB TR0
RETI
DELAY:MOV R7,#04
D2: MOV R6,#250
D3: MOV R5,#250
DJNZ R5,$
DJNZ R6,D3
DJNZ R7,D2
RET
END
现在出现的问题是:按下按钮进入中断,定时器0关闭,红灯亮起,然后开启定时器,返回,但是返回不到原来的状态,比如原来是绿灯亮,但是返回直接到红灯亮
-
-
交通灯.zip
下载积分: 积分 -1 分
78.45 KB, 下载次数: 14, 下载积分: 积分 -1 分
一周热门 更多>