您的位置:首页 > 编程语言

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

2016-01-25 12:02 393 查看
一个51单片机汇编语言的程序,要求就是红灯25秒,绿灯20秒,黄灯闪烁5秒。

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

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



图片链接: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
;-------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: