汽车信号灯控制系统的设计讲解

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

学号:
课程设计
题目汽车信号灯控制系统的设计
学院自动化学院
专业电气工程及其自动化
班级
姓名
指导教师
2012 年 1 月9 日
课程设计任务书
学生姓名:专业班级:
指导教师:工作单位:自动化学院
题目: 汽车信号灯控制系统的设计
初始条件:
1.汽车上有紧急开关、停靠开关和转弯控制杆。

转弯控制杆有三个位置:中间位置时,汽车不转弯;向上时,汽车左转;向下时,汽车右转。

2.用8086CPU、8255A并行通信接口、外围电路芯片及元器件设计并制作出汽车信号灯微机控制系统,所需控制的信号灯有仪表板左/右转弯灯、左右头灯和左右尾灯共六类灯,完成相应的程序编写。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1. 汽车转弯时,要求左/右尾灯、左/右头灯和仪表板上的2个指标灯相应地发出闪烁信号,闪烁频率为1Hz。

2. 当紧急开关或停靠开关合上时,所有6个信号灯都闪烁,闪烁频率为30HZ。

3. 汽车刹车时,2个尾灯发出不闪烁的信号;汽车刹车时正在转弯,则相应的转弯闪烁信号不受影响。

4. 合上紧急开关并刹车:尾灯亮、仪表板灯、头灯闪烁,闪烁频率为30HZ。

5. 转弯刹车并合上紧急开关:左/右尾灯亮、其余灯闪烁,闪烁频率为30HZ。

6. 撰写课程设计说明书。

内容包括:摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:
12月26 日----- 12月28 日查阅资料及方案设计
12月29日----- 1月 2 日编程
1月3日----- 1月7 日调试程序
1月8日----- 1月9 日撰写课程设计报告
指导教师签名:年月日
系主任(或责任教师)签名:年月日
目录
摘要 (1)
1. 前言
1.1设计背景 (2)
1.2系统设计意义 ................................................................................................. ..2
1.3主要完成的任务 ............................................................................................ (2)
2. 系统分析与说明.................................................................................................... .3
2.1问题描述与方案分析 ...................................................................................... .3
2.1.1 问题描述................................................................................................... .3
2.1.2 问题的解决方案与分析........................................................................... .3
2.2系统主要功能 .................................................................................................. .4
3. 详细设计方案 ......................................................................................................... .6 3.1硬件设计 ............................................................................................................ .6
3.1.1 芯片的选择 (6)
3.1.2 系统电路图................................................................................................. .6 3.2软件设计 ............................................................................................................ .7
3.2.1 程序流程图................................................................................................. .7
3.2.2 程序源代码与注释..................................................................................... .9
4. 系统调试与实现 ................................................................................................... .13
5. 总结........................................................................................................................ .14 参考文献..................................................................................................................... .16 附录:设计源程序 .................................................................................................... .17 本科生课程设计成绩评定表
摘要
本课程设计以本学期所学的《微机原理及接口技术》这门课程为基础,以我们平时做微机原理实验所积累的经验,设计、实现一个可以达到任务要求的汽车信号灯模拟控制系统,并在Proteus软件中成功实现了仿真。

该汽车信号灯模拟控制系统通过主要芯片8086CPU来控制,采用并行通讯芯片8255A作为接口,用定时/计数芯片8253来产生所需要的频率信号,用五个电平开关来模拟控制信号灯的五种基本状态及其组合状态,六个发光二极管来模拟汽车的六个信号灯,在emu8086中调试了程序并在Proteus软件中绘制电路模拟仿真成功。

关键词:汽车信号灯8255A 8086 端口8253
1 前言
1.1 设计背景
汽车信号灯的作用是大家所熟知的,汽车通过显示不同的信号灯来告诉前后左右的行车者本汽车正在进行的操作。

本文主要是介绍汽车信号灯的控制,其中汽车信号灯包括了左前灯、右前灯、左后灯、右后灯、仪表盘上的左右转弯信号灯。

其主要内容是使汽车在行驶过程中通过信号灯来传达汽车诸如转弯、刹车、闭合紧急开关、停靠等一系列操作信号。

信号灯控制的实现主要是通过电路与汇编程序的结合来完成,电路部分的设计是通过PROTEUS来完成的,其中灯的模拟采用了发光二极管,发光二极管有熄灭、点亮和闪烁三种信号,其中闪烁信号的产生分别运用了定时/计数接口芯片8253来实现,而汽车一系列的操作采用了相应的开关来模拟,所有的电路元件都是用PROTEUS软件上的虚拟元件来代替,方便了电路图的设计,而且大大提高了调试与仿真的效率。

电路图中的主芯片采用了8086,分别控制两个模块,汇编程序的设计与调试都在emu8086上完成,最后将PROTEUS上的电路图与程序生成的执行文件实现联调,完成系统的调试和仿真。

1.2 系统设计意义
用在课本中所学的知识和现代计算机技术的结合来模拟实现汽车信号灯控制系统,把所学的理论的知识用到了现实实践中去,加强了对理论知识的理解和应用,同时也提高了自己的创新和探索能力,激发了学习兴趣,也充分体现了计算机技术在汽车行业的应用。

同时,也让我深切体会到了所学知识与现实生活的密切联系,更能学会在平时的生活中应用自己所学的知识。

1.3 主要完成的任务
1. 任务要求分析
2. 设计硬件电路
3. 编写汇编程序
4. 在proteus环境下进行仿真与调试
5. 总结体会
2 系统分析与设计
2.1 问题描述与方案分析
2.1.1 问题描述
根据任务要求,可以发现汽车行驶时一共有五种基本状况:
1.汽车左转
2.汽车右转
3.汽车出现紧急状况
4.汽车刹车
5.汽车停靠
考虑到实际行驶过程中不止会出现其中一种情况,因此根据以上五种基本情况,可以有以下十种状况:
输入状态输出状态
左转左头灯、左尾灯、仪表左灯闪烁(1Hz)
右转右头灯、右尾灯、仪表右灯闪烁(1Hz)
紧急左右头灯、左右尾灯、仪表左右灯均同时闪烁、
刹车左右尾灯亮
左转+刹车左头灯、左尾灯、仪表左灯闪烁(1Hz),右尾灯亮
右转+刹车右头灯、右尾灯、仪表右灯闪烁(1Hz),左尾灯亮
刹车+紧急左右头灯、仪表左右灯闪烁(30Hz),左右尾灯亮
左转+刹车+紧急左右头灯、仪表左右灯、左尾灯闪烁,右尾灯亮、
右转+刹车+紧急左右头灯、仪表左右灯、左尾灯闪烁,左尾灯亮
停靠左右头灯、左右尾灯闪烁(30Hz)
2.1.2 问题的解决方案分析
通过对任务描述的深入分析,得出解决方案如下:
(1)通过6个发光二级管模拟两个头灯、两个尾灯和仪表盘上的两个指示灯。

(2)选择5个开关产生五种基本状态,即左转、右转、紧急,刹车,停靠,其他五种状态用这五个开关的不同组合可实现分别控制,使发光二极管信号灯相应亮、灭或以设定频率闪烁。

(3)通过8253定时器和软件编程控制灯的闪烁频率。

在对任务需求进行详细分析以后,我决定主要控制芯片采用8086CPU,接口电路部分采用8255A,闪烁频率由8253定时器产生,再加以辅助电路构成汽车信号灯系统的硬件电路。

2.2 系统的主要功能
(1) 当用户置开关状态为01H时,也即左转,表左转开关闭合,则左头灯、左尾
灯、仪表左灯以1Hz闪烁。

(2) 当用户置开关状态为02H时,也即右转,表右转开关闭合,则右头灯、右尾
灯、仪表右灯以1Hz闪烁。

(3) 当用户置开关状态为04H时,表紧急开关闭合,也即出现紧急状态时,则左
右头灯、左右尾灯、仪表左右灯均同时以30Hz闪烁。

(4) 当用户置开关状态为08H时, 表踩刹车(合上刹车开关),则左右尾灯亮。

(5) 当用户置开关状态为10H时,表示汽车此时在停靠,则左右头灯、左右尾灯
以30Hz闪烁。

(6) 当用户置开关状态为09H时,表示汽车左转刹车,则左头灯、左尾灯、仪表
左灯以1Hz闪烁,右尾灯亮。

(7) 当用户置开关状态为0AH时,表示汽车右转刹车,则右头灯、右尾灯、仪
表右灯以1Hz闪烁,左尾灯亮。

(8) 当用户置开关状态为0CH时,表示汽车此时处于紧急刹车状态,则左右头灯、
仪表左右灯以30Hz闪烁,左右尾灯亮。

(9) 当用户置开关状态为0DH时,表示汽车此时处于左转紧急刹车状态,则左
右头灯、仪表左右灯、左尾灯以30Hz闪烁,右尾灯亮,。

(10) 当用户置开关状态为0EH时,表示汽车此时处于右转紧急刹车状态,则
左右头灯、仪表左右灯、左尾灯以30Hz闪烁,左尾灯亮。

设置模拟系统的6个发光二极管的对应情况为:
L0:右尾灯L1:左尾灯L2:右头灯L3:左头灯L4:仪表右灯L5:仪表左灯
通过5个开关(K0、K1、K2、K3、K4的组合)产生的32种情况中的10种来作为输入选择,影响6个指示灯的输出,对应关系如下表:
表2-1 开关状态与灯状态对应表
3 详细设计方案
3.1 硬件设计
3.1.1 芯片选择
根据任务所要实现的功能,结合课本中所学的知识进行分析,系统要用到8086微处理器芯片和可编程的并行接口芯片8255A以及定时/计数芯片8253。

8086是Intel系列的16位微处理器,它有16根数据线和20根地址线,本系统采用它作为主处理器。

它有最大工作模式和最小工作模式,本系统采用一片8086,是其最小工作模式。

8255A是可编程的I/O口扩展芯片。

对8255A输入不同的指令可改变I/O 接口的不同工作方式。

8255A内部有4个寄存器:分别为寄存器A、B、C和控制寄存器。

A、B、C寄存器的数据就是从引脚PA7~PA0、PB7~PB0、PC7~PC0上输入或输出的。

而控制寄存器的数据则可以通过方式字来控制PA、PB、PC的工作方式。

CS、A0、A1、RD和WR引脚对4个寄存器进行操作:(1)CS 片选引脚,低电平时选通8255A;(2)A1、A0为地址选通,与8086的地址线相连接,分别对四个寄存器进行编号;(3)RD和WR为读、写信号:RD为低、WR为高时为读方式,RD为高、WR为低时为写方式。

(4)D0~D7为数据口,向控制寄存器写入不同的数据可以使8255工作在三种不同的方式下。

8253是可编程间隔定时器,8253内部有3个独立的16位计数通道,通过对它进行编程,每个计数通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数,最高频率可达到2MHz,通过对它编程可以产生不同频率的方波信号。

3.1.2 系统电路图
图3-1 系统电路图
3.1.3 电路图说明分析
1.8255A的片选CS端接74LS138地址译码电路地址为0F0H的接口,8253的片选CS端接74LS138地址译码电路地址为0E8H的接口,可以达到对芯片选通的控制。

2.8255A的7个DATA引脚与8086数据总线的低八位相连接,8086的RD和WR分别于8255A和8253的RD和WR相连,将8086的地址线A1,A2与8255A 的A0,A1连接起来,同时将8086的地址线A2,A3与8253的A0,A1连接起来。

3.用8255A的PA端口的六个PA0~PA5用于输出,连接六个发光二极管,控制灯的效果,PB端口用于输入,用其低五位PB0~PB4做为输入开关的控制,选择不同的行车状态及其组合状态,用8255的PC的两个端口PC0和PC1作为8253输出的入口,接受8253输出的1HZ和30HZ频率的方波,用来控制灯光的闪烁频率。

4.二极管用来模拟汽车的不同类别的信号灯,分别为L0(右仪表灯)、L1(左仪表灯)、L2(右头灯)、L3(左头灯)L4(右尾灯)、L5(左尾灯)。

3.2 软件设计
3.2.1程序流程图:
① ②
开始
8253通道0和通道1的初始化
8255A 初始化,A 口输出,B 、C 输入
AL=00H
AL=01H
AL=02H AL=08H AL=04H 显示全灭的状态,即无情况
显示左转状态的灯光闪烁情况
显示右转状态的灯光闪烁情况
显示紧急状态的的灯光闪烁情况
显示刹车状态的灯光闪烁情况
读取B 口状态


图3-2 程序流程图
3.2.2 子程序的设计
8253的初始化,分别产生1Hz 和30Hz 的频率:
MOV DX,IO8253CON ; 产生30hz 频率
MOV AL,00110101B ;8253,通道0初始化,16位读写,方式二,
BCD 计数
AL=10H AL=0EH AL=0DH
AL=09H
AL=0AH
AL=0CH 显示左转刹车的灯光闪烁情况
显示右转刹车的灯光闪烁情况
显示紧急刹车的灯光闪烁情况
显示左转刹车紧急的灯光闪烁情况
显示右转刹车紧急灯光闪烁情况
显示停靠状态的灯光闪烁情况
MOV DX,IO8253_0
MOV AL,00H
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,IO8253CON ;产生1Hz频率
MOV AL,01110111B ;8253,通道1初始化,16位读写,
BCD计数
OUT DX,AL
MOV DX,IO8253_1
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL
汽车行驶状态的读取与辨别:
左转情况
MOV DX,IO8255B ;读B口开关状态
IN AL,DX
S0: CMP AL,0
JNZ S1
MOV DX,IO8255A
MOV AL,11000000B
OUT DX,AL
S1: CMP AL,01H
JNZ S2
MOV DX,IO8255C
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
JNZ LEFT
MOV AL,11000000B
OUT DX,AL
JMP S
LEFT: MOV AL,11010101B ;B输出六盏灯状态:闪,灭,
闪,灭,闪,灭(1Hz)OUT DX,AL
JMP S
紧急情况:
S3: CMP AL, 04H
JNZ S4
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRY
MOV AL,11111111B
OUT DX,AL
JMP S
HURRY: MOV AL,11000000B ;六盏灯状态:闪,闪,闪,
闪,闪,闪(30Hz)OUT DX,AL
JMP S
延时程序:
DELAY PROC NEAR
PUSH CX
MOV CX,000FH
S12: LOOP S12
POP CX
RET
DELAY ENDP
DELAY0 PROC NEAR
PUSH CX
PUSH AX
MOV CX,0400H S13: CALL DELAY
LOOP S13
POP AX
POP CX
RET
DELAY0 ENDP
4 系统调试与实现
在电脑上安装proteus软件,将设计好的硬件电路绘制与软件中,然后导入调试好的汇编程序,通过不断地调试和在proteus下仿真验证,最终利用5个开关组合成多种不同的组合状态来模拟汽车信号灯多种不同的状态,初步实现了预期任务要求对应的灯亮、灭、闪的不同情况。

虽然实现了原本预期的各种控制状态,不过此系统还有待优化、改进,比如实验中的通过用开关进行信号灯的选择控制有些繁琐,而且不利于信号灯状态的选择,可以设计成一个矩阵键盘的形式,而且此系统还可以更加完善,比如添加一个显示装置可以用来显示不同的行车状态,则可以更加清晰明了。

5 总结体会
本次课程设计按照任务要求是要设计一个汽车信号灯控制系统,主要通过8255A的A口和B口模拟汽车信号灯的亮灭闪烁情况,而闪烁频率则使用8253定时芯片来产生。

通过本次的课程设计,我对这学期所学的《微机接口原理与接口技术》这门课程有了更为深刻的理解,平时所学的都是课本上的理论知识,对于知识的应用没有很真切的体会,也不是很明白所学的知识到底该如何应用到实际中去,但是这次课程设计要求自己使用芯片去完成电路的设计从而实现一定的功能,不仅要求对理论知识有详尽透彻的理解,也需要有一定的创新和实践能力。

按照任务的要求,首先要设计出硬件电路的连接,因为电路主要采用了8086CPU、8255A和8253,所以在设计之前要对这些芯片的引脚及功能、工作方式、内部结构和控制字有足够的了解,再结合课本上所学的知识,学会正确地使用这些芯片达到任务要求。

硬件电路设计之后便是软件的设计,第一次自己面对任务要求编写这么复杂的程序,刚开始还是感觉有点混乱没有思路,这时候就更加深切的体会到了程序流程图的重要性。

因为要编出汇编程序实现目的,首先必须要有清晰的思路,因此编程之前绘制出程序流程图是很重要的,可以为之后的编程减小不少难度,按照流程图的思路便可以一步一步地编写出程序。

但是,不能期望程序一步到位,总要经过不断的调试更改才能达到最终的目的,在这个过程中,一定要有足够的耐心,也要开动脑筋思考出现问题的原因才能很好的解决问题。

这次课程设计的一大困难是对模拟系统的仿真。

系统的仿真使用了Proteus 软件,因为之前并没有用过这个软件,固然是一头雾水,于是只能是自己结合之前使用其他仿真软件的经验慢慢摸索着使用,不懂得地方就充分利用网络资源,上网查找软件的使用教程,并且和同学们相互交流经验,以求更快更高效的解决问题。

终于在不懈的努力和学习后成功完成了模拟系统的仿真,喜悦之情溢于言表。

总之,通过两周的微机原理与接口技术的课程设计,感觉自己真的受益良多。

完成这次课程设计的任务之后,我对半年来自己所学的这门课程有了更加全面和深刻的认识,之前对知识的学习仅仅停留在理论的表面,理解的并没有很深刻,可是当自己面对着一个全新的问题需要通过自己所学的理论知识去实践时,
对知识的理解便会提升到另外一个层面了。

不过在这个过程中,我也发现了自身的很多不足,也认识到了理论和实践的差异之大,所以如何将理论很好地应用于实践也是一门很大的学问,这需要多方面的能力,特别是动手实践能力和对新知识新软件的学习和接受能力,对一个人的耐心和毅力也是一种考验和磨练。

学无止境,我们在学校所学的知识仅仅是很小的一部分,而且理论居多,而课程设计则是一个很好的锻炼自己实践能力和分析、解决实际问题能力的机会。

在课程设计中,需要查阅不少资料,也需要和同学们进行交流合作,对一个人各方面的能力都有提升。

因此,在以后的学习过程中,我会更加努力刻苦,在学习好理论知识的同时,也要多接触一些仿真软件等,也是对知识理解的一种的提升。

参考文献
[1] 戴梅萼. 《微型计算机技术及应用》[M]. 北京:清华大学出版社.2008
[2] 王成耀. 《汇编语言程序设计(第2版)》[M]. 北京:高等教育出版社.2006
[3] 曾树洪. 《TPC-H微机接口实验系统学生指导书》[M]. 惠州学院计算机科学系.2009
[4] 李继灿. 《微型计算机及接口实验指导书》[M]. 北京:清华大学出版社.2005
[5] 姚君遗. 《汇编语言程序设计》[M].南京:南京大学出版社.
5 附录:程序设计源代码
系统主模块汇编程序:
DATA SEGMENT
IO8255A EQU 0F0H ;8255的A口地址
IO8255B EQU 0F2H ;8255的B口地址
IO8255C EQU 0F4H ;8255的B口地址
IO8255CON EQU 0F6H ;8255的控制寄存器地址
IO8253_0 EQU 0E8H ;8253的0通道
IO8253_1 EQU 0EAH ;8253的0通道
IO8253_2 EQU 0ECH ;8253的0通道
IO8253CON EQU 0EEH ;8253的控制寄存器DATA ENDS
STACK1 SEGMENT
STA DW 50 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK1
MAIN PROC FAR
START: PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV DX,IO8253CON ;产生30hz频率
MOV AL,00110111B ;8253,通道0初始化, 16位读写,
方式二,BCD计数
OUT DX,AL
MOV DX,IO8253_0
MOV AL,00H
OUT DX,AL
MOV AL,50H
OUT DX,AL
MOV DX,IO8253CON
MOV AL,01110111B ;8253,通道1初始化,16位
读写,方式三,BCD计数
OUT DX,AL
MOV DX,IO8253_1
MOV AL,13H
OUT DX,AL
OUT DX,AL
MOV DX,IO8255CON
MOV AL,8BH ;8255控制字,8255初始化,A口
输出,B口输入,C低输入,方式0 OUT DX,AL
S: MOV DX,IO8255B ;读B口开关状态
IN AL,DX
MOV CX,0020H
S0: CMP AL,0
JNZ S1
MOV DX,IO8255A
MOV AL,11000000B
OUT DX,AL
S1: CMP AL,01H
JNZ S2
MOV DX,IO8255C
IN AL,DX
TEST AL,01H ;检测c口状态MOV DX,IO8255A
JNZ LEFT
MOV AL,11000000B
OUT DX,AL
JMP S
LEFT: MOV AL,11010101B ;B输出六盏灯状态:闪,灭,
闪,灭,闪,灭
OUT DX,AL
JMP S
S2: CMP AL,02H
JNZ S3
MOV DX,IO8255C
IN AL,DX
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
JNZ RIGHT
MOV AL,11000000B
OUT DX,AL
JMP S
RIGHT: MOV AL,11101010B ;六盏灯状态:灭,闪,
灭,闪,灭,闪
JMP S
S3: CMP AL, 04H
JNZ S4
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRY
MOV AL,11111111B
OUT DX,AL
JMP S
HURRY: MOV AL,11000000B ;六盏灯状态:闪,闪,
闪,闪,闪,闪
OUT DX,AL
JMP S
S4: CMP AL,08H
JNZ S5
MOV DX,IO8255A
BREAK: MOV AL,11110000B ;六盏灯状态:灭,灭,
灭,灭,亮,亮
OUT DX,AL
CALL DELAY0
JMP S
S5: CMP AL,09H
JNZ S6
MOV DX,IO8255C
IN AL,DX
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
JNZ LEFTBREAK
MOV AL,11100000B
OUT DX,AL
JMP S
LEFTBREAK: MOV AL,11110101B ; 六盏灯状态:闪,灭,
闪,灭,闪,亮
OUT DX,AL
JMP S
S6: CMP AL,0AH
JNZ S
MOV DX,IO8255C
TEST AL,01H ;检测c口状态
MOV DX,IO8255A
MOV AL,11010000B
OUT DX,AL
JMP S
RIGHTBREAK: MOV AL,11111010B ;六盏灯状态:灭,闪,
灭,闪,亮,闪
OUT DX,AL
JMP S
S7: CMP AL,0CH
JNZ S8
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRYBREAK
MOV AL,11110000B
OUT DX,AL
JMP S
HURRYBREAK: MOV AL,11111111B ;六盏灯状态:闪,闪,
闪,闪,亮,亮
OUT DX,AL
JMP S
S8: CMP AL,0DH
JNZ S9
MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRYLEFTBREAK
MOV AL,11100000B
OUT DX,AL
JMP S
HURRYLEFTBREAK: MOV AL,11111111B ;六盏灯状态:闪,闪,
闪,闪,闪,亮
OUT DX,AL
JMP S
S9: CMP AL,0EH
JNZ S10
MOV DX,IO8255C
TEST AL,02H ;检测c口状态
MOV DX,IO8255A
JNZ HURRYRIGHTBREAK
MOV AL,11010000B
OUT DX,AL
JMP S
HURRYRIGHTBREAK: MOV AL,11111111B ;六盏灯状态:闪,闪,
闪,闪,亮,闪
OUT DX,AL
JMP S
S10: CMP AL,10H
JNZ S11
STOP: MOV DX,IO8255C
IN AL,DX
TEST AL,02H ;检测c口状态
JNZ QQ
MOV DX,IO8255A
MOV AL,11111111B ;六盏灯状态:灭,灭,闪,
闪,闪,闪,,以30HZ频率闪烁 OUT DX,AL
JMP S
QQ: MOV DX,IO8255A
MOV AL,11000000B
OUT DX,AL
JMP S
S11: JMP S
RET
MAIN ENDP
DELAY PROC NEAR ;延时程序
PUSH CX
MOV CX,000FH
S12: LOOP S12
POP CX
RET
DELAY ENDP
DELAY0 PROC NEAR
PUSH CX
PUSH AX
MOV CX,0400H
S13: CALL DELAY
LOOP S13
POP AX
POP CX
RET
DELAY0 ENDP
CODE ENDS
END START
指导教师签字:
年月日。

相关文档
最新文档