www.pudn.com > hongludeng.rar > cardeng.asm


源代码: 
 
        ORG     0000H 
        LJMP    START 
        ORG     0003H           ;INT 0 中断入口地址 
        LJMP    INT0 
        ORG     0040H 
START: 
        MOV     SP,#60H 
        SETB    EX0             ;INT 0 中断有效 
        SETB    IT0 
        SETB    EA 
        LCALL   STATUS0         ;初始状态(都是红灯) 
CIRCLE: LCALL   STATUS1         ;南北绿灯,东西红灯 
        LCALL   STATUS2         ;南北绿灯闪转黄灯,东西红灯 
        LCALL   STATUS3         ;南北红灯,东西绿灯 
        LCALL   STATUS4         ;南北红灯,东西绿灯闪转黄灯 
        LJMP    CIRCLE 
INT0: 
        PUSH    PSW             ;保护现场 
        PUSH    2 
        PUSH    ACC 
        MOV     DPTR,#8300H 
        MOV     A,#0FH         ;南北,东西都亮红灯 
        MOVX    @DPTR,A 
        MOV     R2,#100         ;延时10秒 
        LCALL   DELAY 
        POP     ACC             ;恢复现场 
        MOVX    @DPTR,A 
        POP     2 
        POP     PSW 
        RETI 
STATUS0:                        ;南北红灯,东西红灯 
        MOV     DPTR,#8300H 
        MOV     A,#0FH 
        MOVX    @DPTR,A 
        MOV     R2,#10          ;延时1秒 
        LCALL   DELAY 
        RET 
STATUS1:                        ;南北绿灯,东西红灯 
        MOV     DPTR,#8300H 
        MOV     A,#5AH          ;南北绿灯,东西红灯 
        MOVX    @DPTR,A 
        MOV     R2,#50         ;延时5秒 
        LCALL   DELAY 
        RET 
STATUS2:                        ;南北绿灯闪转黄灯,东西红灯 
        MOV     DPTR,#8300H 
        MOV     R3,#03H         ;绿灯闪3次 
FLASH:  MOV     A,#5FH 
        MOVX    @DPTR,A 
        MOV     R2,#03H 
        LCALL   DELAY 
        MOV     A,#5AH 
        MOVX    @DPTR,A 
        MOV     R2,#03H 
        LCALL   DELAY 
        DJNZ    R3,FLASH 
        MOV     A,#0AH         ;南北黄灯,东西红灯 
        MOVX    @DPTR,A 
        MOV     R2,#10          ;延时1秒 
        LCALL   DELAY 
        RET 
STATUS3:                        ;南北红灯,东西绿灯 
        MOV     DPTR,#8300H 
        MOV     A,#0A5H 
        MOVX    @DPTR,A 
        MOV     R2,#50         ;延时5秒 
        LCALL   DELAY 
        RET 
STATUS4:                        ;南北红灯,东西绿灯闪转黄灯 
        MOV     DPTR,#8300H 
        MOV     R3,#03H         ;绿灯闪3次 
FLASH1: MOV     A,#0AFH 
        MOVX    @DPTR,A 
        MOV     R2,#03H 
        LCALL   DELAY 
        MOV     A,#0A5H 
        MOVX    @DPTR,A 
        MOV     R2,#03H 
        LCALL   DELAY 
        DJNZ    R3,FLASH1 
        MOV     A,#05H         ;南北红灯,东西黄灯 
        MOVX    @DPTR,A 
        MOV     R2,#10          ;延时1秒 
        LCALL   DELAY 
 NOP 
        RET 
DELAY:                          ;延时子程序 
        PUSH    2 
        PUSH    1 
        PUSH    0 
DELAY1: MOV     1,#00H 
DELAY2: MOV     0,#0B2H 
        DJNZ    0,$ 
        DJNZ    1,DELAY2        ;延时 100 mS 
        DJNZ    2,DELAY1 
        POP     0 
        POP     1 
        POP     2 
        RET 
        END