应该不难吧。每一步解说没用的。
你的延时都太短了,实际上哪里有这么短的延时。
SN_G BIT P1.0
SN_Y BIT P1.1
SN_R BIT P1.2
EW_G BIT P1.5
EW_Y BIT P1.6
EW_R BIT P1.7
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
MOV P1,#00H
SETB EW_R
SETB SN_G
ACALL D01S
ACALL D01S
CLR EW_R
CLR SN_G
SETB EW_Y
SETB SN_Y
ACALL D01S
CLR EW_Y
CLR SN_Y
SETB SN_R
SETB EW_G
ACALL D01S
ACALL D01S
CLR SN_R
CLR EW_G
SETB EW_Y
SETB SN_Y
ACALL D01S
AJMP MAIN
D01S:
MOV R7,#250
MOV R6,#200
DJNZ R6,$
DJNZ R7,$-4
RET
END
给你放慢10倍看看效果
SR EQU P1.2
SG EQU P1.0
SY EQU P1.1
ER EQU P1.7
EG EQU P1.5
EY EQU P1.6
ORG 0
SETB SR;SSR
CLR SG;CSG
CLR SY;CSY
CLR ER;CER
SETB EG;SEG
CLR EY;CEY
LCALL DELAY200MS
CLR EG
SETB EY
LCALL DELAY100MS
SETB ER
CLR EG
CLR EY
CLR SR
SETB SG
CLR SY
LCALL DELAY200MS
CLR SG
SETB SY
LCALL DELAY100MS
LJMP 0
DELAY200MS:
LCALL DELAY100MS
LCALL DELAY100MS
RET
DELAY100MS:
MOV R0,#10H
DR1DELAY:MOV R1,#0FFH
DR2DELAY:MOV R2,#0FFH
DJNZ R2,$
DJNZ R1,DR2DELAY
DJNZ R0,DR1DELAY
RET
END
这个题是相当简单,多加学习,自己可以写得出来