2022年模拟交通灯控制系统 .pdf
北京理工大学珠海学院计算机学院课程设计I 课程设计成绩评定表姓名成绩评定权重总分总成绩(五分制)平时成绩20 报告成绩50 答辩成绩30 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计II 模拟交通灯控制系统摘要人口的快速增长和车辆的增加, 使得城市交通拥挤成为不可避免的问题,为了缓解这一现象, 我们设计了模拟交通灯控制系统,通过此系统可以使车辆按一定秩序行驶,降低交通压力。此系统是由8088 为核心部件组建,利用8253A定时/ 计数器芯片的定时功能,向8259A中断控制器芯片发出定时中断请求,驱动8255A可编程并行接口芯片改变路口的LED灯的亮灭和显示倒数的秒数。与此同时,该系统设计了应急中断处理,通过外部中断使各个路口皆为红灯,以便应用于急救车、紧急事件或特别情况的应急处理。关键字: 交通灯 定时器 中断名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计III 目录摘要. . II 1 交通灯路况分析 . 1 1.1 交通灯运作的基本情况. 1 1.2 交通灯状态变化分析 . . 2 1.3 交通灯持续时间分析 . . 2 2 项目概述. 3 2.1 设计内容 . 3 2.2 设计要求 . 3 3 系统设计. 4 3.1 总体设计 . 4 3.2 功能模块 . 6 4 硬件设计. 11 4.1 硬件介绍 . 11 4.2 硬件功能分析 . 15 4.3 硬件模块连接 . 17 5 系统实现. 21 5.1 开发环境 . 21 5.2 运行步骤 . 21 5.3 运行结果分析 . 22 参考文献 . . 23 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计IV 心得体会 . . 24 教师评语 . . 25 附录. . 26 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计1 1 交通灯路况分析1.1 交通灯运作的基本情况一十字路口, 假设 1、3 为东西方向, 2、4 为南北方向, 1、3 路口的绿灯亮,2、4 路口的红灯亮, 1、3 路口方向通车;延时一段时间后, 1、3 路口的绿灯熄灭,而 1、3 路口的黄灯开始闪烁,闪烁若干次以后,1、3 路口红灯亮,而同时 2、4 路口的绿灯亮, 2、4 路口方向通车;延时一段时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3 路口方向,并不断重复上述过程。如图1-1 所示:北南东西绿黄红红黄绿绿黄红红黄绿图 1-1 交通灯路况名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计2 1.2 交通灯状态变化分析1. 东西方向为红,南北方向为绿,并持续一定的时间,时间到,南北方的绿灯立刻转为黄灯,进入下一个状态。2. 东西方向为红,南北方向为黄,并持续一定的时间,最后8 秒钟南北方向的黄灯闪烁 8 次,并转为红灯, 此时东西方向的红灯应该转为绿灯,并进入下一个状态。3. 南北方向为红,东西方向为绿,并持续一定的时间,时间到,东西方向的绿灯立刻转为黄灯,进入下一个状态。4. 南北方向为红,东西方向为黄,并持续一定的时间,最后8 秒钟东西方向的黄灯闪烁 8 次,并转为红灯, 此时南北方向的红灯应该转为绿灯,并进入下一个状态。5. 当十字路口的灯都经历这四个状态时,重新由第一个状态开始,不断地循环。1.3 交通灯持续时间分析在本实验中, 为了避免长时间的等待, 将交通灯设置了比较短的时间,红灯持续时间为 30 秒,绿灯持续时间为20 秒,黄灯持续时间为10 秒,其中,黄灯最后 8 秒为闪烁时间,即黄灯最后8 秒闪烁 8 次。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计3 2 项目概述2.1 设计内容利用 PC机与 DVCC 实验箱提供的 8253、8255、8259 的芯片设计十字路口交通信号灯自动控制系统,模拟交通灯的运行情况。具体要求如下:1、每个路口有红、黄、绿三个灯,按交通规则对12个灯进行定时控制。一般情况交通灯按如下种状态依次循环切换:南北路口绿灯亮(东西路口红灯亮)30秒南北路口黄灯闪烁 8次(东西路口红灯亮)南北路口红灯亮(东西路口绿灯亮) 30秒东西路口黄灯闪烁 8次(南北路口红灯亮)。2、每个方向的灯明灭时间均由8253完成硬件计时。3、实验仪提供了6 位 8 段码 LED数码管进行倒计时显示,我们采取其中4位来显示时间。4、由 8259完成中断。5、在完成上述所描述功能的基础上,增加行人手动按钮。实现可手动干预的(交通事故、步行可及时通行的)交通灯自动控制系统有手动干预(按钮按下)时,交通灯立即处于该状态: 两个方向均红灯亮 (以便让行人及时通过)。30秒后,交通恢复到人工干预前状态,继续按正常状态循环切换。可利用单脉冲信号作为手动按钮,利用8259外部中断控制器, 实现手动干预。2.2 设计要求2.2.1 要能实现上述描述功能的十字路口交通信号灯自动控制系统。合理的让三个芯片链接起来在dvcc 上运用,以达到学习芯片的基本知识和功能。2.2.2 为提高编程质量 , 养成良好的编程习惯, 要求在书写源代码时, 严格按汇编格式处理 , 给出空行、空隔和注释。2.2.3 在实现了程序的基础上,编写出合理的课程设计报告。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计4 3 系统设计3.1 总体设计本实验包含的模块为, 8259 中断模块,8253定时中断模块,应急中断模块,八段数码管显示模块, 4 个模块都通过总线连接到CPU ,与 CPU进行通信,最后通过编写汇编程序执行相应的命令,来控制整个交通灯的运作。本实验通过分为以下三大模块来分别完成。分别为8253、8259 定时中断交通灯模块, 应急中断模块, 数字显示模块。 其中应急中断的优先级比8253、8259定时中断交通灯模块中断要高, 因为当有紧急情况发生的时候, 必须优先给予中断。当应急中断发生时,会调用显示模块来显示一定的时间,同时8253 对时间进行定时 1 秒,并产生相应的中断, 对时间进行减 1 秒的操作, 并重新回到显示阶段。 8253、8259 定时中断交通灯模块和数字显示模块组成交通灯基本系统,维护交通灯的基本运行,而应急中断作为系统的扩展模块。8253、8259 定时中断交通灯模块:交通灯的最基本功能模块,将交通灯的基本功能通过 LED灯显示出来,其中包含对交通灯状况的分析, 交通灯转灯的分析,1 秒定时中断调用的分析,定时时间的分析。最终结果是将现实交通灯基本的情况通过 8253、8259 定时中断模拟出来。数字显示模块:作为交通灯的必要模块,数字显示必须存在,而且在现实生活中意义重大, 这模块可以将灯存在的秒数显示出来,可以让用户了解更多交通灯定时时间的信息, 以便对行人或者汽车做出让步或者前进的动作,使之能更好把握时间。同时可以提醒汽车或行人应该刹车或者停止行走。应急中断模块: 应急中断作为整个交通灯系统的扩展模块,有很好的使用性和现实性,对于突发事件的发生,能够很好地去处理。当应急中断发生时,表明十字路口发生紧急的情况, 同时对十字路口亮红灯, 所有车辆必须停止行驶。 当中断结束会自动恢复原来状态。系统框架如下图 3-1 所示名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计5 8253 定时中断模块8086 CPU8259中断模块八段数码管显示模块总线应急中断模块图 3-1 系统框架系统流程图如图 3-2 所示:初始化数据 (T_1和T_2 ,设置显示码)初始化8255、8253设置中断向量表,初始化8259显示模块(显示T_1和 T_2)8253、8259定时中断服务程序应急中断服务程序优先返回图 3-2 系统流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计6 3.2 功能模块3.2.1 8253、8259 定时中断交通灯模块首先把中断关闭, cli 是关中断,防止有些硬件中断对程序的干扰,然后保留现场,其次开中断, sti 是开中断,允许硬件中断。进入状态灯的判断,东西方向是否为红, 南北方向是否为红, 否则恢复端口状态并输出当相应的端口,如果东西南北方向都为红灯,则执行下一状态判断,即判断状态1(东西方向是否为红,南北方向是否为绿) ,如果状态 1为真,则判断时间是否为 0,若时间为 0,则改变成下一状态(状态 2:东西方向是否为红,南北方向是否为黄) ,并为黄灯设置一定的秒数,保存状态,返回中断。若状态2(状态2:东西方向是否为红,南北方向是否为黄) 为真,则判断时间是否为零, 若T_2为非0并且到一定时间内黄灯闪烁,若为 0,则南北方向转为红灯,同时东西方向转绿灯,T_2,T_1重新赋值并保存 c口状态并返回。 若南北方向是红, 东西方向是绿, 则判断 T_1是否为0,若为非 0,返回中断,为 0,东西方向绿灯转黄灯,并T_1重新赋值并保存 c口状态。最后判断南北方向是否红, 东西方向是否黄, 若T_1为非0并且到一定时间内黄灯闪烁,如果为 0,则东西方向转为红灯,同时南北方向转绿灯,T_2,T_1重新赋值并保存 c口状态,最后返回中断。交通灯状态:状态 0:东西方向是否为红,南北方向是否为红。状态 1:东西方向是否为红,南北方向是否为绿。状态 2:东西方向是否为红,南北方向是否为黄。状态 3:南北方向是否为红,东西方向是否为绿。状态 4:南北方向是否为红,东西方向是否为黄。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计7 8259、8253 定时中断交通灯流程图如3-3 所示:初始化数据(T_1 和T_2,设置显示码 )初始化8255、 8253设置中断向量表,初始化8259调用显示功能中断东西方向是否红,南北方向是否绿东西方向是否红,南北方向是否黄南北方向是否红,东西方向是否黄南北方向绿灯转黄灯T_2是否为 0否是中断返回否是是T_2是否为 0是否南北方向转为红灯,同时东西方向转绿灯T_2重新赋值并保存 c口状态T_2到一定时间内黄灯闪烁T_2, T_1重新赋值并保存 c口状态南北方向是否红,东西方向是否绿T_1是否为 0否是否否是东西方向绿灯转黄灯T_1重新赋值并保存 c口状态是T_1是否为 0T_1到一定时间内黄灯闪烁是否东西方向转为红灯,同时南北方向转绿灯T_2, T_1重新赋值并保存 c口状态否T_1, T_2减1关中断中断服务程序INTREEUP3东西方向是否红,南北方向是否红是否恢复时间和端口状态T_1、 T_2是否为0否是输出端口状态图 3-3 8259、8253 定时中断交通灯流程图3.2.2 交通灯数字显示模块首先,获得 8253 定时器传送来东西方向的数据,然后过滤8 段数码管,防止出现余辉效应而导致结果偏差,将代码段的初始地址赋给BX ,在将数据除以10,取个位数据赋给 AL,在将 0H赋给 AH ,在将 AX的值与 BX相加获得该数据的个位数的字形, 之后初始化字形的接口地址,将字形输出, 再初始化字位的接口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计8 地址,就可以完整的输出一个个位数。再过滤 8 断数码管, 重新将代码段的初始地址赋给 BX ,在将数据除以10,将 0H赋给 AH ,在将 AX的值与 BX相加获得该数据的十位数的字形, 之后还是初始化字形的接口地址,将字形输出, 再初始化字位的接口地址, 就可以完整的输出一个十位数。 南北方向的数据操作和东西方向操作一样。显示模块流程图如图3-4 所示:获得数据过滤 LED 灯数据除以10将 AH 保存的个位数存入 ALAH 赋值 0H确定数据的位置输出数据确定数据的字形获得数据过滤 LED 灯数据除以10AH 赋值 0H确定数据的位置输出数据确定数据的字形图 3-4 显示模块流程图3.2.3 应急中断模块3.2.3.1 模块介绍当交通出现突发事故、 密集人流可及时通行、 急救车等, 需要一段时间来处理事件时,我们可以手动暂停红灯来达到疏散人群的作用。其中INTREEUP2 是增加行人手动按钮。实现可手动干预的(交通事故、步行可及时通行的)交通灯自动控制系统有手动干预(按钮按下)时,交通灯立即处于该状态:两个方向均红灯亮(以便让行人及时通过) 。10秒后,交通恢复到人工干预前状态,继续按正常状态循环切换。其程序框图如图3-5所示:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计9 图 3-5 程序框图3.2.3.2 工作流程当十字路口交通灯在按照交通规则正常运行时,这时如果遇到特发事件需要紧急停止, 可以通过手动干预交通灯自动控制系统。进入中断程序后, 这时候先把手动干预前交通灯的状态和秒数记录下来后(T_3=T_1 , T_4=T_2 , C_COPY=C) ,把两个路口的交通灯都转为红灯并设置为30秒, 然后两个路口所亮的灯对应的显示数值减 1,判断两个路口的交通灯状态是否为红灯,不是的话秒数再减 1,是的话再判断两个路口的交通灯得秒数是否为0,不是的话返回判断路口是否为红灯的状态,是的话就读取手动干预前交通灯的状态和秒数(T_1=T_3 ,T_2=T_4 ,C=C_COPY)。此时把将两个路口状态送到8255端口C,恢复现场后中断返回。此工作流程图如图 3-6所示:中断入口保护现场四个方向的红灯亮10 秒输出中断结束命令中断返回恢复现场名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计10 中断开始T_3=T_1T_4=T_2C_COPY=CT_1=15T_2=15判断两个交通灯是否为红灯T_1=T_3T_2=T_4C=C_COPY将 C口状态送到 8255 端口 C恢复现场中断返回YT_1=0 ?T_1=T_1-1T_2=T_2-1NN图 3-6 工作流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计11 4 硬件设计4.1 硬件介绍4.1.1 8253定时控制芯片8253A 定时/ 计数器具有定时、计数双功能。它具有三个相同且相互独立的16 位减法计数器,分别称为计数器0、计数器 1 和计数器 2。每个计数器计数频率为 02MHZ 。其内部数据总线缓冲器为双向三态,故可直接连在系统数据总线上,通过CPU 写入计数初值,也可由CPU 读出计数当前值。读写控制逻辑,当选中该芯片时,根据读写命令和送来的地址信息控制整个芯片工作。其工作方式通过控制字确定。控制字寄存器用于接收数据总线缓冲器的信息。当写入控制字时, 控制计数器的工作方式; 当写入数据时则装入计数初值。控制寄存器为 8 位,只能写入不能读出。 8253A内部结构见图 3-1。当 8253A执行计数功能时,计数器装入初值后,当GATE 为高电平时,可用外部事件作为 CLK脉冲对计数值进行减1 计数。每来一个脉冲减1,当计数值减为 0 时,由 OUT端输出一个标志信号。当 8253A执行定时功能时, 计数器装入初值后, 当 GATE 为高电平时, 由 CLK脉冲触发开始自动计数。当计数到零时,发计数结束定时信号。8253A 可以工作在方式 0到方式 5,常用的有方式 2频率发生器方式和方式 3方波发生器方式。 在方式 2时,当初值装入后, OUT 变为高;计数结束,OUT 变为低。该方式下如果计数未结束, 但GATE 为低时,立即停止计数, 将OUT 变为高;当GATE再变高时,便启动一次新的计数周期。在方式3时,当装入初值后,在 GATE 上升沿启动计数, OUT 输出高电平;当计数完成一半时,OUT 输出低电平。在本系统中, 8253A 工作于方式 3方波发生器方式。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计12 图 4-1 8253A内部结构图4.1.2 8259A中断控制器芯片中断控制器是专门用来处理中断的控制芯片。8259A就是一个可编程的8 输入端中断控制器, 它将中断源按优先级排队、 辨认中断源和提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8 级中断。8259A中断控制器包括8 个主要功能部件:中断请求寄存器(IRR) 、中断服务寄存器(ISR) 、中断屏蔽寄存器( IMR) 、优先级判别器(PR ) 、数据总线缓冲器、读/ 写逻辑 、级联缓冲器 / 比较器 、控制逻辑名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计13 图 4-2 8259A的内部结构对 8259A编程和初始化的时候,首先要写初始化命令字ICW1-ICW4 。写 ICW1以确定中断请求信号类型,清除中断屏蔽寄存器,进行中断优先级排队和确定系统是用单片还是多片。写 ICW2用来定义中断向量的高五位类型码。ICW3可以定义主片 8259A中断请求线上 IR0-IR7 有无级联的 8259A从片。写 ICW4用来定义 8259A工作时用 8085 模式还是 8088模式,以及中断服务寄存器复位方式等。初始化命令字写完以后,要写8259A的控制命令字,它包括OCW1-OCW3。写 OCW1 可以设置或清除对中断源的屏蔽。写 OCW2 设置优先级是否进行循环、循环的方式和中断结束的方式。8259A复位时自动设置 IR0 优先权最高, IR7 优先权最低。写 OCW3 用来设置查询方式和特殊屏蔽方式,并可以读取8259A中断寄存器的当前状态。在本系统中,使用8259A的循环等待中断工作方式。4.1.3 8255A 可编程并行接口芯片8255A 是一种可编程的芯片,它采用双列直插封装,用5V电源供电。内部名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计14 有3个8位的I/0 端口: A口、B口和C口。这三个端口也可以分为各有12位的两组:A组和B组。A组包含A口8位和C 口的高四位, B组包含 B口8位和C口的低四位; A组控制和 B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内部寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A 数据总线缓冲器是双向三态 8位驱动器,因此可以直接和8088系统数据总线相连。8255A的内部逻辑结构见图 3-3。图 4-3 8255A的内部结构8255A有三种工作方式:方式0、方式 1 和方式 2。它通过对控制寄存器写入不同的方式选择控制字来决定其三种不同的工作方式。方式 0 是基本输入输出方式。 该方式下的 A口 8 位和 B口 8 位可以由输入的控制字决定为输入或输出,C口分成高 4 位(PC4-PC7 )和低 4 位(PC0-PC3 )两组,也有控制字决定其输入或输出。需要注意的是,该方式下,只能将C口其中一组的四位全部置为输入或输出。方式 1 选通输入输出方式,又叫单向输入输出方式。它分为A、B 两组, A组由数据口 A和控制口 C的高 4 位组成,B组由数据口 B和控制口 C的低 4 位组成。数据口的输入输出都是锁存的,与方式 0 不同,由控制字来决定它是作为输入还是输出。 C口的相应位用于寄存数据传送中所需的状态信号和控制信息。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计15 方式 2 为双向输入输出方式。 本方式只有 A组可以使用。此时 A口为输入输出双向口, C口中的 5 位(PC3-PC7 )作为 A口的控制位。在本系统中, 8255A 的三个端口均工作于方式0,全部为输出口。4.2 硬件功能分析4.2.1 8259硬件功能分析4.2.1.1. 8259初始化8259初始化时,控制字写ICW1 ,单片,边沿触发,需要ICW4 ,控制字端口地址为 60H , 写 ICW2 , 中断类型号从 08H开始, 写 ICW2端口地址为 61H , 写 ICW4 ,缓冲方式, 8086/8088 自动配置,即中断返回时要写OCW2,端口地址为 61H 。代码如下: MOV AL,13H OUT 60H,AL MOV AL,08H OUT 61H,AL MOV AL,09H OUT 61H,AL 4.2.1.2. 8259中断服务程序的返回8259中断服务程序返回时, 普通 EOI 方式结束,写 OCW2 然后返回,其中 OCW2作用为控制中断结束,优先权是否循环,OCW1 端口地址为 61H 。其中,定时中断服务程序 INTREEUP3 和应急中断服务程序INTREEUP2 在中断返回时都要需要写OCW1 代码如下: MOV AL,20H MOV DX,0060h OUT DX,AL 4.2.1.3.设置中断向量表名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计16 由于 8259 初始化的时候写了ICW2 , 所以中断类型号从08H开始, 即对应 IR0至 IR7 的中断类型号为 08H至 0FH 。所以必须要由此而设置中断向量表,否则中断服务程序无法识别,不能向CPU 提供中断服务程序的入口地址。本实验运用3号中断为定时中断, 2 号中断为应急中断,并且每个中断向量都占4 个字节,所以由此可得, 3 号中断向量表的地址为0BH*4=2CH ,2 号中断向量表的地址为0AH*4=28H 。 MOV AX,0H MOV ES,AX MOV DI,002CH ;3 号中断 -0BH*4=2CH MOV AX,OFFSET INTREEUP3 ;取中断服务程序 INTREEUP3 的地址 STOSW MOV AX,0000H STOSW MOV DI,0028H ;2号中断 -0AH*4=28H MOV AX,OFFSET INTREEUP2 ;取中断服务程序 INTREEUP2 的地址 STOSW MOV AX,0000H STOSW 4.2.2 8253硬件功能分析计数器 8253,选用方波发生器方式, 并设定其使用通道0 和 2 进行工作,其中,DVCC 实验台 8253口地址:00400043H ,8253A四个端口地址为 40H 、41H 、42H 、43H ,分别对应通道 0、通道 1、通道 2 和控制字。初始化 8253 时,先选中计数器 0,写控制字,工作在方式3,先写低位,后写高位,以二进制计数。再选中计数器 2,写控制字,工作在方式3,先写低位,后写高位,同样以二进制计数。 8253 产生中断,最后会重新装入原来的值。继续不断的定时,若时间到则会产生中断。代码如下: MOV AL,36H ;写控制字,计数器0. 方式 3,先写低位,后写高位 OUT 43H,AL MOV AL,50H ; 先写低位 ,2 进制计数, 40H计数器 0 地址端口 OUT 40H,AL MOV AL,11000011B ;后高位, 2 进制计数名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计17 OUT 40H,AL MOV AL,10110110B ; 写控制字,计数器2. 方式 3,先写低位,后写高位, 2 进制计数 OUT 43H,AL MOV AL,02H OUT 42H,AL MOV AL,00H OUT 42H,AL 4.2.3 8255硬件功能分析并口 8255的 DVCC 实验台 8255口地址: FF28H FF2BH 。本实验中 8255 只用到 C口,而且只需执行在基本的输入输出方式即可,初始化时写方式控制字,A组工作在方式 0,A 口输出,并且 C口也为输出,工作在方式0。程序执行前除了要对 8255 初始化之外,还应该对 8255端口 C进行赋初值,对交通灯进行初始化。代码如下: ;8255初始化 MOV DX,0FF2BH ;8255控制字端口 MOV AL,80H ;方式 0,全输出模式 OUT DX,AL ;初始化端口 C(即初始化交通灯的状态) MOV DX,IOC ;0FF2AH 8255端口 C MOV AL,00100100B ;0010 0100 MOV C,AL ;把 C口的状态记录下 OUT DX,AL 4.3 硬件模块连接4.3.1 并行口 8255芯片名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计18 硬件连接图如 4-4 所示:图 4-4 8255硬件连接图其线路连接为: L2 PC0 L5PC1 L3PC2 L6PC3 L1PC4 L4PC5 8255A芯片的 PC口的 PC1 、PC4接红灯灯, PC3 、PC6接绿灯, PC2 、PC5接黄灯。通过改变 8255A的 PC口的值来实时地控制每个LED灯的亮灭,从而改变十字路口的交通状态。4.3.2 定时/计数器 8259A 芯片硬件连接图如 4-5 所示:PC0 PCPCPCPCPC8 2 5 5 A 5 2 3 6 4 1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计19 T4 +5V IR3 图 4-5 8253硬件连接图其线路连接为: CL0T4 GATE0 GATE2 +5V OUT0 CL2 OUT2 IR3 4.3.3 中断控制器 8259A 芯片硬件连接图如 4-6 所示:图 4-6 8259A 硬件连接图其线路连接为:(1)8259模块上的 INT 连 8088的 INTR(在主板键盘矩阵下面) 。(2)8259模块上的 INTA连 8088的 INTA(在主板键盘矩阵下面) 。(3)8259的 IR3 与 8253的 OUT2 相连。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计20 (4)8259模块上的 D0D7 连到 BUS 2区的 XD0XD7 。(5)8259模块上的 CS端接 Y6。(6)8259模块上的 A0连到 BUS 区的 XA0上。(7)8259模块上的 RD 、WR 信号线分别连到BUS 3区的 XRD 、XWR 上。(8)8259模块上的 IR2 与手动脉冲 SP相连。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计21 5 系统实现5.1 开发环境5.1.1 软件开发环境本系统的代码使用8086 汇编语言编写,所以代码编写环境可以使用任何文本编辑器。如系统自带的记事本、DOS 下的编辑工具 EDIT和文本编辑工具等。本系统使用了 DVCC-598JH+ 实验箱附带的 DV88联机软件。 它可以读取其他编辑软件生成的 MASM 格式的汇编语言文件( *.ASM), 也可以作为汇编代码的编辑、测试、运行环境。在显示代码的时候,可以把常用的汇编指令显示为蓝色,数值显示为红色, 注释显示为绿色, 从而使论文清晰易读, 并容易发现代码中的错误。DV88联机软件同样可以作为系统的运行环境。系统运行的时候需要将ASM源程序编译产生的OBJ文件传送到实验箱, 由实验箱上的处理器和各个芯片负责执行。汇编语言编写是通过对交通灯问题的分析,分模块设计,并最终集成一个完整的汇编程序, 其中包括了定时中断服务程序、 应急中断服务程序以及通过七段数码管显示数字程序。5.1.2 硬件开发环境使用 启东计算机厂有限公司 生产的一台实验箱, 实验硬件为 DVCC 598JH实验台。实验箱集成了8253A计数/ 定时器芯片、 8255A可编程并行接口芯片和8259A中断控制器芯片,并把大部分的引脚进行了封装,方便直接进行使用;并设有 12 个 LED显示灯;系统分频器可以产生特定频率的时钟脉冲;固定的导线接口, 方便使用导线把各芯片进行连接; 并设有键盘,可以随时控制程序的运行,方便进行调试。实验箱使用串行口连接线与PC机的串口相连,然后使用DV88联机软件与实验箱进行连接并传送运行的程序。5.2 运行步骤1. 系统的代码编写完毕,便可以进行程序的联机调试。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计22 2. 将实验箱的电源线连接好,使用串口通信线将实验箱上的串口与PC机上的串口相连。将各个芯片和LED灯按照硬件连接设计图上的图示进行连接。3. 检查连线是否存在错误,包括LED灯和输出口等。4. 打开实验箱的电源, 数码管显示屏上显示 “P.” , 提示实验箱初始化成功。并按实验箱上的 debug键进行联机。5. 由于实验箱存在问题, 可能有很多实验箱芯片或者连接线接触不良,所以可以先根据原来的实验对8259、8253、8255 进行测试,以确保芯片和连线没出现接触不良的现象。6. 在 PC机上打开 DV88联机软件,调用编辑好的程序代码。首先进行编译,系统会自动调用 MASM 程序对代码进行编译。若没有提示错误,便可以点击连接按钮,调用 LINK 程序把编译生成的OBJ文件进行连接,生成EXE文件。再点进调试按钮, 把生成的可执行文件传送到实验箱,进行调试状态, 此时屏幕会显示实验箱各个寄存器的值。最后点击连续运行按钮,实验箱上的数码显示管和LED灯便会按照设计的要求进行工作。7. 在运行的过程中可以按实验箱上的RESET 键, 并重新连接,重新编译运行,不断对程序进行调试和运行,最终确定一个符合要求和准确无误的汇编程序。5.3 运行结果分析开始运行时,系统在工作状态为东西方向为红,南北方向为绿,红灯路口显示屏显示剩余时间为30 秒,绿灯路口显示屏显示剩余时间为20 秒,并不断递减,当绿灯路口数字减到0 时,南北方向路口由绿等切换成黄灯,黄灯设置为10 秒,其中闪烁时间为8 秒,8 秒过后,南北方向转为红灯,两路口的显示秒数相互换(即南北路口显示屏显示剩余时间为30 秒,东西路口显示屏显示剩余时间为 20 秒) ,并不断递减,当东西路口(绿灯)数字减到0 时,东西方向路口由绿等切换成黄灯,黄灯设置为10 秒,其中闪烁时间为8 秒(即黄灯时间小于等于 8 秒时闪烁),之后的情况不断重复。其中黄灯闪烁时,七段数码管的灯也会相应的闪烁。若存在应急中断,应急中断的时间为30 秒,并且可以存在多级的中断(即可多次按应急中断,并且应急中断的时间会相互叠加),应急中断结束后会恢复到原来的状况(包括原来交通灯的情况和原来交通灯的数字显示的秒数) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 41 页 - - - - - - - - - 北京理工大学珠海学院计算机学院课程设计23 参考文献1 季福坤: 计算机组织与体系结构M,中国水利水电出版社2006