ORG 0000H ;程序代码由地址0开始执行
LJMP START
ORG 0003H
LJMP TOINT ;中断服务程序
ORG 1000H
START: SETB IE.0
SETB IP.0
CLR TCON.0
ENTER: CLR EA
MOV R4,#60 ;设置A道总延迟时间R4*2s
MOV P1,#11110011B ;设置A道亮绿灯,B道亮黄灯
CLR F0
SETB EA
LOOP1: ACALL DELAY
DJNZ R4,PA1
AJMP LL1
PA1: MOV C,P1.6 ;判断A道有没有车通过
JNC LOOP1
LL1: MOV P1,#11110101B ;设置A到亮黄灯,B道亮红灯
ACALL DELAY
CLR EA
MOV R5,#45 ;设置B道总延迟时间R5*2s
MOV P1,#11011110B ;设置A道亮红灯,B道亮绿灯
SETB F0
SETB EA ;允许外部中断
LOOP2: ACALL DELAY
DJNZ R5,PB1
AJMP LL2
PB1: MOV C,P1.7 ;判断B道有没有车通过
JNC LOOP2
MOV C,P1.6
JC LOOP2
LL2: MOV P1,#11101110B ;设置A道亮红灯,B道亮黄绿灯
ACALL DELAY
AJMP ENTER
DELAY: MOV R1,#14H ;延迟子程序,总延迟时间20*200*250*2μs
MM1: MOV R2,#0C8H ;R2=200
MM2: MOV R3,,#0FAH ;R3=250
MM3: DJNZ R3,MM3
DJNZ R2,MM2
DJNZ R1,MM1
RET
END
TOINT: PUSH P1 ;存储P1口状态
PUSH ACC
PUSH PSW
MOV C,F0
JNC PA
SETB P1.5
CLR P1.4
ACALL DELAY
MOV P1,#11110110B ;设置A道亮红灯,B道亮红灯
SJMP LOOP
PA: SETB P1.2
CLR P1.1
ACALL DELAY
MOV P1,#11110110B ;设置A道亮红灯,B道亮红灯
LOOP: MOV C,P3.2
JNC LOOP
MOV C,F0
MOV P1,#11110011B ;设置A道亮绿灯,B道亮红灯
LB: MOV P1,#11011110B ;设置A道亮红灯,B道亮绿灯
POP PSW
POP ACC
POP P1
RET
这是原来的程序
LJMP START
ORG 0003H
LJMP TOINT ;中断服务程序
ORG 1000H
START: SETB IE.0
SETB IP.0
CLR TCON.0
ENTER: CLR EA
MOV R4,#60 ;设置A道总延迟时间R4*2s
MOV P1,#11110011B ;设置A道亮绿灯,B道亮黄灯
CLR F0
SETB EA
LOOP1: ACALL DELAY
DJNZ R4,PA1
AJMP LL1
PA1: MOV C,P1.6 ;判断A道有没有车通过
JNC LOOP1
LL1: MOV P1,#11110101B ;设置A到亮黄灯,B道亮红灯
ACALL DELAY
CLR EA
MOV R5,#45 ;设置B道总延迟时间R5*2s
MOV P1,#11011110B ;设置A道亮红灯,B道亮绿灯
SETB F0
SETB EA ;允许外部中断
LOOP2: ACALL DELAY
DJNZ R5,PB1
AJMP LL2
PB1: MOV C,P1.7 ;判断B道有没有车通过
JNC LOOP2
MOV C,P1.6
JC LOOP2
LL2: MOV P1,#11101110B ;设置A道亮红灯,B道亮黄绿灯
ACALL DELAY
AJMP ENTER
DELAY: MOV R1,#14H ;延迟子程序,总延迟时间20*200*250*2μs
MM1: MOV R2,#0C8H ;R2=200
MM2: MOV R3,,#0FAH ;R3=250
MM3: DJNZ R3,MM3
DJNZ R2,MM2
DJNZ R1,MM1
RET
END
TOINT: PUSH P1 ;存储P1口状态
PUSH ACC
PUSH PSW
MOV C,F0
JNC PA
SETB P1.5
CLR P1.4
ACALL DELAY
MOV P1,#11110110B ;设置A道亮红灯,B道亮红灯
SJMP LOOP
PA: SETB P1.2
CLR P1.1
ACALL DELAY
MOV P1,#11110110B ;设置A道亮红灯,B道亮红灯
LOOP: MOV C,P3.2
JNC LOOP
MOV C,F0
MOV P1,#11110011B ;设置A道亮绿灯,B道亮红灯
LB: MOV P1,#11011110B ;设置A道亮红灯,B道亮绿灯
POP PSW
POP ACC
POP P1
RET
这是原来的程序

