




免费预览已结束,剩余38页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
交通灯智能控制设计摘要 本文首先介绍了交通灯的发展历史,微型计算机的发展历史以及微机在各个领域的运用。接着主要对微机8086芯片及8255可编程并行i/o接口芯片的功能和工作原理做了比较详细的介绍,然后以这些芯片为中心器件来设计交通灯控制系统,实现了对红绿灯的燃亮和红绿灯燃亮时间的控制,显示时间通过8255输出,由双色led灯显示,本系统系统实用性强,操作简单。关键词:微机 交通灯 控制 41 第一章 绪论1.1交通灯的发展在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段,但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两种以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。1914年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。 当前,在世界范围内,一个以微电子技术,计算机和通信技术为先导的,以信息技术和信息产业为中心的信息革命方兴未艾。而计算机技术怎样与实际应用更有效的结合并有效的发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。本文主要从微机的应用上来实现十字路口交通灯智能化的管理,用以控制过往车辆的正常运作。1.2课题的提出随着社会经济的发展,马路上的车流量越来越大,很多时候会出现严重的拥堵,为了改善这种情况,我们就必须对交通灯系统进行改进,使它具有高度的智能化,使车水马龙能有条不紊的穿梭于马路上。本文利用微处理器实现了对交通灯的智能控制,包括对不同颜色交通灯的燃亮以及燃亮时间的控制,充分显示了交通灯系统的智能化对于车流控制的重要性。第二章 微型计算机概述2.1 微型计算机的发展第一阶段(19711973):典型的微型机以intel 4004和intel 4040为基础。微处理器和存储器采用pmos工艺,工作速度很慢。微处理器的指令系统不完整;存储器的容量很小,只有几百字节;没有操作系统,只有汇编语言。主要用于工业仪表、过程控制或计算器中。 第二阶段(19741977):以8位微处理器为基础,典型的微处理器有intel 8080/8085、zilog公司的z80及motorola公司的6800。微处理器采用高密度mos(hmos)工艺,具有较完整的指令系统和较强的功能。存储器容量达64kb,配有荧光屏显示器、键盘、软盘驱动器等设备,构成了独立的台式计算机。配有简单的操作系统(如cp/m)和高级语言。 第三阶段(19781981):以16位和准32位微处理器为基础,如intel公司的8086、motorola的68000和zilog的z8000。微处理器采用短沟道高性能nmos工艺。在体系结构方面吸纳了传统小型机甚至大型机的设计思想,如虚拟存储和存储保护。 第四阶段(20世纪80年代):80年代初,ibm公司推出开放式的ibm pc,这是微型机发展史上的一个重要里程碑。ibm pc采用intel 80x86(当时为8086/8088、80286、80386)微处理器和microsoft公司的ms dos操作系统并公布了ibm pc的总线设计。 第五阶段(20世纪90年代开始):risc(精简指令集计算机)技术的问世使微型机的体系结构发生了重大变革。 几十年来,随着物理元、器件的变化,不仅计算机主机经历了更新换代,它的外部设备也在不断地变革。比如外存储器,由最初的阴极射线显示管发展到磁芯、磁鼓,以后又发展为目前通用的磁盘,近几年出现了体积更小、容量更大、速度更快的只读光盘(cdrom)。微型计算机的发展 70年代以来,微型计算机的发展尤为迅速,几乎令人目不暇接。以采用intel微处理器芯片的微机主流机型的发展为例:1971年intel公司推出4位微处理器芯片4004及4040;1974年出现采用8位微处理器芯片8080的微机;1979年电脑巨人ibm公司介入微机行业,开发出采用准16位8088芯片的ibmpc兼容机。该系列微机不断地推陈出新,1982年推出采用16位微处理器芯片80286的微机;1989年推出80486微机。1993年,80586又问世了。出于专利保护的考虑,不再称8058,命名为pentium(简称p5,中文名“奔腾”)。 pentium芯片集成了 310万个晶体管,使用64位的数据总线。由于更新换代迅速,微机型号的生存周期也越来越短。据统计,自1982年以来,微机性能指标平均每一年半提高一倍,目前的微机性能指标已达到1982年时的200倍,1970年时的3000倍,而成本和价格则大幅度地降低了。计算机网络的发展: 近年来,计算机网络也得到持续不断的发展,并可大致分为四个阶段:1. 远程终端联机阶段2. 由大型主机利用通信线连接多个远程终端,组成联机系统。微型计算机网络得到广泛的应用和发展,出现了局域网(lan)、城域网(man)和广域网(wan)。 3.计算机网络互连阶段根据国际标准化组织(iso)公布的开放系统互连模型( osi)实现了网络间的互连,并产生了综合业务数字网(isdn)及无线通讯的卫星网。 4.信息高速公路阶段将把所有的计算机资源都用高速通信网连接起来,实现最大范围的信息资源共享。2.2计算机的发展趋势当前计算机发展的趋势是由大到巨(追求高速度、高容量、高性能),由小到微(追求微型化,包括台式、便携式、笔记本式乃至掌上型,使用方便,价格低廉),网络化,智能化。同时,现代计算机在许多技术领域都取得了极大的进步,比如多媒体技术、计算机网络、面向对象的技术、并行处理技术、人工智能、不污染环境并节约能源的“绿色计算机”等。许多新技术、新材料也开始应用于计算机,比如超导技术、光盘等。但毕竟还没有出现第五代计算机。日本于1981年宣布了雄心勃勃的研制五代机的计划,至今未能实现并搁浅了。至于什么是第五代计算机也尚无定论,但突破迄今一直沿用的冯诺依曼原理是必然趋势、前四代计算机是按构成电子计算机的主要元器件的变革划分的,第五代计算机可能是采用激光元器件和光导纤维的光计算机,也可能不是按元器件的变革作为更新换代的标志,而是按其功能的革命性突破作为标志,比如是能够处理知识和推理的人工智能计算机,甚至可能发展到以人类大脑和神经元处理信息的原理为基础的生物计算机等。总之,计算机的发展仍然是方兴未艾,其发展前景是极其广阔而诱人的。新观点划分阶段:目前,国内外的许多专家又对计算机发展的历史作了进一步的总结归纳,把计算机的发展粗略地划分为三个阶段。把从产生第一台机械式计算机至1946年第一台电子计算机eniac诞生以前称为近代计算机阶段,即机械式和机电式计算机阶段。将eniac问世以后传统大、中型机占主导地位的时期,按物理器件的变比划分为四代,称为传统大型机阶段。将微型计算机和计算机网络崛起后计算机与通信结合的时期,称为微机与网络阶段。2.3汇编语言指令系统中的指令,在计算机内存中,都是以二进制编码的形式存储的,这种编码称为机器码,或者称为机器指令.在程序运行时,指令由内存读入cpu,然后译码,执行.只有内存中的机器码,计算机才能执行. 现在,可以用指令助记符和表示地址或数据等的各种符号,按照规定的格式,来编制程序,这样的程序,称为汇编语言程序.这些表示指令,地址,数据等的符号以及有关规定,是计算机进行:“思想”的工具,亦即计算机汇编语言汇编语言源程序经过汇编程序的语法检查和翻译,形成二进制代码表示的目的码文件.如果源程序中有语法错误,汇编程序会指出错误的类型和出错所在的语句,以便用户重新进行编辑修改,再形成新的源程序.源文件和有其生成的目的码文件可以是一个或者是几个.2.3.1汇编语言程序结构汇编语言源程序通常由一个或几个程序模块组成,每个模块包括数据段,堆栈段和若干个代码段.有时程序中可以不设堆栈段,而利用系统中已设定的堆栈段.代码段中有若干个过程,过程又称子程序。过程中的语句分为两类,两类是指示性语句,另一类是指示性语句.指示性语句是计算机能执行的指令,而指示性语句,计算机并不能执行。汇编时,依据指示性语句的规定,汇编程序对源程序进行相应的处理操作,进行诸如定义数据、分配存储区、指示程序开始和结束等服务性工作,以减轻编程员的负担。指示性语句又成伪指令。这里,用等式表示程序和过程的结果内容: 程序=块数据段,堆栈段,代码段(过程1,过程2,),快过程=指示性语句,指令性语句指示性语句的格式如下: 名字 伪指令 操作数 ;注释例如: sum proc far ;定义一个过程 sum endp ;过程定义结束指令性语句的格式为: 标号:前缀指令助记符操作数;注释例如: lp1: mov bx , offset darea ;darea 的地址送bx语句中名字和符号,又称为符标识符,是程序员自己确定的,它不允许与指令助记符或伪指令同名,也不允许有数字打头,字符个数不得超过31个。第三章 芯片的选择与介绍3.1微机8086系统3.1.1 8086系统的内部结构:8086的功能结构如图3.1所示。 图3.11.总线接口部件biubiu是cpu与外部存储器及io的接口,负责与存储器和i0系统进行数据交换。 biu由下列各部分组成:4个16位段地址寄存器,即代码段寄存器cs,数据段寄存器ds,附加段寄存器es和堆栈段寄存器ss,它们分别用于存放当前代码段、数据段、附加段和堆栈段的段基址。段基址表示20位段起始地址的高16位,段起始地址的低4位固定是0。16位指令指针ip:ip用于存放下一条要执行指令的有效地址ea(即偏移地址),ip的内容由biu自动修改,通常是进行加1修改。当执行转移指令、调用指令时,biu装入ip中的是转移目的地址。偏移地址表示离段起始地址之间的距离,用字节数表示。如偏移地址=0064h,表示该地址距离段起始地址有100个字节,偏移地址为0就表示该地址为段起始地址。由段基址(段寄存器的内容)和偏移地址两部分构成了存储器的逻辑地址,如cs:ip=3000:2000h,cs:ip=0200:1020h等,都是逻辑地址。20位物理地址加法器:加法器用于将逻辑地址变换成读写存储器所需的20位物理地址,即完成地址加法操作。方法是将某一段寄存器的内容(代表段基址)左移4位(相当乘16)再加上16位偏移地址以形成20位物理地址。 6字节的指令队列:当执行单元eu正在执行指令中,且不需要占用总线时,biu会自动进行预取下一条或几条指令的操作,并按先后次序存入指令队列中排队,由eu按顺序取来执行。 总线控制逻辑:总线控制逻辑用于产生并发出总线控制信号,以实现对存储器和io端口的读写控制。它将cpu的内部总线与16位的外部总线相连,是cpu与外部打交道(读写操作)必不可少的路径。2.执行部件eu 执行部件eu的功能就是负责指令的执行。由图3.1可知,eu包括下列几个部分: 算术逻辑单元alu: alu完成16位或8位的二进制数的算术逻辑运算,绝大部分指令的执行都由alu完成。在运算时数据先传送至16位的暂存寄存器中,经alu处理后,运算结果可通过内部总线送入通用寄存器或由biu存入存储器。 标志寄存器fr:它用来反映cpu最近一次运算结果的状态特征或存放控制标志。fr为16位,其中7位未用。 通用寄存器组:它包括4个数据寄存器ax、bx、cx、dx,其中ax又称累加器,4个专用寄存器,即基址指示器bp、堆栈指示器sp、源变址寄存器si和目的变址寄存器di。eu控制器:它接收从biu中指令队列取来的指令,经过指令译码形成各种定时控制信号,向eu内各功能部件发送相应的控制命令,以完成每条指令所规定的操作。3.biu和eu的动作管理 biu和eu并不是同步工作的,但是两者的动作管理是有原则的。biu从内存取指令,并送到指令队列。取指令时的地址由代码段寄存器cs中的16位段基址的最低位后补4个0,再与指令指针ip中的16位偏移地址在地址加法器中相加得到20位物理地址。然后通过总线控制逻辑发出存储器读命令,从而rd启动存储器,从存储器中取出指令并送入指令队列供eu执行。biu必须保证指令队列始终有指令可供执行。指令队列允许预取指令代码,当指令队列有2个字节的空余时,biu将自动取指令到指令队列。eu是直接从biu的指令队列中取指令执行,由于指令队列中至少有一个字节的指令,eu就不必因取指令而等待。在eu执行指令过程中需要取操作数或存结果时,先向biu发出请求,并提供操作数的有效地址,biu将根据eu的请求和提供的有效地址,形成20位的物理地址并执行一个总线周期去访问存储器或io端口,从指定存储单元或io端口取出操作数送交eu使用或将结果存入指定的存储单元或io端口。如果biu已准备好取指令但同时又收到eu的申请,则biu先完成取指令的操作,然后进行操作数的读写。 当eu执行转移、调用和返回指令时,biu先自动清除指令队列,再按eu提供的新地址取指令。biu新取得的第一条指令将直接送到eu中去执行。然后,biu将随后取得的指令重新填入指令队列。早期的微处理器中,程序的执行是由取指和执行指令交替进行的,取指期间,cpu必须等待。如图3.2(a)所示,指令的提取和执行是串行进行的。在8086中,由于eu和biu两部分是按流水线方式并行工作的,在eu执行指令的过程中,biu可以取出多条指令,放进指令流队列中排队。eu仅仅从biu中的指令队列中不断地取指令并执行指令,因而省去了访问内存取指令的时间,加快了程序运行速度。这也正是8086cpu成功的原因之一。它的执行过程如图3.2(b)所示,取指令和执行指令由两套不同的机构同时进行。 3.1.2 8086的寄存器结构8086cpu的寄存器结构如图3.3所示。8086cpu内部有14个16位寄存器,可以分为以下三组:1通用寄存器组通用寄存器可以分为两组:数据寄存器和地址指针与变址寄存器。(1)数据寄存器数据寄存器包括ax、bx、cx、dx等4个16位寄存器,主要用来保存算术、逻辑运算的操作数、中间结果和地址。它们既可以作为16位寄存器使用,也可以将每个寄存器高字节和低字节分开作为两个独立的8位寄存器使用。而8位寄存器(al、bl、cl、dl、ah、bh、ch、dh)只能用于存放数据。(2)地址指针和变址寄存器 地址指针和变址寄存器组包括sp、bp、si和di等4个16位寄存器。它们主要是用来存放或指示操作数的偏移地址。 堆栈指针sp中存放的是当前堆栈段中栈顶的偏移地址。堆栈操作指令push和pop就是从sp中得到操作数的段内偏移地址的。 bp是访问堆栈时的基址寄存器。bp中存放的是堆栈中某一存储单元的偏移地址,sp、bp通常和ss联用。 si和di称为变址寄存器。它们通常与ds联用,为程序访问当前数据段提供操作数的段内偏移地址。si和di除作为一般的变址寄存器外,在串操作指令中si规定用作存放源操作数(即源串)的偏移地址,称为源变址寄存器;di规定用作存放目的操作数(目的串)的偏移地址,故称之为目的变址寄存器,二者不能混用。由于串操作指令规定源字符串必须位于当前数据段ds中,目的串必须位于附加段es中,所以si和di中的内容分别是当前数据段和当前附加段中某一存储单元的偏移地址。当si、di和bp不作指示器和变址寄存器使用时,也可将它们当作一般数据寄存器使用,存放操作数或运算结果。 以上8个16位通用寄存器在一般情况下都具有通用性,但是,为了缩短指令代码的长度,某些通用寄存器又规定了专门的用途。例如,在字符串处理指令中约定必须用cx作为计数器存放串的长度。这样,在指令中就不必给出cx寄存器名,缩短了指令长度,简化了指令的书写形式,这种使用方法称为“隐含寻址”。隐含寻址实际上就是在指令中隐含地使用了一些通用寄存器,而这些通用寄存器不直接在指令中表现出来。 表3.1 8086cpu中通用寄存器的特殊用途和隐含性质ax,al在输入输出指令中作数据寄存器不能隐含乘法指令中存放被乘数和乘积,除法指令中存放被除数和商隐含ah在lahf指令中,作目标寄存器用隐含在十进制运算指令中作累加器用隐含al在xlat指令中作累加器用隐含bx在间接寻址中作基址寄存器用不能隐含在xlat中作基址寄存器用 隐含cx在串操作指令和loop指令中作计数器用隐含cl在移位循环移位指令中作移位次数计数器用 不能隐含dx在字乘法除法指令中存放乘积高位或被除数高位或余数隐含在间接寻址的输入输出指令中作地址寄存器用 不能隐含si在字符串运算指令中作源变址寄存器用 隐含在间接寻址中作变址寄存器用 不能隐含di在字符串运算指令中作目的寄存器用 隐含在间接寻址中作变址寄存器用 不能隐含bp在间接寻址中作基址指针用 不能隐含sp在堆栈操作中作堆栈指针用 隐含2段寄存器组8086cpu可直接寻址lmb的内存空间。直接寻址时需要20位地址码,而所有的内部寄存器,包括段寄存器,都是16位的,用它们作地址寄存器,只能直接寻址64kb单元。因此,在8086cpu中采用了存储空间分段技术来解决这一矛盾。将lmb的存储空间分成若干个逻辑段,每段最大长度为64kb。这些逻辑段可在整个lmb存储空间内浮动,但是段的起始地址必须能被16整除。这样对于20位的段起始地址,其低4位为0,可暂时先忽略,而只有高16位是有效数字,可存放于16位的寄存器中。在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后与16位偏移量相加,如图3.4所示。在形成物理地址时,究竟是取哪一个段寄存器的内容做段基址,这取决于cpu做何操作。对于取指操作,是将当前cs中的内容左移4位(相当乘16)再加上ip的内容,形成20位指令地址;对于存取数据操作,是将当前数据段寄存器ds中的段基址左移4位,再与16位偏移地址ea相加,形成20位的物理地址;对于压栈和弹栈操作,是将当前堆栈段寄存器ss中的段基址左移4位,再与sp相加,形成20位的物理地址;在对目的串操作时,是以当前附加段寄存器es中的段基址左移4位,再与di相加以形成20位的物理地址。上述各种操作所选取的段寄存器称为基本段约定。除了基本段约定之外,8086还允许部分改变基本段约定,如存取数据的基本段为数据段,但可以临时改变为代码段、或附加段、或堆栈段,即数据不仅可在数据段,还可在代码段、附加段和堆栈段中。这种情况称为段超越。8086的基本段约定和允许的段超越如表3.2所示。表中的“无”表示不允许修改。表3.2 8086的基本段约定和允许的段超越cpu执行的操作基本段约定允许修改的段偏移地址取指令cs无ip压栈、弹栈ss无sp源串dscs,es,sssi目的串es无di通用数据读写dscs,es,ss有效地址eabp作间址寄存器sscs,ds,es有效地址ea 3控制寄存器(1)指令指针ip在总线接口部件biu中设置了一个16位的指令指针寄存器ip,其作用是用来存放将要执行的下一条指令在现行代码段中的偏移地址。程序运行中,ip的内容由biu自动修改,使ip始终指向下一条将要执行的指令地址。因此,ip实际上起着控制指令流的执行流程,是一个十分重要的控制寄存器。正常情况下,程序是不能直接访问(修改)ip的内容的,但当需要改变程序执行顺序时,如遇到中断指令或调用指令时,ip中的内容将被自动修改。(2)标志寄存器fr标志寄存器fr也称程序状态字寄存器(简写为psw),用来存放指令执行结果特征。8086cpu中设置了一个16位标志寄存器,位于eu单元中,实际只用了9位。标志寄存器的具体格式如图3.5所示。9位标志分为两类。15 0ofdfiftfsfzfafpfcf图3.5 标志寄存器格式状态标志:状态标志位有6个,由cpu在运算过程中自动置位或清零,用来表示运算结果的特征。除cf标志外,其余5个状态标志一般不能直接设置或改变。 1)cf(carry flag)进位标志。当算术运算结果使最高位(对字节操作是d7位,对字操作是d15位)产生进位或借位时,则cf=1;否则cf 0。循环移位指令执行时也会影响此标志。 2)pf(parity flag)奇偶标志。若本次运算结果中的低8位含有偶数个1,则pf=1;否则 pf0。 3)af(auxiliary carry flag)辅助进位标志。本次运算过程中若d3位有进位或借位时,af1;否则af0。该标志用于bcd运算中的十进制调整。 4)zf(zero flag)零标志。若本次运算结果为0,则zf1;否则zf0。 5)sf(sign flag)符号标志。它总是与运算结果的最高有效位相同,用来表示带符号数本次运算结果是正还是负。 6)of(overflow flag)溢出标志。当带符号数的补码运算时,结果超出了机器所能表达的范围时,就会产生溢出,这时溢出标志位of1。具体来说,就是当带符号数字节运算的结果超出了-128+127的范围;或者字运算时的结果超出了-32768+32767的范围,称为溢出。控制标志:控制标志是用来控制cpu的工作方式或工作状态的标志。用户可以使用指令设置或清除。 1)if(interrupt flag) 中断允许标志。它是控制可屏蔽中断的标志,如if=1时,允许cpu响应可屏蔽中断;当if=0时,即使外设有中断申请,cpu也不响应,即禁止中断。 2)df(direction flag) 方向标志。该标志用来控制串操作指令中地址指针的变化方向。在串操作指令中,若df0,地址指针为自动增量,即由低地址向高地址进行串操作;若df1,地址指针自动减量,即由高地址向低地址进行串操作。3)tf(trap flag)单步标志。tf1时,cpu为单步方式,即每执行完一条指令就自动产生一个内部中断,使用户可逐条跟踪程序进行调试。若tf0时,cpu正常执行程序。3.2 8086的引脚信号及工作模式8086cpu采用40个引脚的双列直插式封装形式。图3.6是8086引脚图。 图3.6 8086引脚图 8086cpu属高性能微处理器。为了解决功能多与引脚少的矛盾,8086cpu采用了引脚复用技术,使部分引脚具有双重功能。这些双功能引脚的功能转换分两种情况:一种是采用了分时复用的地址/数据总线;另一种是根据不同的工作模式定义不同的引脚功能。3.2.1 8086的引脚及其功能 (1) gnd,vcc(输入)gnd为接地端,vcc为电源端。8086cpu采用的电源为5v10。(2) adl5ad0(addressdata bus)地址数据复用总线(双向、三态)cpu访问一次存储器或i/o端口称完成一次总线操作,或执行一次总线周期。一个总线周期通常包括t1、t2、t3、t4四个t状态。在每个状态cpu将发出不同的信号。adl5ad0作为复用引脚,在总线周期的t1状态,cpu在这些引脚上输出要访问的存储器或i0端口的地址。在t2t3状态,如果是读周期,则处于浮空(高阻)状态,如果是写周期,则为传送数据。在中断响应及系统总线处于“保持响应”周期时,adl5ad0都被浮置为高阻抗状态。 (3) a19s6a16s3(addressstatus)地址状态复用线(输出、三态) 这4根引脚也是分时复用引脚。在总线周期的t1状态,用来输出地址的最高4位,在总线周期的其他状态(t2,t3和t4状态),用来输出状态信息。s6总是为0,表示8086cpu当前与总线相连。s5表明中断允许标志的当前设置。如果ifl,则s51,表示当前允许可屏蔽中断;如果if0,则s50,表示当前禁止一切可屏蔽中断。s4和s3状态的组合指出当前正使用哪个段寄存器,具体规定如表3.4所示。当系统总线处于“保持响应”周期时,a19/s6al6/s3被置为高阻状态。表3.3 s4和s3的组合及对应含义s4s3当前正使用的段寄存器 00附加段寄存器 01堆栈段寄存器 10代码段寄存器或未使用任何段寄存器11数据段寄存器(4) ble/s7(bus high enablestatus)高8位数据总线允许状态复用引脚(输出、三态)这是8086cpu上的一个复用信号,低电平表示高8位数据有效。在总线周期的t1状态,8086在 bhes7脚输出低电平,表示高8位数据总线adl5ad8上的数据有效;若ble/s7脚输出高电平,表示仅在低8位数据总线ad7ado上传送8位数据。 在总线周期的t2,t3,t4状态, bhes7引脚输出状态信号,但在8086芯片设计中,没有赋予s7实际意义。在“保持响应”周期 ble被置成高阻抗状态。(5) nmi(non-maskable interrupt)非屏蔽中断输入信号(输入) 该信号边沿触发,上升沿有效。此类中断请求不受中断允许标志if的控制,也不能用软件进行屏蔽。所以该引脚上由低到高的变化,就会在当前指令结束后引起中断。nmi中断经常由电源掉电等紧急情况引起。 (6) intr(interrupt request)可屏蔽中断请求信号(输入) 高电平有效。当intr信号变为高电平时,表示外部设备有中断请求,cpu在每个指令周期的最后一个t状态检测此引脚,一旦测得此引脚为高电平,并且中断允许标志位if=1,则cpu在当前指令周期结束后,转入中断响应周期。 (7) clk(clock)时钟输入信号(输入) clk时钟信号提供了cpu和总线控制的基本定时脉冲。8086cpu要求时钟信号是非对称性的,要求占空比为33,它由时钟发生器产生。8086cpu的时钟频率有以下几种:8086为5mhz;8086-1为10mhz;8086-2为8mhz。 (8) rd(read)读信号(输出、三态) 低电平有效,表示cpu正在对存储器或i/o端口进行读操作。具体是对存储器读,还是对i/o端口读,取决于mio信号。在读总线周期的t2,t3状态,rd均保持低电平,在“保持响应周期”它被置成高阻抗状态。 (9)reset复位信号(输入)高电平有效,至少要保持4个时钟周期的高电平,才能停止cpu的现行操作,完成内部的复位过程。在复位状态,cpu内部的寄存器初始化,除cs=ffffh外,包括ip在内的其余各寄存器的值均为0。故复位后将从ffff:0000h的逻辑地址,即物理地址ffff0h处开始执行程序。一般在该地址放置一条转移指令,以转到程序真正的入口地址。当复位信号变为低电平时,cpu重新启动执行程序。 (10) ready(ready)准备就绪信号(输入)则cpu在t3和t4之间自动插入一个或几个等待状态tw来延长总线周期,直到检测到ready为高电平后,才使cpu退出等待进入t4状态,完成数据传送。插入一个tw后的总线周期为五个t状态:t1、t2、t3、tw、t4. (11) test(test)测试信号(输入) 与等待指令wait配合使用。当cpu执行wait指令时,cpu处于空转等待状态,它每5个时钟周期检测一次test引脚。当测得test为高电平,则cpu继续处于空转等待状态;当 test变为低电平后,就会退出等待状态,继续执行下一条指令。test信号用于多处理器系统中,实现8086主cpu与协处理器(8087或8089)间的同步协调功能。 (12) mnmx(minimummaximum mode control)模式控制信号(输入) 由该引脚选择最大或最小模式。当此引脚接+5v(高电平)时,cpu工作于最小模式;若接地(即为低电平时),cpu工作于最大模式。 以上12类共32个引脚是8086cpu工作在最小模式和最大模式时都要用到的信号,是公共引脚信号。还有8个引脚信号(第2431号引脚)在不同模式下有不同的名称和定义,是双功能引脚。 (13)mio (memoryinput and output)存储器或输入、输出操作选择信号(输出、三态)这是cpu工作时会自动产生的输出信号,用来区分cpu当前是访问存储器还是访问端口。当mio为高电平时,表示cpu当前访问存储器;当mio为低电平时,表示当前cpu访问io端口。mio信号一般在前一个总线周期的t4状态就可以产生有效电平,在新总线周期中,mio一直保持有效直至本周期的t4状态为止。在dma方式时,m io为高阻状态。(14)den (data enable)数据允许信号(输出、三态) 作为双向数据总线收发器8286/8287的选通信号。它在每一次存储器访问或io访问或中断响应周期有效。此信号只用于最小模式。在dma方式时,此引脚为高阻状态。(15)dt r (data transmitreceive)数据发送/接收控制信号(输出、三态)在使用8286/8287作为数据总线收发器时,8286/8287的数据传送方向由dtr控制。dt r1时,数据发送;dtr0时,数据接收。在dma方式时,dtr为高阻状态。此信号只用于最小模式。 (16) wr (write)写信号(三态、输出)在最小模式下作为写信号, wr信号表示cpu当前正在对存储器或io端口进行写操作,由mio来区分是写存储器还是写io端口。对任何总线“写”周期,wr只在t2,t3,tw期间有效。在dma方式时, wr被置成高阻状态。 (17) inta (interrupt acknowledge)中断响应信号(输出、三态) 在最小模式下,inta是cpu响应可屏蔽中断后发给请求中断的设备的回答信号,是对中断请求信号intr的响应。cpu的中断响应周期共占据两个连续的总线周期,在中断响应的每个总线周期的t2、t3和tw期间inta引脚变为有效低电平。第一个inta负脉冲通知申请中断的外设,其中断请求已得到cpu响应;第二个负脉冲用来作为读取中断类型码的选通信号。外设接口利用这个信号向数据总线上送中断类型码。 (18)ale(address latch enable)地址锁存允许信号(输出) 在最小模式下,是8086cpu提供给地址锁存器82828283的控制信号,在任何一个总线周期的t1状态,ale输出有效电平(实际是一个正脉冲),以表示当前地址/数据、地址/状态复用总线上输出的是地址信息,并利用它的下降沿将地址锁存到锁存器。ale信号不能浮空。 (19)hold(hold request)总线保持请求信号(输入)该信号是最小模式系统中除主cpu(80868088)以外的其他总线控制器,如dma控制器申请使用系统总线请求信号。(20)hlda(hold acknowledge)总线保持响应信号(输出) 该信号是对hold的响应信号。当cpu测得总线请求信号hold引脚为高电平,如果cpu又允许让出总线,则在当前总线周期结束时,t4状态期间发出hlda信号,表示cpu放弃对总线的控制权,并立即使三条总线(地址总线、数据总线、控制总线,即所有的三态线)都置为高阻抗状态,表示让出总线使用权。申请使用总线的控制器在收到hlda信号后,就获得了总线控制权。在此后的一段时间内,hold和hlda均保持高电平。当获得总线使用权的其他控制器用完总线后,使hold信号变为低电平,表示放弃对总线的控制权。8086cpu检测到hold变为低电平后,会将hlda变为低电平,同时恢复对总线的控制。 (21) s2, s1,s0 (bus cycles status)总线周期状态信号(输出、三态)在最大模式下,这三个信号组合起来指出当前总线周期所进行的操作类型,如表3.5所示。最大模式系统中的总线控制器8282就是利用这些状态信号产生访问存储器和io端口的控制信号。表3.4 s2,s1,s0组合产生的总线控制功能控制信号操作过程000发中断响应信号001读i/o端口010,写i/o端口011暂停100取指令101读内存110,写内存111无源状态 当 s2, s1,s0中至少有一个信号为低电平时,每一种组合都对应了一种具体的总线操作,因而称之为有源状态。这些总线操作都发生在前一个总线周期的t4状态和下一总线周期的t1、t2状态期间;在总线周期的t3(包括tw)状态,且准备就绪信号ready为高电平时, s2, s1,s0三个信号同时为高电平(即111),此时一个总线操作过程将要结束,而另一个新的总线周期还未开始,通常称为无源状态。而在总线周期的最后一个t4状态,s2, s1,s0中任何一个或几个信号的改变,都意味着下一个新的总线周期的开始。 (22) rq/gt1,rq/gt0 (requestgrant)总线请求信号总线请求允许信号(输入 / 输出) 这两个引脚是双向的,信号为低电平有效。这两个信号是最大模式系统中主cpu8086和其他协处理器(如8087,8089)之间交换总线使用权的联络控制信号。其含义与最小模式下的hold和hlda两信号类同。但hold和hlda是占两个引脚,而rqgt(请求允许)是出于同一个引脚。rq/gt1和rq/gt0是两个同类型的信号,表示可同时连接两个协处理器,其中rq/ gt0的优先级高于rq/gt1。 (23) lock(lock)总线封锁信号(输出、三态) 当 lock为低电平时,表明此时cpu不允许其他总线主模块占用总线。lock信号由指令前缀lock产生。当含有lock指令前缀的指令执行完后,lock引脚变为高电平,从而撤消了总线封锁。此外,在8086cpu处于2个中断响应周期期间,lock信号会自动变为有效的低电平,以防止其他总线主模块在中断响应过程中占有总线而使一个完整的中断响应过程被间断。在dma期间,lock被置为高阻状态。 (24)qs1,qs0(1nstruction queue status)指令队列状态信号(输出) qs1,qs0两信号用来指示cpu内的指令队列的当前状态,以使外部(主要是协处理器8087)对cpu内指令队列的动作进行跟踪。qsl,qs0的组合与指令队列的状态对应关系如表3.5所示。表3.5 qsl,qs0的组合和对应的含义qslqs0性 能00无操作01队列中操作码的第一个字节10队列空11队列中非第一个操作码字节3.3 8255芯片简介 intel8255是一种通用的可编程并行io接口芯片,是专为intel公司的微处理器设计的,也可用于其它系列的微型机系统中。利用8086汇编指令系统,编制初始化程序,。3.3.1 8255a的引脚与结构18255a的引脚8255a是可编程的并行输入输出接口芯片,它具有三个8位并行端口(a口、b口和c口),具有40个引脚,双列直插式封装,由+5v供电,其引脚与功能示意图如图3.7所示。图3.7 8255a的引脚图 pa、pb、pc三个端口各有8条端口i/o线:pa7pa0,pb7pb0和pc7pc0,共24个引脚,用于8255a与外设之间的数据(或控制、状态信号)的传送。 d7d0:8位三态数据线,接至系统数据总线。cpu通过它实现与8255之间数据的读出与写入,控制字的写入,以及状态字的读出等操作。 a1a0:地址信号。a1和a0经片内译码产生四个有效地址分别对应a、b、c三个独立的数据端口以及一个公共的控制端口。在实际使用中,a1、a0端接到系统地址总线的 a1、a0。 cs:片选信号,由系统地址译码器产生,低电平有效。 读写控制信号rd和wr:低电平有效,用于决定cpu和8255a之间信息传送的方向:当rd=0时,从8255a读至cpu;当wr=0时,由cpu写入8255a。cpu对8255各端口进行读/写操作时的信号关系如表3.6所示。 reset:复位信号,高电平有效。8255a复位后,a、b、c三个端口都置为输入方式。 表3.6 8255a各端口读/写操作时的信号关系 :cs rdwr a a 操作 0 1 0 0 0写端口a 0 1 0 0 1写端口b 0 1 0 1 0写端口c 0 1 0 1 1写控制寄存器 0 0 1 0 0 读端口a 0 0 1 0 1 读端口b 0 0 1 1 0 读端口c 0 0 1 1 1 无操作28255a的内部结构 8255a的内部结构框图如图3.8所示,其内部由以下四部分组成。图3.8 8255a的内部结构框图 1) 端口a、端口b和端口c 端口a、端口b和端口c都是8位端口,可以选择作为输入或输出。还可以将端口c的高4位和低4位分开使用,分别作为输入或输出。当端口a和端口b作为选通输入或输出的数据端口时,端口c的指定位与端口a和端口b配合使用,用做控制信号或状态信号。 2) a组和b组控制电路 这是两组根据cpu送来的工作方式控制字控制8255工作方式的电路。它们的控制寄存器接收cpu输出的方式控制字,由该控制字决定端口的工作方式,还可根据cpu的命令对端口c实现按位置位或复位操作。 3) 数据总线缓冲器 这是一个8位三态数据缓冲器,8255a正是通过它与系统数据总线相连,实现8255a与cpu之间的数据传送。输入数据、输出数据、cpu发给8255a的控制字等都是通过该部件传递的。 4) 读/写控制逻辑 读/写控制逻辑电路的功能是负责管理8255a与cpu之间的数据传送过程。它接收cs及地址总线的信号a1、a0和控制总线的控制信号reset、wr、rd,将它们组合后,得到对a组控制部件和b组控制部件的控制命令,并将命令送给这两个部件,再由它们控制完成对数据、状态信息和控制信息的传送。各端口读/写操作与对应的控制信号之间的关系见表3.6。 3.3.2 8255a的工作方式与控制字18255a的工作方式 8255a在使用前要先写入一个工作方式控制字,以指定a、b、c三个端口各自的工作方式。8255a共有三种工作方式: 方式0基本输入输出方式,即无须联络就可以直接进行8255a与外设之间的数据输入或输出操作。a口、b口、c口的高4位和低4位均可设置为方式0。 方式1选通输入输出方式,此时8255a的a口和b口与外设之间进行输入或输出操作时,需要c口的部分i/o线提供联络信号。只有a口和b口可工作于方式1。 方式2选通双向输入输出方式,即同一端口的i/o线既可以输入也可以输出,只有a口可工作于方式2。此种方式下需要c口的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业月子中心管理制度
- 丽江大棚灌溉管理制度
- 人员岗位变动管理制度
- 企业现场文明管理制度
- 万达公司会计管理制度
- 为何制定公司管理制度
- 义务阶段资助管理制度
- 为啥实行静默管理制度
- 企业加班日常管理制度
- 产品标识标注管理制度
- 《教育学原理》马工程教材第二章教育与社会发展
- 西藏农村公路管理办法
- 野外生存优秀课件
- 国际投资学教程(第四版)綦建红答案
- 福建省福州市福建师大附中2023年自主招生样卷--数学试卷
- GB/T 16622-2022压配式实心轮胎规格、尺寸与负荷
- GB/T 3620.1-2016钛及钛合金牌号和化学成分
- GB/T 2878.2-2011液压传动连接带米制螺纹和O形圈密封的油口和螺柱端第2部分:重型螺柱端(S系列)
- GB/T 23764-2009光催化自清洁材料性能测试方法
- GB/T 20160-2006旋转电机绝缘电阻测试
- GB/T 14699.1-2005饲料采样
评论
0/150
提交评论