版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、首先回顾一下输入输出指令 IN AL/AX,端口地址 OUT 端口地址,AL/AX,输入输出指令完成外设与CPU之间的数据传送。输入指令IN用于从外设端口接收数据,输出指令OUT则向端口发送数据。但是该数据只能从外设送到CPU的AL/AX中(IN)或者从CPU的AL/AX送到外设(OUT)。也就是说,输入输出指令的一方是外设,一方必须是AL/AX。 为了方便,我们给每个外设都设置了一个对应的端口地址,比如我们设定键盘的端口地址为10H,当指令表示从地址为10H的端口传送某个数据内容给AL/AX时,指的就是从键盘IN一个数给AL/AX。,输入输出指令可进行8位数据传送,所传送数据在AL中,也可进
2、行16位数据传送,所传送数据在AX中,不能使用其他的寄存器。 输入输出指令对IO端口的寻址方式可以分为两大类: 直接寻址 端口地址直接在指令中给出,可寻址256个端口(0255);当端口地址255,如端口地址为256时,先用DX暂时存放256这个端口地址 MOV DX,256 现在DX=端口地址 IN AL/AX,DX 从DX这个端口地址送一个数据给AL/AX,(1)输入指令 指令格式: IN AL/AX,端口地址 功 能: ALAXPORT 操作说明: 从某个地址为PORT的端口将8位或16位的数据内容送入AL或AX中。 E.g IN AL,100H 注意两点: 1、“,”右边的100H不是
3、要传送的数据内容,而是一个端口地址 2、目前我们还不知道传送的数据内容是什么。 我们只知道这条指令的涵义是将一个8位的数从地址为100H的端口送到AL中。,端口的寻址可用直接寻址或DX间接寻址两种方式。 【例2.13】IN AL,10H ;将10H代表的端口的内容送AL,10H是8位端口的地址 IN AX,20H ;将20H端口的内容送AX,20H是16位端口的地址 错误举例: IN AX,300H MOV DX,300H ;(如果要将300H端口的内容送AX,则不能直接IN AX,300H,因为300H255,所以先把该地址存在DX中) IN AX,DX ;以DX作为16位端口地址,端口内容
4、送AX,(2)输出指令 指令格式: OUT 端口地址,AL/AX 功 能: PORTALAX 操作说明: 将累加器AL(8位)或AX(16位)的内容输出到地址为PORT的I/O端口中,端口PORT的寻址可用上述的直接寻址或DX间接寻址两种方式。 【例2.14】 OUT 40H,AL ;将AL内容送到地址为40H的8位端口中 OUT 20H,AX ;将AX内容送到地址为40H的16位端口中 OUT DX,AL ;将AL内容送到地址由DX所指定的8位端口中 OUT DX,AX ;将AX内容送到地址由DX所指定的16位端口中,第六章 并行接口,目 的 要 求 :掌握8255A可编程并行接口的工作原理
5、以及初始化编程和应用。 重 点: 8255A工作原理 难 点 :初始化编程,6.1 并行接口概述 并行接口电路与外部设备之间各位数据都是同时并行传送的,它通常是以字节(8位)或字(16位)为单位进行数据传输。 并行接口有两个特点:一是接口是以并行方法传输数据的,数据通道或数据的宽度就是传输的位数;另一个是在计算机与外设之间设置协调传递数据位的有关联系信号,即查询联络信号。传输距离较近时,常采用并行接口。,并行接口中各位数据都是并行传送的,它通常是以字节(8位)或(16位)为单位进行数据传输。,下面将以一个简单实例简易8位LED数字显示牌,来说明PC机标准并行接口(SPP)的基本工作原理和编程方
6、法。,实例现在电脑已经是很普及的了,一些小型或个体商店也会用到电脑去处理进销存的账目,在一些场合中往往要让客人当场直观地知道要支付的金额或让客人查询商品的售价,这时就需要超市POS系统中的LED报价牌,但它的整个价格很高,我们在这里实验一个用电脑并行接口直接控制的简易8位LED数字显示牌,以此帮助大家更容易的理解电脑并行接口标准模式的基本工作原理。 先来看看要用到的元器件。图中就是部分的元件,它要用的元件确实很少,甚至没有用到一个电阻。,表一元件表,图2:USB接线用于取电 为了简化电路和充分利用电脑的接口,这里选用了USB取电,把USB连线的一头剪下,可以看到有红黑绿白,四根不同颜色的线,黑
7、色为地线,红色为+5V,其余为信号线不选用(焊接操作时应小心不要把它接反在电路上,避免损坏USB口和并口可以加整流二极管以防反接)。,图3:共阳极双七段LED的引脚定义和测量方法 回忆: 共阳极公共端接阳极,低电平有效(灯亮) 共阴极公共端接阴极,高电平有效(灯亮),共阳极双七段LED的引脚定义请看图三左半部,而右半部是测量其好坏的示意图,数字万用表打到测二极量档,这时红表笔有一个正电压(普通万用表则可以使用电阻档,黑表笔有正电压),用红表得笔接触LED阳极V(Vcc),黑表笔分别接触各个笔划,各笔划亮时为好,否则为坏。制作中也可以使用共阴极的七段LED,只要在软件发送数据时取反就行了。因用到
8、二个IC和八个LED如用万用板去制作连线很多,有条件可以自己制板,如你只要了解并口的原理也可以只接一个LED以简化电路。笔者则是使用一块从仪表拆下旧的8位数字LED印刷电路板,最终的实验成品和演示程序请看图五图六。,图4:电路图,控制七段LED的阳极电压,控制七段LED的笔划,这个电路的原理也是很简单的。先来看看图四的电路图。IC1和IC2为74HC373三态八D锁存器,电路中只用到输出态和锁存态,而没有使用到高阻态的控制,所以芯片上输出控制端(1脚)只要接地就行了。IC1是用来控制七段LED的阳极电压的,IC2是用来控制七段LED的笔划的。具体的控制过程为:第一步:软件置并口16脚为高电平,
9、17脚为低电平,这时IC1为输出态,IC2为锁存态,送选择显示位数据到LPT2-9脚,D0D7对应8个LED,因这时IC1为输出态故数据输出到IC1的Q0Q7,IC2不受影响。第二步:置并口16脚为低电平,17脚为高电平,这时IC1的数据被锁存,IC2为输出态,此时送笔划数据到D0D7,重复第一步时,IC2的数据被锁存。如此时IC1的Q0为高电平,IC2的Q1、Q2为低电平,那么DS1号LED的b和c笔划段被点亮,显示1字符。若这时置IC1为输出态,输入数据置IC1的Q1为高电平其它为低电平,1字符便会移到第2个LED上显示,只要数据改变的快,人眼看起来就是二个1同时显示的。这就是动态显示的基
10、本原理。,图5:制作成功的样品,接口工作原理先来看看图七和图八,它们是常用的并行接口形式。图七是PC后后面板上的DB25孔式并行接口,现在它通常都会整合在主机板上,要应用PC并口就是从这里取得,而在旧式的机器上则需外加打印卡或多功能卡取得,PC机要扩展多一个这样的接口也需要外加相应的板卡。图八是用于连接PC主机和打印机(或其它外设)的连接线,由一个针式DB25接头和一个Centronics公接头组成。图九是打印机(或其它外设)的Centronics母接头。Centronics是一种36脚弹簧式接口引脚定义看表二。,图7:PC后面板上的DB25并行接口,图8:打印机连接线,本文的实例制作里选用了
11、标准的并口模式SPP模式,它是最简单的模式,它可以提供50K Bits/秒的典型传输速度,其最高的传输速度可达150K Bits/秒。可进行9Bits的并行输入和12Bits的并行输出。通常可选择Nibble(4bits)或Byte(8bits)的方式进行输入数据,还有一种Bi-directional的双向传输方式,这种方式需硬件支持(现在的板载LPT通常在SPP模式下也是可以进行双向传输的)。SPP硬件是由8条数据线,4条控制线和5条状态线所组成,它们分别对应三个不同的寄存器来进行数据的读写操作。表二是并行接口引脚定义表。,图9:打印机上的Centronics并行接口,8255A芯片 825
12、5是指Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。,锁存器就是把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。如下图中通过把一个引脚 置高后,输出就会保持现有的状态,直到把该引脚清0后才能继续变化。也就是
13、需要输入一个脉冲信号才能解锁。,在数据传输中,用来弥补不同数据处理速率速度差距的存储装置叫做缓冲器。把数据存放到缓冲器中的技术叫做缓冲。 网上看电影时,缓冲就是在你看电影时提前把一下时段内容准备好,目的是可以更流畅的观看。主要取决于CPU和内存大小,越大会反应越快。缓冲的引入 中断技术和通道技术的引入,提供了CPU,通道和I/O设备之间的并行操作的可能性,但由于计算机外设的发展会产生通道不足而产生的“瓶颈”现象,使并行程度受到限制,因此引入了缓冲技术。,缓冲寄存器又称缓冲器,它分输入缓冲器和输出缓冲器两种。前者的作用是将外设送来的数据暂时存放,以便处理器将它取走;后者的作用是用来暂时存放处理器
14、送往外设的数据。有了数控缓冲器,就可以使高速工作的CPU与慢速工作的外设起协调和缓冲作用,实现数据传送的同步。数据总线上一般都连接有缓冲器,只要外设回答“准备好了”或者“空闲了”,就可以立刻把数据输入或输出,尤其在遇到快速的外设时,缓冲器就能很快被取走数据,基本实现同步,而不像锁存器必须等待解除锁定。缓冲器的数据是不会长久保存的。,6.2.1 8255A的内部结构和外部引脚 1. 8255A的内部结构 8255A的内部结构如图6.2所示,由图可知,8255A由以下几个部分组成: ()数据端口A、B、C 8288A有三个8位的数据端口:端口A、端口B、端口C。可用程序把它们设计成输入端口或输出端
15、口。这三个端口一方面与CPU连接,一方面直接与外部相连,以便使数据在CPU和外部之间传输。,端口:端口包含一个位的数据输入锁存器和一个位的数据输出锁存器/缓冲器。因此,不管用端口A作输入口还是输出口,数据均能受到锁存。 端口B:端口B包含一个8位的数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。因此,端口B作输入口时,数据不能受到锁存;端口B作输出口时,数据能受到锁存。 端口C:端口C包含一个8位的数据输入缓冲器和一个8位的数据输出锁存器/缓冲器。因此,端口C与端口B一样,作输入口时数据不受锁存,作输出口数据能受到锁存。,(2)A组控制、B组控制 这两组控制电路,用来接收来自CPU和读/写控
16、制逻辑电路发来的控制字和读/写信号,实现对8255A的数据端口的读/写控制。其中,A组控制电路控制端口A和端口C的高四位的工作方式和读/写控制;B组控制电路控制端口B和端口C的低四位的工作方式和读/写控制。,8255的工作方式控制字和C口的按位置位/复位控制字,由CPU写入。,(3)读/写控制逻辑 读/写控制逻辑控制8255A的数据传输。它接收来自系统地址总线的A1、A0、地址译码输出的片选信号 和系统控制总线的信号 、 、RESET,将这些信号进行组合后,得到A组控制和B组控制的控制命令,从而实现数据的传输。 A1、A0:端口地址选择信号线。 当A1A0=00时,选中端口A; A1A0=01
17、时,选中端口B; A1A0=10时,选中端口C; A1A0=11时,选中控制端口。,(4)数据总线缓冲器 这是一个双向的8位数据缓冲器,可直接与系统的数据总线相连,来传送输入数据、输出数据以及CPU发给8255的控制信息。通过它,CPU可向8255写控制字和读状态信息。,2. 8255A的外部引脚 图6.3是8255A的芯片引脚图,引脚信号可以分为以下三组: (1)面向CPU一侧的信号线 RESET:复位信号,高电平有效。 D7 D0:8位双向数据线,与系统的数据总线相连。,A1、A0:端口地址选择信号线。 当A1A0=00时,选中端口A; A1A0=01时,选中端口B; A1A0=10时,选
18、中端口C; A1A0=11时,选中控制端口。 :芯片选择信号,低电平有效,与地址译码器电路相连接,有效时表明选中该芯片。 :读信号,低电平有效。有效时CPU从8255A中读取数据。 :写信号,低电平有效。有效时,CPU向8255A写入数据。,表6.1 8255A的数据信号和数据间传输关系表,(2)面向I/O设备一侧的信号线 PA7PA0: 端口A的输入/输出数据信号线 PB7PB0: 端口B的输入/输出数据信号线 PC7PC0: 端口C的输入/输出数据信号线 (3)其他的信号线 VCC:电源信号线,接+V电源 GND:地线,6.2.28255A的控制字与初始化编程 8255A的控制字有两类:方
19、式选择控制字和端口C按位置位/复位控制字。 1.方式选择控制字 工作方式选择控制字格式如下:,从方式控制字的格式中,可以看出: (1)8255A有三种基本工作方式: 方式0:基本的输入/输出方式 方式1:选通的输入/输出方式 方式2:双向传输方式 (2)端口A可以工作于三种工作方式中的任何一种; 端口B 只能工作于方式0或方式1这两种工作方式; 端口C 常常配合端口A或端口B工作,为它们的数据输入/输出提供控制信号和状态信号。,(3)同组的两个端口可以分别作为输入端口或者输出端口。 如A组控制电路控制端口A和端口C的高四位的工作方式和读/写控制,于是可以用端口A的高四位输入,端口C的高四位输出
20、。也可以用端口A低四位输出,端口C的高四位输入,等等,【例6.1】某片8255A与CPU相连时,其端口地址为60H,61H,62H,63H。现要求端口A工作在方式1,输入;端口B工作在方式0,输出;端口C的高4位为输出,低四位为输入。 分析:已知端口地址为60H,61H,62H,63H,即01100000、01100001、01100010、01100011 端口地址是用CPU的地址线 A7 A6 A5 A4 A3 A2 A1 A0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1,重点观察A1A0,A1 A0是端口
21、地址选择信号线,通过A1 A0=00时8255选中端口A,通过端口A传输数据;A1 A0=01时选中端口B,通过端口B传输数据;A1 A0=10时选中端口C,通过端口C传输数据;A1 A0=11时,选中控制端口,CPU通过控制端口传输控制字。 现在我们首先需要CPU通过控制端口传输方式控制字给8255,所以用到A1 A0=11,即地址63H 则初始化程序为: MOV AL, B1H ;方式控制字10110001送给AL OUT 63H, AL ;把AL通过控制端口63H送 到8255接口,2.端口C按位置1/复位控制字 端口C按位置1/复位控制字的具体格式如下:,其中: (1)D7=0,特征位
22、,用来区别方式选择控制字。 D6、D5、D4不用,可设置为000 (2)D3、D2、D1的编码是对端口C的位选择。 即D3D2D1为000时,选择端口C的位,D3D2D1为001时,选择端口C的第位,依次类推,D3D2D1为111时选择端口C的第7位。 (3)D0=1表明对所选择的位置1;D0=0,为对所选择的位复位清0。 注:对端口C进行置1或复位控制字必须写入控制端口,而不是写入端口C,因为它仍然叫做控制字。,【例6.2】设8255A的控制口的地址为63H,要求对C口的PC6置1,C口的PC4复位,则程序指令如下: MOV AL, 0DH OUT 63H, AL ;PC6置1 MOV AL
23、, 08H OUT 63H, AL ;PC4复位,6.2.3 8255A的工作方式 8255A的端口A可以工作在方式0、方式1、方式2三种工作方式,而端口B只能在方式0和方式1两种方式下工作。下面就介绍这三种工作方式的具体含义。 1.方式0(基本输入/输出方式) (1) 方式0的工作特点 这种工作方式下进行数据传输通常不用联络信号,或不使用固定的联络信号,可以采用无条件或查询方式传送,不能采用中断方式传送数据。,2.方式1(选通输入/输出方式) (1)方式1的工作特点 应答方式。因此,需设置专用的联络信号或应答信号。这种方式可采用查询传送或中断传送。输入/输出都有锁存功能此方式是借用C口的6条
24、信号线作为A口和B口数据传送的联络信号线;A口和B口,都可工作于该方式。端口工作在方式1时,联络信号的对应关系如表6.2所示。,(4)方式1的使用场合 在方式1下,在规定某个端口为输入口或输出口时,自动规定了相应的联络信号。这样,在需要采用中断方式进行输入/输出的场合,只要外设能向8255A提供选通信号或应答信号,常常使8255A的端口工作于方式1。,2.方式2(双向输入/输出) (1) 方式2的工作特点 方式2是双向传输方式。当端口工作于方式2时,即可以向CPU发送数据,又能从CPU读取数据,但不能同时进行。只有端口A能工作于方式2,B口则没有方式2。当端口A工作于方式2时,需要借用端口C的
25、5条信号线作为联络信号,而且,和方式1类似,自动提供相应的联络信号,且不能更改。当A口工作于方式2时,B口可以工作在方式1,因为此时C口还剩3条信号线正好用于B口联络信号。具体的对应关系如图6.8所示。,(3)方式2的使用场合 方式2是双向传输方式,当一个并行外设既作输入设备又作输出设备,并且输入和输出不是同时进行时,可以用8255A的端口A把该设备和处理器连接起来。 例如,磁盘就是这样一种双向设备。CPU既能对磁盘进行读操作,又能进行写操作,并且读和写是分别进行的。因此,可以将磁盘驱动器的数据线和8255A的端口A相连,再使PC7PC3与磁盘控制器的控制线和状态线相连即可。,【例6.3】82
26、55A 作为连接打印机的接口,工作于方式0,查询式传输,如图6.9所示。,工作过程:当处理器要往打印机输出字符时,先查询打印机的状态,如果打印机正在打印字符,则忙信号BUSY为1,反之为0。因此,当查询到BUSY=0时,则可通过8255A往打印机送一个字符。此时要将选通信号STB置成高电平,然后再使其为低电平,再变高电平这样将此负脉冲作为选通信号将字符送到打印机的输入缓冲器。 STB:输出缓冲器满信号,是8255A送给外设的信号。有效时,表示CPU已经向锁存器输出了数据,8255A通知外设从该锁存器取走数据。 由补充的知识我们知道,要使得锁存器解锁,也就是把刚锁进去的数据输出出来,需要一个脉冲
27、信号,这就是STB的负脉冲。,现将端口A作为传输字符的通道,工作于方式0,端口C工作于方式0,PC7PC4一般是作为一组的,已知PC5作选通信号输出,所以高四位都设为输出方式,PC0作忙信号BUSY输入,PC3PC0一般是作为一组的,故低四位均设为输入方式。设8255A的端口地址为:60H63H。 由此可知,A口地址为60H,控制端口地址为63H。,具体的程序段如下: MOV AL, 81H ;写方式控制字给控制端口,A、C口工作于方式0,A口为输出,C口的低四位为输入,高四位为输出 OUT 63H, AL ;63H为控制端口的地址 MOV AL, 0BH ;PC5连接STB,要造出STB的负
28、脉冲,须先使其为1,再使其为0,再为1。 OUT 63H, AL ;用置位/复位控制字,使PC5为1,即STB=1,数据从CPU锁入锁存器中,等待打印机从A口把它取走,于是接着要查询打印机是否“空闲”的状态,也就是判断BUSY(=PC0)是否为0。,WAIT: IN AL, 62H ;读端口C的值 TEST AL, 01H ; JNZ WAIT ;判断PC0是否为0,不为0,打印机忙,继续等待,否则,PC0=0,把在字符送打印机打印 MOV AL, CL ;CL为任意的一个要打印的字符 OUT 60H, AL ;打印机不忙,则把打印字符CL送给端口A MOV AL, 0AH OUT 63H,
29、AL ;用置位复位控制字使PC5为0 INC AL ;使AL变成0BH OUT 63H, AL ;再使PC5为1,PC5按照题目要求由高电平变成了低电平再变成了高电平,形成了负脉冲,驱动打印机接收A口的数据CL。,查 询 状 态,实验1:通过8255A控制8个指示灯轮流显示,已知8255A的A,B,C,控制端口地址分别为: 8000H,80001H,8002,8003H,要求采用方式0,A口输出,B口输入,C口输出,请编程实现指示灯轮流显示的初始化程序及控制程序。,Start:mov al,082h;方式控制字=082H 方式0,PA,PC输出,PB输入 mov dx, 8003h;控制端口地
30、址 out dx, al ; 输出方式控制字到控 制端口 mov al, 80H ;AL=10000000 mov cx, 08H ;8个灯,所以循环8次,OutA: mov dx, 8000H;A口地址8000H out dx, al ; 10000000从A口输出 当我们将A口的8位PA7PA0与8个灯连接,我们可以看到8个灯呈现10000000的状态,即PA7亮,其余灭。 shr al, 1; AL右移1位,变成0100000 loop OutA ;返回目标标号OUTA,从A口输出01000000,使PA6亮。 循环8次,8个灯轮流亮。,实验2:用开关控制8个指示灯的显示 分析:B口与开
31、关相连,A口与指示灯相连,B口输入,A口输出,C口仍然设为输出。 方式控制字不变 Start:mov al,082h;方式控制字=082H mov dx, 8003h;控制端口地址 out dx, al ; 输出方式控制字到控 制端口;,mov dx, 8001H; B口地址=8001H in al,dx; 将与B口连接的开关的数据读入AL 如开关状态为00000001,AL就=00000001 mov dx,8000H;A口地址=8000Hout dx,al ; 将AL的数据输出到A口 A口与指示灯连接,接到00000001的数据后,最末一个灯亮,mode equ 082h ; 方式0,PA
32、,PC输出,PB输入PortA equ 8000h ; Port APortB equ 8001h ; Port BPortC equ 8002h ; Port CCAddr equ 8003h ; 控制字地址code segmentassume cs:codestart proc nearStart:mov al,mode mov dx, CAddrout dx, al ; 输出控制字;实验1:PortA输出,mov al, 80Hmov cx, 08HOutA:mov dx, PortAout dx, al ; 输出PortAmov dx, PortCout dx, alshr al, 1
33、 ; 移位mov ah, 100call delay ; 调用延时子程序loop OutA,;实验2: PortB 输入 PortA 输出mov dx, PortBin al, dx ; 读入PortBmov dx, PortCout dx, almov dx, PortAout dx, al ; 输出到PortAmov ah, 200 call delayjmp Startendp,delay proc nearpush axmov al, 0push cxmov cx, axloop $pop cxpop axretdelay endpcode endsend start,第八章 定时/计
34、数器,在微型计算机系统中,尤其是实时计算机测控系统中,经常需要为微处理器和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时或延时控制,或者对外部事件进行计数,并将计数结果提供给微处理器以及提供由微处理编程控制的外部时序。这样的器件叫做可编程定时器/计数器。,它的主要用途有: (1) 以均匀分布的时间间隔中断分时操作系统,以便对程序进行切换,实现多任务功能; (2) 向I/O设备输出周期可控的精确的定时信号,例如:向采样器输出周期性采样信号; (3) 用作可编程波特率发生器,产生一串方波信号作为串行通信接口的发送时钟和接收时钟; (4) 检测外部事件发生的频率和周期;
35、(5) 统计外部某过程(如实验、生产、武器发射等过程)中某一事件发生的次数,并将计数结果输入计算机; (6) 在定时或计数达到编程规定的值以后,向CPU申请中断。,8253/8254是Intel公司生产的专用定时器/计数器芯片。8254是8253的改进型,比8253具有更优良的性能,但两者的基本功能相同,硬件组成、外部引脚和编程特性完全兼容。 在这一章中,以8253A为例介绍它们的工作原理。 8.2.1 内部结构 Intel 8253A可编程定时器/计数器的内部结构如图8.1所示。它由数据总线缓冲器、读/写控制逻辑、控制寄存器和3个计数通道(计数器0、1、2)组成。,(1)数据总线缓冲器 该缓
36、冲器为8位双向三态缓冲器,可直接挂在数据总线上。当8253A被选中时,CPU通过它,一方面可以向控制字寄存器写入控制字,向计数通道写入计数初值;另一方面也可以由CPU通过该缓冲器读出计数器的当前计数值。 写控制字时寻址的是控制寄存器的端口地址 而向计数通道写入计数初值和读出计数值则是寻址计数器的端口地址。,(2)读/写控制逻辑 读/写逻辑的功能是接收来自CPU的控制信号,包括读信号 、写信号 、片选信号 和芯片内部寄存器寻址信号A0、A1,完成对8253控制字寄存器的写操作以及对各计数器的读/写操作。片选信号 接I/O端口译码电路的输出,A0、A1接CPU地址总线低2位进行片内三个计数通道和控
37、制字寄存器的端口选择,读/写( / )信号接CPU的( / )。,(3) 控制字寄存器 接收从CPU送来的控制字,并由控制字的最高2位D7、D6位编码决定控制字写入哪个计数通道的控制单元,决定哪个计数器的工作方式。 (4) 计数器 8253有三个计数通道:计数器0、计数器1、计数器2。每个计数器都有16位的计数初值寄存器CR、16位的计数执行部件(减1计数器)CE和16位的输出锁存器OL以及控制单元CU。三个计数通道的内部结构完全相同。,每个计数器有三根信号线:其中两根为输入线:时钟信号CLK和门控信号GATE;一根输出线:OUT信号。数器计数或停止计数。 计数器单个计数通道内部结构如图8.2
38、所示。,放大,8253A工作之前需要对初值寄存器设置初值,计数执行部件从初值寄存器获得初值后,便进行减1计数,此时,输出锁存器跟随计数执行部件的内容而变化,当有一个锁存命令来到时,锁存器便锁定当前计数值,使之不随计数执行单元CE的内容变化而变化,从而使CE的内容通过输出锁存器读出一个稳定的数值,直到被读走后,又跟随计数执行部件动作。,8.2.2 引脚功能 8253A是一个采用NMOS工艺制作,单一+5v供电,24个引脚的双列直插封装的接口芯片,其引脚排列如图8.3所示。,8253A的引脚可以分为两部分:与CPU的接口引脚和与外设的接口引脚。 (1) 与CPU的接口引脚 D0D7:三态双向数据线
39、,和CPU数据总线相连,用于传输CPU与8253之间的数据信息、控制信息和状态信息。 :片选信息,输入、低电平有效。 A1、A0:用来对8253A片内三个计数通道和控制字寄存器进行寻址。 :读信号,由CPU读出计数值,低电平有效。 :写信号,由CPU写入计数器,低电平有效。 表8.1为8253A读/写操作逻辑,信号与功能的对应关系。,在表8.1中A1A0=11时,第一次写入8253A的肯定是方式控制字,此后写入该地址的则是命令字。 除了表中的7组信号组合外,出现其它信号组合时,数据总线呈高阻状态,CPU对8253A不执行任何操作。 (2) 与外设的接口引脚 CLK:时钟输入引脚,用于输入定时脉
40、冲或计数脉冲信号。计数器对这个引脚输入的脉冲进行计数。 GATE:门控输入端。用于外部控制计数器的启动计数和停止计数的操作。两个或两个以上计数器连用时,可以用此信号来同步,也可用于与外部某信号的同步。,OUT:计数输出端。不管8253以何种方式工作,当计数器计数到0时,在OUT引脚上必定有输出。在不同模式下,可输出不同形式的信号。 8.2.3 8253A的工作方式 8253A定时计数器的每一个计数通道都有6种可编程选择的工作方式。每一种工作方式不仅与计数初值有关,而且受时钟输入信号CLK和门控GATE信号的控制,CLK信号确定计数器减1计数的速率,GATE信号允许/禁止计数器工作或决定计数器的
41、启动。下面分别讨论这些工作方式,并结合波形图说明各种方式的操作过程,1. 方式0计数结束产生中断方式,(3) 新的计数初值对计数过程的影响 方式0是写一次计数值,计一遍数,计数器不会自动恢复初值重新开始计数,而且在计数过程中改变计数值,则在输入新值后的下一个时钟下降沿按新的计数初值计数。,2. 方式1可重触发的单稳态触发器,3. 方式2分频器,4. 方式3方波发生器 方式3 被称为方波发生器方式,其工作波形如图8.7所示。,5. 方式4软件触发选通 方式4被称为软件触发选通方式,其工作波形如图8.8所示,6. 方式5硬件触发选通 方式5又称硬件触发选通方式,其工作波形如图8.9所示。,7. 8
42、253A六种工作方式的比较 由于8253A的工作方式较多,加上要考虑门控信号的作用和改变计数初值对计数过程的影响,使得情况比较复杂,初学者难于记忆。为此我们总结出六种工作方式的共同特点,同时又从四个方面对这六种工作方式做一比较,以便读者更好地掌握它们之间的联系和区别(见表8.2表8.5),8253A每个计数器都有6种工作方式。这6种工作方式有以下共同特点: (1) 控制字写入计数器控制字寄存器时,所有的控制逻辑电路均被复位,输出端OUT进入初始电平。该初值电平与工作方式有关。在方式0时,OUT的初始电平为低电平;处于其他方式时,OUT的初始电平为高电平。 (2) 计数初值被写入8253A相应计
43、数器的初值寄存器CR以后,要用一个时钟脉冲的上升沿和下降沿将初值送入计数执行单元。计数执行单元从下一个时钟进行计数。 (3) 门控信号GATE控制计数器的计数过程。 (4) 在时钟脉冲下降沿计数器作减1计数。,10000H是计数器的最大计数初值。二进制计数时该初值相当于216,十进制(BCD码)计数时相当于104。,8.2.4 8253A的控制字及编程命令 1. 8253A的控制字格式 为了让8253A定时器/计数器能正确地工作,必须先对它设置控制字,以确定它工作于哪种工作方式,是二进制计数,还是十进制计数,写入初值的格式以及该控制字写入哪一个计数通道,控制字的具体格式如图8.10所示。,(1
44、) 计数器选择字段 前面已经说明,3个计数器共用一个控制字寄存器,即A1A0=11时是访问控制字寄存器,但没有指明是哪一个计数器中的控制字。为了进一步指明要写入的控制字属于哪个计数器,在控制字的最高两位(D7D6)设置了SC1、SC0位。用这两位的不同组合来指明该控制字要写入哪个计数器中。具体说,就是: SC1、SC0=00,选择计数器0; SC1、SC0=01,选择计数器1; SC1、SC0=10,选择计数器2。,(2) 读/写指示字段 RW1、RW0 (控制字的D5D4位)为读/写指示位。指明对计数初值寄存器CR写和对输出锁存器OL读的规则,也就是: RW1、RW0=00,表示该控制字节不
45、再是设置操作方式,而是使当前计数器值在输出锁存器OL中锁定,不随计数器值的改变而改变,供CPU读取;,RW1、RW0=01,表示只读取输出锁存器OL的低位字节或只写计数器初值寄存器CR的低位字节(CR的高位字节自动清0)。 RW1、RW0=10,表示只读取输出锁存器OL的高位字节或只写计数初值寄存器CR的高位字节(CR的低位字节自动清0)。 RW1、RW0=11,表示先读取输出锁存器OL低字节或写入初值寄存器CR的低位字节,后读取输出锁存器OL高位字节或写入计数初值寄存器CR的高位字节。 请注意,这两位的设置一定要根据设置的初值或读取的输出锁存器的内容来确定。,(3)工作方式选择字段 M2、M
46、1、M0(控制字的D3、D2、D1位)的取值组合用来确定8253A的六种工作方式,即方式0方式5。 M2、M1、M0的取值组合与8253A六种工作方式的对应关系是: M 2M1M0=000, 方式0; M 2M1M0=001, 方式1; M2M1M0=10, 方式2; M2M1M0=11, 方式3; M2M1M0=100, 方式4; M2M1M0=101, 方式5;,(4) 计数值格式选择字段 BCD位(控制字的最低位D0位)用来选择计数值格式。当BCD=1,计数值为十进制(BCD码)格式;当BCD=0,计数值为二进制格式。 2. 8253A的编程命令 8253A编程时,必须严格遵守如下两条原
47、则: (1)对计数器写入初值之前,必须先将控制字写入相应计数器的控制字寄存器中; (2)设置计数初值时,要符合控制字中RW1、RW0的格式规定,即只写低字节,还是只写高字节或是先写低字节再写高字节。控制字中一旦作了规定,具体设置初值时,就要与之一致。,(1)写入命令 8253A有3个写入命令:设置控制字命令、对输出锁存器锁存的锁存命令和设置计数初值命令。 设置控制字用来选择计数通道,写入计数初值的规则,设定工作方式和计数值格式。 设置计数初值命令用来将8位或16位计数初值写入计数初值寄存器CR中,是8位还是16位计数初值,由具体的实际问题决定。如果计数初值为16位,则要用两条输出指令完成初值设
48、置,即先写低字节,再写高字节。,锁存器命令是与读出命令一起使用的。在读某计数通道的当前计数值之前,必须先用锁存命令将该计数通道的当前计数值在输出锁存器中锁定,以保证在读出时,输出锁存器中的计数值不随计数单元的计数值变化。这样就能读到一个确定的稳定的计数值。,(2) 读出命令 8253A有两种读计数值的方法: 1) 读之前先停止计数 这种方法在读之前,先用GATE信号停止计数器工作,然后用IN指令读取计数值。具体读取格式取决于控制字的D5D4位。若D5D411,则同一端口地址要读两次,先读出的是低字节,后读出的是高字节;D5D4=10时,则只读一次。读出的是高位字节;D5D4=01,只读一次,读
49、出的是低位字节。,2) 读之前先送计数锁存命令 这种方法是在计数过程中读,也称“飞读”,读操作并不影响当时正在进行的计数。具体分两部分进行:首先,用OUT指令写入锁存命令字到控制端口,即令控制字的D5D4=00,其他位按要求设定。这样就将计数器当前计数值锁存到某计数通道的输出锁存器中。然后用IN指令读取被锁存的值,读取格式取决于控制字的D5D4位的设置,具体情况同上。 因此3个计数器的锁存命令如下: 计数器0:00000000B,00H 计数器1:01000000B,40H 计数器2:10000000B,80H,设计数器0、1、2和控制口的端口地址分别为EOH、E1H、E2H和E3H,并假定现
50、在要读取计数器2的计数值,则要执行如下程序段: MOV AL,80H ;计数器2锁存命令 OUT 0E3H,AL ;写入通道0控制寄存器 IN AL,0E2H ;读低字节 MOV BL,AL ;低字节送BL IN AL,OE2H ;读高字节 MOV BH,AL ;高字节送BH,8.2.5 8253A的初始化编程 下列情况需要对8253A编程: (1)工作之前写入控制字,以确定待使用的计数器通道的工作方式,读/写格式和计数值格式。 (2)工作之前写入待使用的计数器通道的计数初值; (3)工作过程中改变某计数通道的计数初值; (4)工作过程中写入锁存命令字,以便以输入指令读出某一时刻某一通道的当前
51、计数值。,前两项叫初始化编程,后两项为工作编程。本节着重介绍初始化编程。 初始化编程的顺序是:对某一指定计数器通道。先写入控制字,再写入计数初值。写计数初值时,必须按控制字的读/写格式指示位RW1、RW0规定的格式进行。 要注意的是:无论哪个计数通道的控制字都必须写入同一个端口(A1A0=11对应的端口),即控制端口,而计数初值则要写入指定计数通道对应的端口(A1A0=00、01或10对应的端口)。,下面举例说明怎样对8253A进行初始化编程。 首先设在8086系统中,8253A的控制口地址为36H,三个计数通道的端口地址为30H、32H和34H。 【例8.1】假定8253A的计数器2工作在方
52、式0,按二进制计数,计数初值为4,它的初始化程序段如下: MOV AL,90H ;设置控制字 OUT 36H,AL ;写入计数器2的控制单元CU MOV AL,4 ;设置计数初值 OUT 34H,AL ;初值写入计数器2的CR,【例8.2】设定计数器2工作于方式1,计数初值为3,按二进制计数,则初始化程序段为: MOV AL,92H ;设置计数器2的控制字 OUT 36H,AL MOV AL,3 ;设置计数初值 OUT 34H,AL 【例8.3】设定计数器1工作在方式2,按二进制计数,计数初值为4,它的初始化程序段如下: MOV AL,54H ;设置计数器1的控制字 OUT 36H,AL MO
53、V AL,4 ;设置计数初值 OUT 32H,AL 执行该程序段和计数过程时,8253A的计数器1各引脚的波形如图8.6所示。,【例8.4】假设8253A计数器0工作在方式3,按二进制计数,计数初值为4,它的初始化程序段如下: MOV AL,16H ;设置计数器0的控制字 OUT 36H,AL MOV AL,4 ;设置计数初值 OUT 30H,AL 执行该程序段和计数过程时,8253A计数器0各引脚的波形如图8.7所示。 【例8.5】假设8253A的计数器2工作于方式4,按二进制计数,计数初值为4。它的初始化程序段如下: MOV AL,98H ;设置计数器2的控制字 OUT 36H,AL MO
54、V AL,4 ;设置计数初值 OUT 34H,AL 执行该程序段和计数过程时,8253A计数器2各引脚的波形如图8.8所示。,【例8.6】假设8253A的计数器1工作在方式5,按二进制计数,计数初值为4。它的初始化程序如下: MOV AL,5AH ;设置计数器1控制字 OUT 36H,AL MOV AL,4 ;设置计数初值 OUT 32H,AL 执行该程序段和计数过程时,8253A计数器各引脚的波形如图8.9所示。,【例8.7】假设8253A的计数器1工作在方式3,按二进制计数,计数初值为7265H,它的初始化程序段如下: MOV AL,76H ;设置控制字 OUT 36H,AL ;控制字写入
55、计数器1的控制单元 MOV AL,65H ;设置计数器低字节 OUT 32H,AL ;低字节写入计数器1的CR MOV AL,72H ;设置计数器高字节 OUT 32H,AL ;高字节写入计数器1的CR,【例8.8】假设8253A的计数器2工作在方式2,按BCD码计数,计数初值为2000,它的初始化程序如下: MOV AL,0A5H ;设置控制字 OUT 36H,AL MOV AL,20H ;设置计数初值2000 OUT 34H,AL 该例中,计数初值是2000,而程序中对初值只写一次,并且初值为20H。是何缘故?留给读者自己分析。,【例8.9】IBM/PC微机的某扩展板上使用一片8253,其端口地址为400H403H,要求从定时器0的输出端OUT0得到250HZ的方波信号,从定时器1的输出端OUT1得到10HZ的连续单拍负脉冲信号。已知系统提供的计数脉冲频率为125KHZ,硬件连接如图8.11所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建师范大学《人力资源管理(双语)》2023-2024学年第一学期期末试卷
- 全球与中国合成金属纳米线市场发展趋势及投资潜力研究报告2024-2030年
- 基于民俗文化的幼儿园课程游戏化建设
- 2024届新疆昌吉二中高考模拟考试试题(一)数学试题
- 2024届上海市浦东新区高桥中学高三第一次模拟(期末)数学试题
- 2024年山西客运资格证必考题
- 招聘与录用(第3版)第1章 概述
- 2024年昆明客运从业资格证考试考什么题型
- 漂亮的花边有趣课件
- 2024年江苏客运上岗证考什么内容
- GB/T 43617.3-2024滚动轴承滚动轴承润滑脂噪声测试第3部分:测试和评估方法MQ
- 村里垃圾池建设合同
- 跨境电商市场细分方案
- 2024年新人教版七年级上册生物课件 第一单元 第三章大单元整体设计
- 2024年辽宁鞍山台安县中小学教师招聘104人历年高频500题难、易错点模拟试题附带答案详解
- 2024-2030年中国机器狗行业市场发展分析及前景趋势研究报告
- 离职证明(标准模版)
- 江苏省南通市启东市2023-2024学年八年级上学期期中考试数学试卷(答案不全)
- 专题05 狼(含答案与解析)-备战2024年中考语文之文言文对比阅读(全国版)
- 少先队辅导员技能大赛考试题库300题(含答案)
- 医药代表院内管理制度
评论
0/150
提交评论