微机原理实训报告交通指示灯.docx
- 文档编号:7094503
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:7
- 大小:61.10KB
微机原理实训报告交通指示灯.docx
《微机原理实训报告交通指示灯.docx》由会员分享,可在线阅读,更多相关《微机原理实训报告交通指示灯.docx(7页珍藏版)》请在冰豆网上搜索。
微机原理实训报告交通指示灯
鸡西大学
微机原理实训报告
院系:
XXX
专业:
XXXXX
姓名:
XXX
学号:
0000000000
指导教师:
XXX
摘要
在实际生活中,交通信号灯控制着交通的秩序安全。
本微机原理课程设计就是模拟实际十字路口交通灯的运行规则,用汇编语言来设计交通信号灯。
本次设计主要是实现对十字路口交通信号灯的控制而进行的编程,用8255A的A口控制东西方向的交通灯,用8255A的B口控制南北方向的交通灯。
当程序正常运行时,依次为东西方向的绿灯和南北方向的红灯亮,通过延时程序进行一段延时后,东西方向的绿灯灭后东西方向的黄灯闪3次,随后东西方向的红灯和南北方向的绿灯亮并进行延时,延时后,南北方向的黄灯闪3次,之后同理往复循环。
用8255A的C口控制紧急情况时东西、南北方向的红、黄、绿灯的亮灭,通过读C口输入的数据并进行测试查询,从而对紧急情况进行及时处理。
十字路口交通信号灯设计充分利用了可编程的并行接口芯片8255A各引脚的功能,选定工作方式0,通过改变控制字来实现交通信号灯的状态转换。
另外,通过调用延时子程序来实现交通信号灯某一状态的持续,调用循环子程序来实现对交通信号灯状态循环的控制,通过控制开关来实现紧急情况下各路口红灯全亮的功能。
综合各部分功能来实现较为完善的程序,运行程序来模拟十字路口交通信号灯。
关键词:
可编程的并行接口8255A,延时,循环,测试,
一、设计目的:
学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
通过这次设计实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。
二、设计要求:
利用8255可编程并行接口芯片,使实验台上的红黄绿发光二极管按照十字路口交通信号灯的规律交替发光。
三、设计思路:
本次微机原理设计的题目是交通信号灯,它是通过对8255芯片和LED发光二极管的连接设置来模拟交通信号灯的控制,使红黄绿三色灯按照正常交通规则亮灭;并应用中断控制器8259对交通灯在发生事故情况下进行强制控制。
十字路口交通信号灯的工作原理是在正常情况下以8086/8088的CPU与8255芯片相连接来实现的。
8255芯片包括四个口,即A口、B口、C口和控制口。
通过对其控制端口写入控制字,来设定8255的工作方式,在本设计中,使8255工作于方式0,将A口和B口都设置为输出,C口设置成输入。
其中A口控制南北方向的交通灯,B口控制东西方向的交通灯。
当程序正常运行时,依次为东西方向的绿灯和南北方向的红灯亮,通过延时程序进行一段延时后,东西方向的绿灯灭后东西方向的黄灯闪3次,随后东西方向的红灯和南北方向的绿灯亮,延时后,南北方向的黄灯闪3次,之后同理进行循环。
当CPU在执行正常程序时,按动KK1通过8259向CPU发出中断请求,CPU先要关中断,把其正在执行的程序压到已定义好的堆栈段当中,将中断程序MIR7的偏移地址和段地址取出放在源变址当中,然后在开中断,执行中断程序,强制东西方向和南北方向的红灯全亮。
利用8255的C口接收KK2的单次脉冲来进行还原。
中断程序执行完后关中断,让压在堆栈段中的程序出栈,CPU继续执行出栈的程序。
四、设计原理流程图
交通灯工作流程图中断服务程序流程图
五、源程序清单及注释
SSTACKSEGMENTSTACK;定义堆栈段
DW32DUP(?
)
SSTACKENDS
CODESEGMENT;定义代码段
ASSUMECS:
CODE,SS:
SSTACK
START:
MOVAL,89H
MOVDX,0646H
OUTDX,AL;将8255控制字设置为10001001
;A、B口输出C口输入工作方式0
PUSHDS
MOVAX,0000H
MOVAX,OFFSETMIR7;取中断入口地址
MOVSI,003CH;中断矢量地址
MOV[SI],AX;填IRQ7的偏移矢量
MOVAX,CS;段地址
MOVSI,003EH
MOV[SI],AX;填IRQ7的段地址矢
CLI
POPDS
;初始化8259
MOVAL,13H
OUT20H,AL;写ICW1(需要ICW4,单片使用,边沿触发)
MOVAL,08H
OUT21H,AL;写ICW2
MOVAL,01H
OUT21H,AL;写ICW4(从片,非自动EOI,8086/8088)
MOVAL,7FH
OUT21H,AL;写OCW1开放IR7
STI;将1赋给IF,开中断
RED:
MOVAL,22H
MOVDX,0640H
OUTDX,AL;南北方向红灯亮
MOVDX,0642H
OUTDX,AL;东西方向红灯亮
CALLDELAY;调用延时程序DELAY
NORMAL:
STI
MOVAL,88H
MOVDX,0642H
OUTDX,AL;东西方向绿灯亮
MOVAL,22H
MOVDX,0640H
OUTDX,AL;南北方向红灯亮
CALLDELAY;调用延时程序DELAY
MOVAL,00H
MOVDX,0642H
OUTDX,AL;东西方向绿灯灭
CALLDELAY1;调用延时程序DELAY1
MOVCX,0005H;将黄灯闪烁次数设为5
RECALL1:
MOVAL,44H
MOVDX,0642H
OUTDX,AL;东西方向黄灯亮
CALLDELAY2
XORAL,AL
OUTDX,AL;东西方向黄灯灭
CALLDELAY2;调用延时程序DELAY2
LOOPRECALL1
MOVAL,88H
MOVDX,0640H
OUTDX,AL;南北方向绿灯亮
MOVAL,22H
MOVDX,0642H
OUTDX,AL;东西方向红灯亮
CALLDELAY
CALLDELAY;两次调用延时程序DELAY,南北方向设为主干道
MOVAL,00H
MOVDX,0640H
OUTDX,AL;南北方向绿灯灭
CALLDELAY1;调用延时程序DELAY1
MOVCX,0005H;将黄灯闪烁次数设为5
RECALL2:
MOVAL,44H
MOVDX,0640H
OUTDX,AL;南北方向黄灯亮
CALLDELAY2;调用延时程序DELAY2
XORAL,AL
OUTDX,AL;南北方向黄灯灭
CALLDELAY2;调用延时程序DELAY2
LOOPRECALL2
JMPNORMAL;无条件跳转到NORMAL,实现循环
MIR7:
STI
PUSHDS
PUSHAX
MOVAL,22H
MOVDX,0640H
OUTDX,AL;事故发生时强制南北方向红灯亮
MOVDX,0642H
OUTDX,AL;事故发生时强制东西方向红灯亮
NEXT:
MOVDX,0644H
INAL,DX
TESTAL,01H
JZNEXT
MOVAL,20H;OCW2关中断
OUT20H,AL
POPAX
POPDX
STI;开中断
IRET;中断返回
DELAY:
PUSHCX;延时程序DELAY
MOVBX,008FH
T1:
MOVCX,1000H
T2:
NOP
NOP
LOOPT2
DECBX
CMPBX,0000H
JNZT1
POPCX
RET
DELAY1:
PUSHCX;延时程序DELAY1
MOVCX,0FFFFH
T3:
NOP
NOP
LOOPT3
POPCX
RET
DELAY2:
PUSHCX;延时程序DELAY2
MOVCX,0F900H
T4:
PUSHAX
POPAX
LOOPT4
POPCX
RET
CODEENDS
ENDSTAR
6、实验总结:
短短一周的微机原理课程设计已经过去了。
虽然时间短暂,但我学到了很多东西使我更加深刻的理解了我所学的知识,并且能在实际中应用他们,也使我更深的理解了什么是一分耕耘,一分收获!
在课程设计以前,可以说我对微机原理似懂非懂,有的时候拿来一个完整的程序都不能完全理解。
而现在,我已经完全掌握了以前老师所讲的芯片的主要功能和使用方法。
并能用自己的思路设计出想要的程序,这么大的反差就是源于此次课程设计。
可以这么说,此次课程设计使我获益匪浅!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 报告 交通 指示灯