当前位置:编程学习 > 汇编语言 >>

用汇编语言实现交通灯管理器的设计

补充:要求:用7段数码管显示剩余时间 允许设计个方向的通行时间 配备完整的红绿灯控制 具备夜间停用方式 谢谢啦
其他:一、设计要求利用PC机键盘和屏幕实现交通灯模拟器。二、设计内容与要求基本汇编做到这个不容易,要不你用语言编一个吧,然后反编译成汇编。 设计要求利用PC机键盘和屏幕实现交通灯模拟器。二、设计内容与要求基本汇编做到这个不容易,要不你用语言编一个吧,然后反编译成汇编。   不懂的+我 Q   25352800048 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 ;开个位显示 
ACALL D1MS ;显示162微秒 
SETB P2.3 ;关闭个位显示,防止鬼影 
MOV A,B_BIT ;取十位数 
MOVC A,@A+DPTR ;查十位数的7段代码 
MOV P0,A ;送出十位的7段代码 
CLR P2.2 ;开十位显? 
CLR P2.0 
CLR P2.1 

ACALL D1MS ;显示162微秒 
SETB P2.2 ;关闭十位显示,防止鬼影 
DJNZ R1,DPLOP1 ;循环执行250次 
DJNZ R0,DPL1 ;循环执行250X4=1000次 
RET 
DISPLAY2:MOV A,TEMP ;将TEMP中的十六进制数转换成10进制 
MOV B,#10 ;10进制/10=10进制 
DIV AB ; 
MOV A_BIT,B ;个位在B 
MOV B_BIT,A ;十位在A 

MOV DPTR,#NUMTAB ;指定查表启始地址 
MOV R0,#12 ; 
DPL2: MOV R1,#250 ; 
DPLOP2: MOV A,A_BIT ;取个位数 
MOVC A,@A+DPTR ;查个位数的7段代码 
MOV P0,A ;送出个位的7段代码 
CLR P2.0 ;开个位显示 
ACALL D1MS ;显示162微秒 
SETB P2.0 ;关闭个位显示,防止鬼影 
MOV A,B_BIT ;取十位数 
MOVC A,@A+DPTR ;查十位数的7段代码 
MOV P0,A ;送出十位的7段代码 
CLR P2.1 ;开十位显 
CLR P2.2 
CLR P2.3 

ACALL D1MS ;显示162微秒 
SETB P2.1 ;关闭十位显示,防止鬼影 
DJNZ R1,DPLOP2 ;循环执行250次 
DJNZ R0,DPL2 ;循环执行250X4=1000次 
RET 
SHAN: MOV R3,#5 ; 
ROUND: CLR P1.1 ; 
CLR P1.4 ; 
ACALL DELAY ;黄灯闪烁五次 
SETB P1.1 ;每次间隔一秒 
SETB P1.4 ; 
ACALL DELAY 
DJNZ R3,ROUND ; 
RET ; 

D1MS: MOV R7,#80 ;2+2X80=162微秒,延时按12MHZ计算 
DJNZ R7,$ ; 
RET ; 

DELAY: MOV R6,#10 ; 
YL3: MOV R4,#100 ; 
XL2: MOV R5,#71 ; 
DL1: NOP ;一秒延时子程序 
NOP 
NOP 
NOP 
NOP 
DJNZ R5,DL1 ; 
DJNZ R4,XL2 ; 
DJNZ R6,YL3 ; 
RET ; 
;共阴数码管显示代码 
NUMTAB: DB 03FH ;0 
DB 006H ;1 
DB 05BH ;2 
DB 04FH ;3 
DB 066H ;4 
DB 06DH ;5 
DB 07DH ;6 
DB 007H ;7 
DB 07FH ;8 
DB 06FH ;9 
END

上一个:汇编语言翻译,求B机子程序: BST: MOV TMOD,#20H MOV TH1,#0E8H MOV TL1
下一个:单片机汇编语言解析.下面的程序不怎么懂,希望高手帮忙解析一下.谢谢.

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,