51单片机采用外中断模拟交通灯急救车通过

2019-07-15 07:39发布

        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
应该实现的功能是在没有中断时进行正常的交通灯变换,在有中断时四个方向的交通灯变红,数码管停止倒计时,中断五秒延时后恢复到中断前的状态。这个程序问题在中断结束后数码管会继续倒计时但是交通灯却还是四个方向都是红灯状态,而不是恢复中断前的状态。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。