交通信号灯控制器的设计

2025-05-01 17:38:12
推荐回答(1个)
回答1:

ORG 0000H
AJMP START
ORG 0003H
AJMP INX0
ORG 0013H
AJMP INX1
START:MOV SP,#60H
SETB IT0
SETB IT1
SETB EX0
SETB EX1
SETB EA
CLR RS1
CLR RS0
ACALL ST0
LOOP:ACALL ST1
ACALL ST2
ACALL ST3
ACALL ST4
AJMP LOOP

ST0:MOV P0,#0f6H;全红
mov p2,#0ffh
MOV R5,#0c8h;延时2秒
ACALL DELAY
RET

ST1:MOV P0,0EEH;东西红,南北绿
MOV R2,#09H;显示9,8,7,6,5,4,3,2,1
MOV R1,#00H
A1:MOV DPTR,#TAB
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
MOV R5,#64H;(延时一秒)
ACALL DELAY
INC R1
DJNZ R2,A1
RET

ST2:MOV R4,#03H;送闪烁次数
MOV R0,#06H
NEXT2:MOV P0,0deH;东西红,南北黄
MOV DPTR,#TAB

A2: MOV A,R0;显示3,2,1
MOVC A,@A+DPTR
MOV P1,A
MOV R5,#32h;延时0.5秒
ACALL DELAY
MOV P0,#0feH;东西红,南北灭
MOV R5,#32h;延时0.5秒
ACALL DELAY
INC R0
DJNZ R4,NEXT2;闪烁不到3次继续
RET

ST3:MOV P0,#0f5H;东西绿,南北红
MOV R2,#09H;显示9,8,7,6,5,4,3,2,1
MOV R1,#00H
B1:MOV DPTR,#TAB
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
MOV R5,#64h
ACALL DELAY
INC R1
DJNZ R2,B1
RET

ST4:MOV R4,#03H;送闪烁次数
MOV R0,#06H;显示3,2,1
NEXT4:MOV P0,0f3H;东西黄,南北红
MOV DPTR,#TAB

MOV A,R0
B2:MOVC A,@A+DPTR
MOV P1,A

MOV R5,#32h;延时0.5秒
ACALL DELAY
MOV P0,#0f7H;东西灭,南北红
MOV R5,#32h;延时0.5秒
ACALL DELAY
INC R0
DJNZ R4,NEXT4;闪烁不到3次继续
RET

DELAY:MOV R6,#0c8H;延时10ms
DEL1:MOV R7,#64H
DJNZ R7,$
DJNZ R6,DEL1
DJNZ R5,DELAY
RET

INX0:PUSH P0;保存原状态

PUSH 01H
PUSH 02H
PUSH 05H
PUSH 06H
PUSH 07H
MOV R5,#0AH;延时0.1秒去抖动
ACALL DELAY

ST31:MOV P0,#0f5H;东西绿,南北红(假设现在是st1状态,转到st3)
MOV R2,#09H;显示9,8,7,6,5,4,3,2,1
MOV R1,#00H
B11:MOV DPTR,#TAB
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
MOV R5,#64h
ACALL DELAY
INC R1
DJNZ R2,B11
POP 07H
POP 06H
POP 05H
POP 02H
POP 01H

POP P0
RETI

INX1:PUSH P0;保存原状态

PUSH 01H
PUSH 02H
PUSH 05H
PUSH 06H
PUSH 07H
MOV R5,#0AH;延时0.1秒去抖动
ACALL DELAY
MOV P0,#0f6H;全红
MOV R2,#05H;显示5,4,3,2,1
MOV R1,#04H
C1:MOV DPTR,#TAB
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
MOV R5,#64H;(延时一秒)
ACALL DELAY
INC R1
DJNZ R2,C1
POP 07H
POP 06H
POP 05H
POP 02H
POP 01H

POP P0

RETI

TAB:
DB 0dbh,0fbh,0bh,0f9h,0d9h,0cah,5bh,73h,0ah

END