51 汇编编程:倒计时交通灯

一个51单片机汇编语言的程序,要求就是红灯25秒,绿灯20秒,黄灯闪烁5秒。


题目链接:http://zhidao.baidu.com/question/560272874


很简单的要求,用下图电路即可实现:


51 汇编编程:倒计时交通灯_第1张图片


图片链接:http://xiangce.baidu.com/picture/detail/6ec1f333166783bfbaa05da8f93b5625caa7402f


全部程序如下:


;倒计时交通灯


;四位共阳数码管

;P0 接段码

;P2.0123 接位码


;P3 接红绿黄灯


NB_R   EQU  P3.0

NB_Y   EQU  P3.1

NB_G   EQU  P3.2


DX_R   EQU  P3.3

DX_Y   EQU  P3.4

DX_G   EQU  P3.5


;-------------------------------------------

    ORG   0000H

    JMP   MAIN

    ORG   000BH         ;T0中断的入口地址

    MOV   TL0, #0B0H

    MOV   TH0, #3CH     ;50ms中断一次

    DJNZ  R2, EXIT_T0

    MOV   R2, #20       ;定时1s

    DEC   R3            ;倒计时

    DEC   R4            ;倒计时

EXIT_T0:

    RETI

;***************************************

MAIN:

    MOV   TMOD, #01H

    MOV   TH0, #3CH     ;定时50ms

    MOV   TL0, #0B0H

    MOV   R2, #20       ;定时1s

    SETB  TR0

    SETB  ET0

    SETB  EA

    MOV   SP, #60H

;***************************************

N_B:                    ;南北

    MOV   P3, #0        ;关闭全部红绿灯

    SETB  NB_G

    SETB  DX_R

    MOV   R3, #20       ;南北通行时间

    MOV   R4, #25

NB_W1:

    CJNE  R3, #0, NB_DISP

    MOV   R3, #5        ;南北黄灯时间

    SJMP  N_B_Y

NB_DISP:

    CALL  DISPLAY

    SJMP  NB_W1

;-----------------------

N_B_Y:

    CLR   NB_G

NB_W2:

    CJNE  R4, #0, NB_DISP2

    JMP   D_X

NB_DISP2:

    MOV   A, R2

    MOV   C, ACC.3

    MOV   NB_Y, C

    CALL  DISPLAY

    SJMP  NB_W2

;***************************************

D_X:

    MOV   P3, #0        ;关闭全部红绿灯

    SETB  DX_G

    SETB  NB_R

    MOV   R3, #25

    MOV   R4, #20       ;东西通行时间

DX_W1:

    CJNE  R4, #0, DX_DISP

    MOV   R4, #5        ;东西黄灯时间

    SJMP  D_X_Y

DX_DISP:

    CALL  DISPLAY

    SJMP  DX_W1

;-----------------------

D_X_Y:

    CLR   DX_G

DX_W2:

    CJNE  R3, #255, DX_DISP2

    JMP   N_B

DX_DISP2:

    MOV   A, R2

    MOV   C, ACC.3

    MOV   DX_Y, C

    CALL  DISPLAY

    SJMP  DX_W2

;***************************************

DISPLAY:

    MOV   DPTR, #TAB1


    MOV   A, R3

    MOV   B, #10

    DIV   AB

    MOVC  A, @A + DPTR

    MOV   P0, A

    MOV   P2, #1

    DJNZ  R7, $

    DJNZ  R7, $

    MOV   P2, #0

;----------------------

    MOV   A, B

    MOVC  A, @A + DPTR

    MOV   P0, A

    MOV   P2, #2

    DJNZ  R7, $

    DJNZ  R7, $

    MOV   P2, #0

;----------------------

    MOV   A, R4

    MOV   B, #10

    DIV   AB

    MOVC  A, @A + DPTR

    MOV   P0, A

    MOV   P2, #4

    DJNZ  R7, $

    DJNZ  R7, $

    MOV   P2, #0

;----------------------

    MOV   A, B

    MOVC  A, @A + DPTR

    MOV   P0, A

    MOV   P2, #8

    DJNZ  R7, $

    DJNZ  R7, $

    MOV   P2, #0

    RET


TAB1:

    DB  0C0H, 0F9H, 0A4H, 0B0H, 99H

    DB   92H,  82H, 0F8H,  80H, 90H

;***************************************


END

;-------------------------------------------


你可能感兴趣的:(交通灯)