交通灯控制模拟程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通灯控制模拟程序设计

data segment title1 db 'Traffic-System' deng db '# # #' sing1 db

'South-North' sing2 db 'East - West' sing3 db 'Red

time(scend):' time db 'Time:' sing4 db 'Yellow

time(scend):' buff db 4 ;键盘缓冲区 buff1 db 3

dup(?) ;工作计数区 buff2 db 3 dup(?) ; 数据保存区

yellow db ? ; 黄灯时间 mode db 'Mode:auto(Y/N)?:'

ans db ?

ting3 db 'Red time(scend):030'

ting4 db 'Yellow time(scend):5'

・************************ J

data ends code segment

assume cs:code,ds:data,es:data start:mov ax,data

mov ds,ax mov es,ax call title2 ; 初始化标题 q0: call mode1 ; 模式选择 自动或手动 call scanf call atuo ;

默认设置参数启动 lea si,ans

cmp byte ptr[si],'y'

jz q1

cmp byte ptr[si],'n'

jnz q0

call ask1 ;设置红灯时间

call scanf0 call ask2 ;设置黄灯时间

・*************

定义数据段 ***********************************************

主程序段 **********************************************

call scanf1

q1: call init1 ; 初始化灯光

call init2

lea si,buff; 复制数据 buff-buff1 ,保存显示时间

inc si

inc si

lea di,buff1

cld

mov cx,3

REP movsb

lea si,buff1; 复制数据 buff1-buff2 ,保存显示时间

lea di,buff2

cld

mov cx,3

REP movsb

cld

a3: call nr

call write0

子程序设计 ************************************** 状态一 :南北方向红灯,东西方向绿灯 ***************************** start1:lea si,buff2 ; 复制数据 buff2-buff1 ,保存显示时间 di,buff1

・******************** ・******* lea

a0: a1: a2: mov REP cx,3

movsb

lea di,buff1

cmp byte ptr[di+2],30h ; 数据处理部分

ja a1

add byte ptr[di+2],10

sub byte ptr[di+1],1

sub byte ptr[di+2],1

cmp byte ptr[di+1],30h

jnc a2

add byte ptr[di+1],10

sub byte ptr[di],1

cmp byte ptr[di],30h

jnc a3

jmp start2 ; 换灯

lea si,yellow

mov al,[si]

cmp byte ptr[di+2],al ;最后五秒绿灯变黄灯

jna a4

jmp a8

a4: cmp byte ptr[di+1],30h jna a5 jmp a8

a5: cmp byte ptr[di],30h ja a8 call ey jmp a9

a8: call eg

a9: call delay ; 延时一秒左右

jmp a0

******** 状态二 :南北方向绿灯,东西方向红灯

; 复制数据 buff2-buff1 ,保存显示时间 lea di,buff1 cld

mov cx,3 REP movsb lea di,buff1

b0: cmp byte ptr[di+2],30h

;数据处理部分 ja b1 add byte ptr[di+2],10 sub byte ptr[di+1],1

b1: sub byte ptr[di+2],1 cmp byte ptr[di+1],30h jnc b2 add byte ptr[di+1],10 sub byte ptr[di],1

b2: cmp byte ptr[di],30h jnc b3 jmp start1 ; 换灯

b3:

call er call write0

**************************** start2:lea si,buff2

lea si,yellow

mov al,[si]

cmp byte ptr[di+2],al ; 最后五秒绿灯变黄灯

jna b4

jmp b8

b4: cmp byte ptr[di+1],30h

jna b5

jmp b8

b5: cmp byte ptr[di],30h

ja b8

call ny

jmp b9

b8: call ng

b9: call delay ;延时一秒左右

jmp b0

・****** 模式设置***************

mode1 proc

mov cx,16 ;设置时间lea bp,mode mov dh,5

mov dl,2 mov al,1 mov bl,07h mov ah,13h int 10h

ret mode1 endp title2 proc

・**********标题***************

mov cx,14 ; 设置时间lea bp,title1 mov dh,1

mov dl,25

mov al,1 mov bl,07h mov ah,13h int 10h ret title2

endp

相关文档
最新文档