




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于8086微处理器的交通信号灯控制设计摘 要 随着现代科学技术的发展,人民生活水平的提高,汽车已走进千家万户。而由之带来的交通问题也越发的普遍和严重,这些交通问题在城市中表现得尤为突出。十字路口的交通状态控制已显得尤为重要,人们既不愿意在十字路口等待过久又不能陷入无休无止的堵塞状态。于是一种新型的交通灯设计迫在眉睫,它既能满足普通的控制指挥要求,又能根据不同的车流量路段或是不同的时间段设定不同的通行时间。 本交通灯设计就是在新的设计要求下,利用8086系统开发出来的。它基本上可以满足不同路段和时间段的通行时间设定,即保证在源程序不变的情况下,通过硬件接口(键盘)设定通行时间。关键字:8086微处理器、可编程并行i/o接口芯片8255a、8253可编程定时器/计数器、 8259a可编程中断控制器、8284a时钟发生器、中断与查询方式相结合键盘。 一、方案论证与比较1.1总体方案比较 在进行交通灯设计前定下一设计原则:在可以满足设计要求的前提下,运用已学到的知识,以最简单明了的设计思路进行交通灯控制设计。 对于本次交通灯设计现提出三种方案,分别比较如下:方案1:利用纯数字电路实现交通信号灯设计。该种方案的系统框图如图1.1.1所示:图1.1.1 纯数字电路系统框图 由系统框图可以知道,整个系统包括秒脉冲发生器、分频器、控制器、计数译码器等电路组成。秒信号发生器产生整个定时系统的时基脉冲,通过减法计数器实现秒脉冲个数进行减计数,完成每一种工作状态的持续时间。整个电路基本上由数字电子器件组成,电路以及控制逻辑较复杂。设计的功能实现全部是由电路或是某些器件来保证的,若要适当的改变计数时间或是其他功能,则必须改动硬件电路或是某些器件,因而纯电子电路实现起来比较机械,不如软硬件结合的电路灵活。方案2:利用51单片机进行交通信号灯设计。单片机将控制器、运算器、存储器以及输入输出端口集于一体的高性能处理器。利用51单片机开发系统,外围元件少,电路简单,实时性高。对于本系统完全可以利用51单片机实现,且51单片机实现起来硬件电路和程序设计思路都比较简单,还可以应用一些仿真软件对设计的系统进行仿真,从而在理论与实际中保证设计的可行性。但由于知识水平的限制,还是不能很好的驾驭51单片机系统设计的经脉。该方案可用方框图表示如图1.1.2所示; 89c518255adata07led显示键盘图1.1.2 用51单片机实现交通灯系统框图方案3:利用8086cpu进行设计。以8086微处理器为中心,通过扩展外围器件,实现设计所需的功能。8086处理器虽说需要拓展一些外围器件如8259a、8253a、8255等,增加了电路的复杂性,但它仍具有功能丰富、实时性高等特点,对于本设计来说,它完全可以满足。特别是对于8086系统实现所需芯片在本学期已经学习,所以对8086构造的系统还是容易接受的。 结合设计原则比较上叙三种方案后,决定选用第三种方案作为本次设计方案。 1.2单元电路比较1.2.1 显示电路显示电路在此处主要指秒倒计时显示电路。根据显示器件的选用,有两种方式:led数码管和lcd液晶显示。led数码管显示又可以分为动态显示和静态显示。led显示亮度高,不需要额外的驱动电路,实现方便简单。对于led的动态显示和静态显示方式,两者显示原理一致,只是实现亮灭状态采用不同的方法。动态显示所占用的i/o口比静态显示少,需要结合模拟器件实现对各个led的选通,从而硬件电路较静态显示复杂,动态显示程序也较静态显示复杂。lcd显示需要额外的驱动电路,显示程序复杂。显示亮度虽高,但在此处交通灯倒计时还是不方便的。综合考虑后,设计中采用led静态显示方式。1.2.2 键盘 键盘在此设计中主要实现对不同路段或不同时间段的通行时间设定。方案1:采用独立键盘,该键盘电路结构简单、使用方便,软件实现简单,但是随着键数的增多,占用的i/o口的数目也随之增多。方案2:采用矩阵式键盘。在相同键数下,占用的i/o口的数目较独立键盘少,该键盘需要不断的扫描,占用大量cpu时间,将影响单片机实时处理特性。方案3:采用中断与查询相结合的键盘,如图1.2.1所示。该键盘较方案一、二优越。图1.2.1 中断与查询方式键盘 该类键盘最大的特点是:该键盘的特点在于占用cpu少,即没有按扭按下时,主程序循环运行。当某按扭按下后使原本输出高电平的74ls21或74ls11翻转而输出低电平,致使单片机的p3.3电平翻转而产生中断或是通过一个74ls04接至8259a产生中断,程序进入预先编制的中断子程序,以查询的方式判断键值,最终确定键值而完成一次按键输入。 本设计采用第三种方案,由于设计的键比较的少,所以这里采用图1.2.1中的第一种方式。二、系统框图 本交通信号灯设计主要完成对东西南北四方向的车辆通行进行指挥。设计的系统框图如图2.1.1所示。图2.1.1 交通信号灯控制系统框图 由系统框图2.1.1可知,8284a为8086和8253a提供时钟源,8253a通过8259a产生一个秒中断,供系统倒计时需要。8259a则将外部的中断与系统设定的中断对号入座。8255a主要作为输出输入端口,在8086的控制下实现秒倒计时和红、绿、黄灯的亮灭。根据现实情况,加设一键盘作为各不同路段和时间段的通行时间设定。整个系统在8086的控制下完成交通信号灯控制,从而完成对车辆通行控制。 由于不会影响系统软件的编制,本交通信号灯控制设计只选取东西方向、南北方向各一条通道进行设计,只要在硬件上稍做添加就可以实现对四道的交通信号灯控制。系统初态为4道红灯全亮,运行时红灯亮35s,绿灯亮30s,黄灯亮5s,各灯的亮灭时间段可以用图2.1.2表示。绿灯亮(30s)黄灯(5s)绿灯亮(30s) 红灯亮(35s)黄灯(5s) 红灯亮(35s)t/s303565700东西方向南北方向abcd图2.1.2 交通信号灯亮灭示意图三、系统主要单元电路设计 以8086cpu为核心构造的交通信号灯控制系统主要由4个单元电路组成。它们分别是以8284a、8253a、8259a、8255a构造的时钟发生电路、定时电路、中断系统电路、led显示和键盘电路。下面分别从各电路的主要芯片来介绍这四种单元电路。 3.1 时钟发生电路 时钟发生为整个系统提供稳定有序的脉冲,它是系统正常工作的前提。时钟发生电路在本设计中主要是为8086cpu和8253a提供时序脉冲。图3.1.1 时钟发生电路 以8284a构造的时钟发生电路与8086cpu的连接关系如图3.1.1所示。 一个低电平有效信号,它的作用是产生reset信号。在系统正常运行时,它必须为高电平(图3.1.1中接电源),否则系统一直处于复位状态。8284a所接外部时钟源有两种方式:一种是将置高电平,通过efi引脚输入外部脉冲信号;另一种是将接低电平,通过x1和x2与晶振相连。虽说两种时钟输入方式有所不同,但有一个共同点两种方式下的输入频率必须是cpu的3倍。图3.1.1中外部时钟是由晶振产生的,所以必须接低电平(图3.1.1中接地)。本系统设定cpu的时钟频率为5mhz,所以外接晶振频率为15 mhz,通过8284a的clk引脚将频率为5 mhz,占空比为33%的时钟输入到cpu。本设计中只用到一片cpu和一片8284a,所以csync(时钟同步信号:高电平有效,作用是对连接在一起的多个8284a芯片进行同步处理)接低电平,rdy1和(分别是高电平和低电平有效信号,它们合起来的作用是向微处理器提供准备就绪信号,从而在cpu的读写时钟周期中插入一个wait信号)分别接高电平、低电平,rdy2和(作用与rdy1和完全相同,只不过用于多处理器中,在本系统中只用到一片8086,所以必须永久禁用这种功能)分别接低电平和高电平。async被称为“就绪同步信号”,它是一个低电平有效信号,用于那些无法满足rdy的严格时序要求的设备。reset是一个高电平信号,作用是为8086和其他外围设备提供复位信号,它由激活。reday引脚连接到cpu的reday引脚,当外围设备速度跟不上时,reday信号可以告诉8086应插入等待状态。pclk引脚输出的频率为clk的1/2,即晶振频率的1/6,占空比为50%,在本设计中它与8253a的clk1相连,为8253a提供有效时序。 3.2 定时电路 定时电路在本设计中主要提供一秒的定时。外部频率通过clk1引脚输入到8253a中,在预先设定的程序指导下,通过out0向8259a产生一秒定时中断。8253a与8259a的连接关系如图3.2.1所示 8253的基本功能:3个独立的6位计数器,最大计数范围为065535;每个计数器均可以按二进制或二-十进制计数;计数速率可达2mhz;可编程六种不同的工作方式;所有输入输出都与ttl兼容。所以8253具有较好的通用性和使用灵活性,几乎适合于任何一种微处理器组成的系统。 与cpu的接口信号:(1)d0d7三态双向数据线。与cpu数据总线相连,用于传递cpu与8253之间的数据信息、控制信息和状态信息。图3.2.1 定时电路(2)片选信号,低电平有效。表示8253被选中,允许cpu对其进行读/写操作,本设计中与74ls138的输出引脚相连。 (3)写信号,输入,低电平有效。用于控制cpu对8253写操作,可与a1、a0信号配合以决定是写入控制字还是计数初值。(4)读信号,输入,低电平有效。用于控制cpu对8253读操作,可与a1、a0信号配合读取某个计数器的当前计数值。(5)a0、a1地址输入线。用于8253内部寻址的4个端口,即3个计数器和一个控制字寄存器。一般与cpu的低位的地址线相连。本设计中与8086的a1、a2相连。 本设计中8253a各计数器的工作方式: 设计中8253a只用到了其中两个计数器:计数器0和计数器1。两个计数器均工作在方式2速率发生器、分频器。方式2的功能如同一个n分频计数器,输出的是输入时钟按照计数值n分频后的一个连续脉冲。(1)计数过程 写入控制字后的时钟上升沿,输出端out变成高电平。若gata=1,写入计数初值后的第一个时钟下降沿开始减1计数。减到1时,输出端变成低电平,减到0时,输出out又变成高电平,从初值开始新的计数过程,即方式2能自动重装初值,输出固定频率的脉冲。因此若装入计数初值为n,则out引脚上每隔n个时钟脉冲就输出一个负脉冲,其频率为输入时钟脉冲频率的1/n,故方式2也称分频器。 在本次设计的硬件电路中,在8255a的out0和8259a的ir1间加上一个非门,当一秒计数尚未完成时,out0输出高电平,通过非门后转变为低电平;当计数完成后,out0输出低电平,通过非门后转变为高电平,从而产生中断。(2)gate信号的影响 方式2中,gate信号为低电平终止计数,而由低电平恢复为高电平后的第一个时钟下降沿重新从初值开始计数。由此可见,gate一直处于高电平时,计数器方能作为一个n分频器。(3)新的计数初值对计数过程的影响 如果在计数过程中写入新的初值,且gate信号一直维持高电平,则新的计数初值不会立即影响当前的计数过程,但在计数结束后的下一个计数周期将按新的初值计数,即新的处置下次有效。 根据硬件电路图,本设计中8253a的端口地址(即3个计数器和一个控制字寄存器)具体见附录中表1。 根据设计要求和电路8253a的各个控制字如附录中表2所示。3.3 中断系统电路图3.3.1 中断系统电路 由8259a构造的中断系统电路如图3.3.1所示。 外部中断系统犹如一座桥梁将外部中断源与cpu内部程序对应的中断向量一一对应起来,使系统有序运行。本设计中有两个中断源:一个是由8253a的out0产生;另一个是由键盘产生。当没有中断产生时系统循环运行主程序;当外部有中断产生时,转入到中断子程序运行,从而使整个系统有条不紊运行。 8259a的功能:具有8级优先权,并可通过级联扩展至64级;可通过编程屏蔽或开放接于其上的任一中断源;在中断响应周期能自动向cpu提供可编程的标识码,如8086的中断类型号;可编程选择各种不同的工作方式。 8259a部分引脚介绍:(1)d7d0:双向三态数据线,与cpu数据总线直接相连或与外部数据缓冲器相连。本设计中由于只有3块芯片有数据线,所以没有加数据缓冲器。(2):片选信号,低电平有效,通常与cpu的高位地址线或地址译码器的输出相连。本设计中与地址译码器74ls138的输出相连。(3)int:中断请求信号输出端。用于向cpu发出中断请求信号。(4):中断响应输入信号。用于接收cpu的中断响应信号。(5)a0:地址线,通常与cpu的 低位地址总线相连,如8086的a1,a0=0是偶地址,a0=1是奇地址。本系统中8259a的a0与cpu的a1相连。(6)ir7ir0:与外部中断请求信号相连,通常ir0的优先权最高,ir7的优先权最低,按序排列。(7)cas0cas2:级联信号线,主片位输出,从片为输入,与配合,实现级联。(8):主从/允许缓冲线。在缓冲工作方式下,用作输出信号,以控制总线缓冲器的接收和发送()。在非缓冲工作方式下,用作输入信号,表示该8259a是主片()或从片()。由于本设计中只用到一片8259a,所以该引脚直接接低电平。本设计中8259a的工作方式:1、中断触发方式本设计中的中断触发方式为电平触发方式。电平触发方式是指中断请求输入端iri出现高电平时,即为有效的中断请求信号这样一种中断触发方式。使用该方式时应注意,在cpu响应中断后(isr相应位置位后),必须撤销iri上的高电平,否则会发生第二次中断请求。 该方式由初始化命令字icw1的d3位置1来设置。2、中断屏蔽方式这里采用普通屏蔽方式。按imr给出的结果,屏蔽或开放该级中断,同时允许高级的中断源中断低级的中断服务程序,不允许同级的中断源或低级的中断源中断目前正在执行的中断服务程序,这样一种工作方式就是普通屏蔽方式。 普通屏蔽方式通过写入屏蔽字ocw1来设置,ocw1的内容存放在imr中,对应位置1,屏蔽该中断,对应位为0,开放该中断。3、优先级设置方式 本设计优先级设置为普通全嵌套方式。 该方式生活8259a最常用的方式,简称为全嵌套方式。8259a初始化后未设置其它优先级方式,就按该方式工作,所以普通全嵌套方式是8259a的缺省工作方式。 普通全嵌套工作方式下,ir7ir0优先级由低到高按序排列,且只允许高级的中断源中断低级的中断服务程序。在该方式下,先要使aeoi=0,使中断结束处于正常方式。否则,低级的中断源也有可能打断高级的中断服务程序,使中断优先级次序发生错乱,不能实现全嵌套。4、中断结束方式 当中断服务结束时,必须给8259a的isr相应位清0,表示该中断源的中断服务已经结束,使isr相应位清0的操作称为中断结束处理。 本设计中采用一般的中断结束方式。 该方式通过中断服务程序中设置eoi命令,使isr中的级别最高的那一位清0,只适用于全嵌套方式。因为该方式中isr中的级别最高的那一位就是当前正在处理的中断源的对应位。该方式通过初始化命令字icw4的d1位清0,同时将ocw2的d7d6d5设置为001来实现。根据硬件电路图,本设计中8259a的端口地址(奇地址和偶地址)具体见附录中表1。 根据设计要求和电路8259a的各个控制字如附录中表2所示。3.4 键盘和显示电路图3.4.1 键盘与显示电路 作为人机接口的键盘电路和倒计时显示、信号灯指示电路如图3.4.1所示。 键盘在本次设计中主要作用是设置不同路段和时间断的通行时间,led显示则主要是显示通行剩余时间,所有的接口均连接在8255a上。 8255a是intel86系列微处理器的配套并行接口芯片,它可为86系列cpu与外部设备之间提供并行输入/输出通道。由于它是可编程的,可以通过软件来设置芯片的工作方式,因此,用8255a连接外部设备时,通常不用再附加外部电路,使用较为方便。 8255a的部分引脚介绍:(1)片选信号,低电平有效。表示8255被选中,允许cpu对其进行读/写操作,本设计中与74ls138的输出引脚相连。 (2)写信号,输入,低电平有效。用于控制cpu对8255写操作,可与a1、a0信号配合以决定是写入控制字还是计数初值。(3)读信号,输入,低电平有效。用于控制cpu对8255读操作,可与a1、a0信号配合读取某个计数器的当前计数值。(4)a0、a1地址输入线。用于8255内部寻址的4个端口,即3个输入输出口和一个控制字寄存器。一般与cpu的低位的地址线相连。本设计中与8086的a1、a2相连。根据设计原则,只要能够满足设计的要求,追求最简单化。 8255a的3个口在这次设计中均工作于方式0。其中a、b口作为输出口,c口作为输入口。 工作方式0时8255a的基本输入/输出方式。它只完成简单的并行输入输出操作,cpu可以从指定端口输入信息,也可以向指定端口输出信息。如果3个端口均处于工作方式0,则可以由工作方式控制字定义16种工作方式的组合。图3.4.1中两个led显示通行剩余时间,通过7448直接将二进制码转换为bcd码输出。b口接两组不同的信号灯,c口接5个按键。其中2个按键是修改黄红两种信号灯的亮状态时间(因为黄绿灯持续亮总时间即红灯持续亮的时间,修改黄红灯时间时,绿灯时间也在改变,因而没有设置修改绿灯时间的按键合程序),同时在输入端并接上了74ls11,当它们中有一个按键按下后,74ls11输出翻转为0,再经过74ls04翻转为1。另外两个按键的功能是向上加、向下减时间。根据硬件电路图和程序设计,交通信号灯的指示逻辑如附录中表3所示,8255a的各端口地址(a、b、c口地址,控制字地址)如附录中表1所示。四、软件设计 交通信号灯的程序设计,主要子程序以流程图的形式表示出来,具体程序见附录。4.1 主程序流程图在编写交通信号灯控制的主程序前先做好的工作有三个:第一是确定各个芯片的端口地址;第二个是对各个芯片的工作方式的确定,即对各个芯片的状态字或控制字的确定;第三是完成一些细致工作,如联系硬件电路图对中断向量和其他一些逻辑量确定。由于前期工作的准备较充分,所以主程序编写起来思路较清晰。主程序的任务有三个:第一是完成对各个芯片的工作方式和状态字的确定,即各个芯片的初始化;第二是完成对中断向量的定义;第三个就是等待中断的出现,中断出现后,将需要处理的数据或者要实现的功能转交给中断子程序完成。需要说明的是,本次设计的键盘中断优先级高于1s定时中段。主程序的流程图如图4.1.1所示。初始化等待中断有中断否?进入按键中断程序1s定时中断?按键中断?进入1秒定时中断程序图4.1.1 主程序流程图4.2 led时间显示和红绿灯控制 led时间显示和红绿灯控制子程序的流程图如图4.2.1所示。关中断,保护现场计时器减1输出计时器计数值大于黄灯显示时间否?计时器计数值大于黄灯显示时间否?黄灯显示闪烁效果显示状态a显示状态c黄灯显示闪烁效果显示方式取反显示方式比较计时器计数值为0否?恢复现场,开中断退出yyynnnway=0way=1图4.2.1 led时间显示和红绿灯控制程序流程图4.3 键盘 键盘在本系统中是设置不同路段和时间段的通行时间的人机接口,键盘子程序的流程图如图4.3.1所示。初始化,保护现场,关中断判断是否有键按下?按键为s#灯延长1s #灯缩短1s恢复现场,开中断退出nnyy5s内是否有键按下?图4.3.1 键盘子程序流程图五、系统调试与仿真5.1 软件调试(1)调试环境 本次软件调试软件为masm for windows集成实验环境共享版。(2)调试步骤 1、导入源程序到masm for windows集成实验环境,截图如图5.1.1所示。图5.1.1 导入源程序到编译环境2、编译源程序在程序运行前,源程序必须先通过编译,生成obj文件,同时可以观察源程序是否有语法错误。源程序编译的截图如图5.1.2所示。3、生成exe文件 程序正式运行前,源程序必须通过编译生成obj文件,再生成exe文件。源程序生成exe文件的截图如图5.1.3所示。(3)调试时间 2007-1-4 19:30图5.1.2 编译源程序图5.1.3 生成exe文件六、设计结论 本次设计的交通信号灯控制基本上可以实现课题所要求的功能。在设计之初,考虑到现实中的一些实际情况,于是在本设计中附加了一个键盘模块。键盘模块主要是根据不同的路段和时间段实现对车辆通行时间的设定,以改善车辆通行状况。由于自身知识水平以及现实条件的限制,不能很好的对系统的可行性进行验证分析。 七、实习体会为期两周的微机原理及应用实习已经告一段落,回首两周所作的工作,感受颇多。总结起来有4点: 1、本次设计得出一点小体会。本次设计的工作顺序是:大致确定各个芯片的工作方式、画硬件电路图、以表格形式编写各个芯片的地址和控制字、确定主程序流程图、确定子程序流程图、编写各子程序、编写主程序。发现这种工作顺序的一个有点就是前后联系紧密,且不容易漏掉事项,最重要的是似乎自身站在一个最高点,总揽全局,这对自身来说是很重要的,因为设计思路一直保持清晰,不会走弯路或少走弯路。2、凡事需量力而行。量力而行首先体现在选课题时,选课题要根据自身知识水平来进行。虽说只是一次课程设计,但也有其实现难度。运用自身最熟悉的知识完成一次设计,未必不是件有意义的事。因为既提高自身对已学知识的进一步掌握,又可以增加对学习该门课程的信心。量力而行还体现在课题功能的扩充问题上。课题要求的基本功能是根本,放弃根本而去追求上层的枝干可能让自己碰壁受挫。当反过头去实现基本功能时,都会觉得有难度。可谓为捡芝麻丢了西瓜,但结果是什么也没有捡到。 3、在作设计前,信心十足,希望把这次设计作的尽量完美一些。但在实现起来感觉到困难重重,很多内容不是自己怎么想的就可以怎么实现。这需要耐心和恒心不断的摸索和论证,如一种工作方式的确定,它涉及到多方面的内容,需学会怎么协调,怎么取舍。 4、这点也是最重要的,在做一件事之前如果觉得自己做不好,那肯定做不好,因为在战争还未开始就已经认输了,做事时肯定没什么信心。总之,这次实习有辛酸也有收获。芯片及其对应端口8086地址口a158a7a6a5a4a3a2a1a0十六进制地址8255aa口111010000ffd0hb口111010010ffd2hc口111010100ffd4h控制字111010110ffd6h8259a偶地址111000100ffc4h奇地址111000110ffc6h8253a计数器0111001000ffc8h计数器1111001010ffcah计数器2111001100ffcch控制字111001110ffceh表1 所有芯片的编址表表2 所有芯片的控制字表表3 东西南北四方向的交通灯的亮灭逻辑表附录芯片及对应控制字控制字d7d6d5d4d3d2d1d0十六进制8259aicw1000110111bhicw21000000080hicw40000010105hocw111111100fchocw20010011127h8253a控制字00011010135h控制字10111010175h8255a工作方式1000100189h置位复位011111119fh道路状态黄灯2绿灯2红灯2黄灯1绿灯1红灯1pb7pb6pb5pb4pb3pb2pb1pb0十六进制a11011110dehb10111110behc11101101edhd11101011ebh附:1东西方向; 2南北方向a东西方向的车禁止通行;南北方向的车可以通行(红灯1、绿灯2亮)b东西方向的车禁止通行;南北方向的车可以通行(红灯1、黄灯2亮)c东西方向的车可以通行;南北方向的车禁止通行(绿灯1、红灯2亮)d东西方向的车可以通行;南北方向的车禁止通行(黄灯1、红灯2亮)电路原理图源程序主程序datas segment ;此处输入数据段代码time db 23h ;初始化红灯亮时间为35秒redtime db 23h ;初始化红灯亮时间为35秒ytime db 05h ;初始化黄灯亮时间为5秒way db 00hdatas endsstacks segment para stackstack;此处输入堆栈段代码db 100 dup (?)stacks endscodes segment assume cs:codes,ds:datas,ss:stacksstart proc farbegin:push ds ;定义数据段 mov ax,0 push ax mov ax,datas mov ds,ax ;8253初始化;一秒定时,计数器初值由时钟频率决定,本次计数时钟的频率为cpu时钟的1/2,即2.5mhzmov dx, 0ffcehmov al,35h ;将通道0设置成工作方式2,十进制计数,先读写低8位后读写高8位out dx,almov dx,0ffc8h ;设置通道0的计数初值mov al,88h ;先发送低8位后发送高8位(5000的十六进制为1388h) out dx,al mov al,13hout dx,almov dx, 0ffcehmov al,75h ;将通道1设置成工作方式2,十进制计数,先读写低8位后读写高8位out dx,almov dx,0ffcah ;设置通道1的计数初值mov al,0f4h ;先发送低8位后发送高8位(500的十六进制为1f4h) out dx,almov al,01hout dx,almov dx, 0ffcehmov al,35h ;将通道2设置成工作方式2,十进制计数,先读写低8位后读写高8位out dx,almov dx,0ffc8h ;设置通道2的计数初值mov al,88h ;先发送低8位后发送高8位(5000的十六进制为1388h) out dx,al mov al,13hout dx,al;8255初始化mov dx, 0ffd6hmov al,89h ;设置8255a的工作方式:a口、b口、c口均工作于方式0out dx,al;8259初始化;送8259a的控制字mov dx,0ffc4h ;将8259控制字的偶地址送给dxmov al,1bh ;将icw1 的控制字送给alout dx,al ;发送icw1mov dx,0ffc6h ;将8259控制字的奇数地址送给dxmov al,80h ;将icw2 的控制字送给alout dx,al ;发送icw2mov al,05h ;将icw4 的控制字送给alout dx,al ;发送icw4;送8259a的状态字mov al,0fch ;发送ocw1,屏蔽除ir0、ir1外所有的中断mov dx,0ffc6h ;ocw1必须发送到奇地址端口out dx,almov al,27h ;发送ocw2,工作方式为普通eoi mov dx,0ffc4h ;ocw2必须发送到偶地址端口out dx,al;8253a产生秒中断向量定义mov ax,0 mov es,axmov bx,80*4 ; 中断类型号为80mov ax,offset yimiao1 ; 取1s计时中断子程序的偏移地址mov es:word ptrbx,ax ; 将偏移地址存到es的2个低字节地址mov ax,seg yimiao1 ; 取1s计时中断子程序的段地址mov es:word ptrbx+2,ax ; 将段地址存到es的2个高字节地址;按键中断向量定义mov ax,0mov es,axmov bx,82h*4 ; 中断类型号为82mov ax,offset anjian ; 取修改红绿灯持续时间子程序的偏移地址mov es:word ptrbx,ax ; 将偏移地址存到es的2个低字节地址mov ax,seg anjian ; 取修改时间子程序的段地址mov es:word ptrbx+2,ax ; 将段地址存到es的2个高字节地址;初始化8255a各口mov al, time ;初始化8255a的a口,初始状态为显示总时间mov dx,0ffd0h ;取a口地址out dx,almov al,0eeh ;初态设置为东西南北四方向的红灯全亮mov dx,0ffd2h ;取b口地址out dx,almov al,0ffh ;设置c口为全高电平mov dx,0ffd4h ;取c口地址out dx,alsti ; 开中断 here:jmp here ; 等待中断,中断产生后,进入中断子程序 jmp here ;中断完成后继续等待下一次中断ret start endp;8253a产生秒中断yimiao1 proc farcli ; 关中断push ax ; 保护现场push bxpush cxpush dxmov al,time dec al ;产生一秒中断将al减1(与时间显示无关系) mov time,al ;将变化的时间覆盖原时间 ;将时间送到a口显示mov dx,0ffd0h ;取a口的地址out dx,al ;将倒计时在a口的led上显示出来mov al,way ;比较是何种方式cmp al,0 ;方式0为东西方向禁止通行,否则为南北方向禁止通行jz way0 ;相等跳至方式0mov al,timemov ah,ytimecmp al,ah ;与黄灯时间比较(与时间显示无关系)jg bbb1 ;如果大于黄灯时间就执行bbb1,否则执行黄灯闪烁过程yflash1:mov al,0ebh ;南北方向禁止通行,东西方向允许通行,即表中的状态d mov dx,0ffd2h ;取b口地址out dx,al ;将状态d在b口上输出call delay ;产生30ms的延时, 使黄灯在亮时产生闪烁效果call delaycall delay mov al,0efh ;使黄灯灭,红灯继续亮mov dx,0ffd2h ;取b口地址out dx,al ;将闪烁效果在b口上输出jmp aaa0 ;跳至计时寄存器是否为0bbb1:mov al,0edh ;南北方向禁止通行,东西方向允许通行,即表中的状态cmov dx,0ffd2h ;取b口地址out dx,al ;将状态c在b口上输出jmp exit2way0: mov al,time mov ah,ytime cmp al, ah ;将黄灯亮的持续时间与计时器比较(与时间显示无关系)jg bbb0 ;如果大于就执行表中状态a,即转向bbb0,否则顺序执行黄灯闪烁过程yfalsh0:mov al,0beh; 南北方向允许通行,东西方向禁止通行,即表中的状态b mov dx,0ffd2h ;取b口地址out dx,al ;将表中状态b在b口上输出call delay ;产生20ms的延时, 使黄灯在亮时产生闪烁效果call delay mov al,0feh ;使黄灯灭,红灯继续亮mov dx,0ffd2h ;取b口地址out dx,al ;将闪烁效果在b口上输出aaa0: mov al,timecmp al,0 ;比较计时寄存器是否为0,即依次计时是否已经结束jnz exit2 ;不为0时,跳至退出.否则顺序执行mov al,waynot al ;将way取反,即改变下次计时方式mov way, aljmp exit2bbb0 :mov al,0deh ;南北方向禁止通行,东西方向允许通行,即表中的状态amov dx,0ffd2h ;取b口地址out dx,al ;将状态c在b口上输出exit2: pop dx ;恢复现场 pop cx pop bx pop ax sti ;开中断 ret yimiao1 endp;键盘中断程序anjian proc far ;按键中断子程序(修改红绿灯亮状态持续时间) push ax ;保护现场 push bx push cxpush dx cli ;关中断mov dx,0ffd4h ;将c口的地址送给dxin al,dx ;将c口的状态输入到al中mov ah,al ;将c口的状态保存到ah中call delay ;调用10ms延时程序,用于键盘消抖mov dx,0ffd4h ;将c口的地址送给dxin al,dx ;将c口的状态输入到al中mov ah,al ; 取完键值后,先将其保存到ah中 mov al,0ffh ;保存键值后,将8255a的c口设置为高电平mov dx,0ffd4h ;为下一次按键的到来做准备out dx,almov al,ahcmp al,0feh ;判断键值是否为s1jz changered ;键值是否为s1时转向修改红灯持续亮时间cmp al,0fdh ;判断键值是否为s2jz changeyellow ;键值是否为s2时转向修改黄灯持续亮时间jmp exit ;是一次干扰的话就退出 changered: mov bx,417 ;如果等待了5s没有按键按下的话就退出修改程序 mov cx,60000 ;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年9月广东广州市第十八中学招聘编外聘用制专任教师1人考试模拟试题及答案解析
- 2025年河北张家口察北管理区临时性公益岗考试模拟试题及答案解析
- 2025浙江丽水缙云县壶镇中学招聘代课教师4人备考模拟试题及答案解析
- 2025年安阳滑县特岗教师选岗分配实施考试模拟试题及答案解析
- 泸州市江阳区2025年医疗卫生辅助岗位招募测试相关事宜的备考考试题库附答案解析
- 2025年餐饮行业供应链整合与成本控制解决方案研究报告
- 2025上海市口腔医院工作人员公开招聘备考考试题库附答案解析
- 2025台州临海市公办幼儿园公开招聘编外聘用人员206人备考考试试题及答案解析
- 2025年三亚教育局直属学校招聘62人备考考试题库附答案解析
- 智慧物流配送体系2025年资金申请报告:物流行业信息化技术应用前景展望
- 导管室护理查房
- 【复习资料】08886会展心理学(章节串讲)
- 占道施工申请书怎么写范文
- 医院耗材SPD解决方案(技术方案)
- 室内工装施工方案
- 护理投诉案例分析医学课件
- 四川省家庭经济困难学生认定申请表(样表)
- Android移动应用开发高职PPT完整全套教学课件
- 中国哲学史教案
- 云计算技术及应用PPT完整全套教学课件
- 辽宁省房屋面积测量与计算细则修订稿
评论
0/150
提交评论