用汇编实现交通信号灯管理器的设计

来源:百度知道 编辑:UC知道 时间:2024/05/16 19:24:40
(1)用7段数码管显示剩余时间
(2)允许设置各方向的通行时间
(3)配备完整的红绿灯控制
(4)具备夜间停用方式(只有黄灯在闪烁)
急需完整的程序,用于微机原理与接口技术课程设计

ORG 0000H
LJMP STAR1
A_BIT EQU 20H ;数码管个位数存放内存位置
B_BIT EQU 21H ;数码管十位数存放内存位置
TEMP EQU 22H ;计数器数值存放内存位置

STAR1: MOV TEMP,#20 ;初始化计数器,从60开始
CLR P1.0 ;南北方向红灯亮
CLR P1.5 ;东西方向绿灯亮
STLOP1: ACALL DISPLAY1 ;调用显示子程序
DEC TEMP ;对计数器减1
MOV A,TEMP ;
CJNE A,#0,STLOP1 ;判断计数器是否满0?
SETB P1.0 ;南北方向红灯灭
SETB P1.5 ;东西方向绿灯
ACALL SHAN ;调用黄灯闪烁程
STAR2: MOV TEMP,#20 ;重新开始开始60秒倒数
CLR P1.2 ;南北方向绿灯亮
CLR P1.3 ;东西方向红灯亮
STLOP2: ACALL DISPLAY2 ;调用数码管显示子程序
DEC TEMP ;计数器减一
MOV A,TEMP ;
CJNE A,#0,STLOP2 ;判断计数器是否为0?
SETB P1.2
SETB P1.3
ACALL SHAN ;调用黄灯闪烁子程?
SJMP STAR1 ;

DISPLAY1:MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,B ;个位在B
MOV A_BIT,A ;十位在A

MOV DPTR,#NUMTAB ;指定查表启始地址
MOV R0,#12 ;
DPL1: MOV R1,#250 ;
DPLOP1: MOV A,A_BIT ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
MOV P0,A ;送出个位的7段代码
CLR P2.3 ;开个位显