ORG 0000H
LJMP MAIN
ORG 0040H
ORG 0003H
LJMP PINT0
ORG 1000H
MAIN:
SETB EA
SETB EX0
SETB IT0
MOV P1,#0FFH
CLR P1.0
CLR P1.5
ACALL DELAY3S
LOOP:
MOV P1,#0FFH
CLR P1.0
CLR P1.6
ACALL DELAY30S
ACALL YEFALSH
MOV P1,#0FFH
CLR P1.1
CLR P1.5
ACALL DELAY30S
ACALL YEFALSH
AJMP LOOP
///////////////////////////////////////
PINT0:
PUSH PSW
PUSH ACC
PUSH P1
MOV P1,#0FFH
CLR P1.5
CLR P1.0
ACALL DELAY5S
POP P1
POP ACC
POP PSW
REti
//////////////////////////////////////
DELAY05S:
MOV R7,#250
DE2:MOV R6,#10
DE1:MOV R5,#100
DJNZ R5,$
DJNZ R6,DE1
DJNZ R7,DE2
RET
////////////////////////////////////////
YEFALSH:
MOV P1,#0FFH
MOV R3,#3
YF:
CLR P1.2
CLR P1.7
ACALL DELAY05S
SETB P1.2
SETB P1.7
ACALL DISPLAY1
ACALL DELAY05S
DJNZ R3,YF
RET
////////////////////////////////////////////
DELAY3S:
MOV R3,#3
DE3S:ACALL DISPLAY1
ACALL DELAY1S
DJNZ R3,DE3S
RET
/////////////////////////////////////////////
DELAY30S:
MOV R3,#30
DE30S:ACALL DISPLAY1
ACALL DELAY1S
DJNZ R3,DE3S
RET
//////////////////////////////////////////////
DELAY1S:
MOV R7,#250
DE5:MOV R6,#20
DE4:MOV R5,#100
DJNZ R5,$
DJNZ R6,DE4
DJNZ R7,DE5
RET
//////////////////////////////////////////////
DELAY5S:
MOV R4,#10
DE5S:ACALL DELAY05S
DJNZ R4,DE5S
RET
//////////////////////////////////////////////
DISPLAY1:
ACALL DISPLAY
RET
//////////////////////////////////////////////
DISPLAY:
MOV A,R3
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOVC A,@A+DPTR
MOV P2,A
RET
TABLE :DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
应该实现的功能是在没有中断时进行正常的交通灯变换,在有中断时四个方向的交通灯变红,数码管停止倒计时,中断五秒延时后恢复到中断前的状态。这个程序问题在中断结束后数码管会继续倒计时但是交通灯却还是四个方向都是红灯状态,而不是恢复中断前的状态。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>