第3章微机接口芯片及应用PC机中断系统8253定时/计数器8255并行接口8237DMA控制器PC机接口芯片主要用于系统设备(如键盘)管理,以及I/O操作功能(如中断、DMA等)的实现,主要有用于硬件中断管理的8259、DMA操作管理的8237、提供控制信号的8255和提供系统定时的8253等。3.1PC机中断系统中断方式是根据中断源的不同来划分的。所谓中断源就是引起CPU中断的事件,这可以是运算、软件运行、软件调试和外部设备、故障等。3.1.180X86中断方式1.内部中断内部中断的中断源在处理器(CPU)的内部,主要是由INT指令、运算过程中的错误、设置的断点、单步执行而引起的中断。(1)INT指令当CPU执行INTN指令时会自动产生一个内部中断,并调用系统中的相应中断服务程序来完成中断功能,INT指令中的操作数N即为中断类型号。(2)处理器(CPU)的错误处理器在执行程序时,若出现某些错误(如溢出),为及时处理这些错误,CPU就以中断方式终止程序执行,等待操作人员修改错误。①除法错中断②溢出中断(3)为调试程序设置的中断为了检查程序执行的中间结果或寻找程序中存在的问题,往往在程序中适当的位置设置断点或使程序单步运行,以便发现或查找程序中的问题。①单步中断②断点中断2.外部中断80X86处理器(CPU)有两条外部中断请求线:NMI(非屏蔽中断)和INTR(可屏蔽中断)。(1)可屏蔽中断(INTR)可屏蔽中断(INTR)又称硬件中断,它是由外部设备请求,通过中断控制器8259管理的一类中断。当在INTR线上出现中断请求(INTR=1)时,处理器(CPU)是否响应要取决于处理器的标志寄存器中的IF标志,若IF=1,则处理器(CPU)就响应(处理器处于开中断状态)该中断请求;若IF=0,处理器(CPU)就不响应(处理器处于关中断状态)该中断请求。(2)非屏蔽中断(NMI)非屏蔽中断(NMI)不受处理器(CPU)标志寄存器IF标志的影响,主要是为处理某些计算机故障而设计的,在IBMPC系列的计算机中,非屏蔽中断(NMI)仅在存储器奇偶校验出错、I/O通道数据奇偶校验出错和80X87协处理器(NPU)异常三种情况时发生。中断的处理优先权顺序为:内部中断→非屏蔽中断→可屏蔽中断→单步执行。3.1.2硬件中断的优先权中断优先权是指有多个中断同时发生时,CPU(或8259A中断控制器)优先响应其中断的顺序。硬件中断也就是可屏蔽中断,主要用于实现计算机系统对外部设备的管理。80286以上为中央处理器的计算机系统中,整个系统的硬件中断由两片8259A中断控制器构成,可管理16级硬件中断(IRQ15~IRQ0)。优先权顺序为(从高到低):IRQ0→IRQ1→IRQ2→IRQ8…→IRQ15→IRQ3…→IRQ7。3.1.3中断向量表80X86为处理器的计算机系统均采用矢量中断,80X86处理器(CPU)能处理256级中断向量,类型号为0H~0FFH。一个中断向量占用4字节,分别存放中断服务程序的IP和CS,因此,整个中断向量(0H~0FFH)共占用1024字节,用以存放各个中断向量的中断服务程序的入口地址(CS∶IP)。3.1.48259A中断控制器8259A中断控制器用于管理PC机的硬件中断,在接口技术中的中断编程是指通过中断方式实现控制、数据采集等功能。1.8259A功能①具有8级优先权控制,通过级连可扩展至64级优先权控制。②每一级中断都可以独立被屏蔽或允许。③在中断响应周期,8259A可提供中断向量,从而快速地转入中断服务程序。④8259A有多种工作方式,均可通过程序来选择。2.8259A引脚及结构Intel8259A为28脚双列直插式芯片,主要引脚功能如下。3.初始化字和命令字8259A的初始化包含2~4个初始化命令字(ICW)和3个工作方式命令字(OCW),ICW必须依次连续写入,OCW在需要时写入。(1)初始化字(ICW)当CPU用一条输出指令向8259A写入一个命令字(D4=1,指令地址的A0=0),则将解释为初始化命令字ICW1。(1)ICW(2)OCW在PC机中BIOS对8259A初始化程序段如下:MOVAL,13HOUT20H,AL;ICW1:要ICW4、单8259、地址间隔4、边沿触发MOVAL,08HOUT21H,AL;ICW2:初始中断向量08HMOVAL,09HOUT21H,AL;ICW4:8086系统、正常EOI、缓冲方式……3.28253定时/计数器计算机的控制过程有以下三个方面:①定时数据采集:对被控参数的瞬间值进行检测,并输入计算机;②实时决策:对采集到的参数进行比较分析,并按相应的控制规律决定下一步的控制过程;③实时控制:根据决策,适时地对控制机构发出控制信号。(1)软件定时(2)硬件定时(3)可编程定时/计数器3.2.1定时技术概述3.2.28253工作原理8253有3个独立的16位计数器通道,是减法计数器,根据计数器特性有:输出频率f0=输入频率fi/计数器计数值N,即:f0=fi/N,采用周期表示T0=N*Ti。因此,若固定Ti(PC机的f0=1.19MHz),则定时时间与N成比例变化。1.8253主要功能①一片上有3个独立的16位计数器通道,最大计数范围为0~65535;②每个计数器都可以按照二进制或二-十进制(BCD码)计数;③每个计数器的计数速度可高达2MHz;④每个通道有6种工作方式,可通过程序设置来改变;⑤所有的输入和输出都与TTL兼容。2.内部结构及引脚功能8253内部可分为6个模块,如图3.17所示。3.控制字寄存器当A1A0=11时,选中控制字寄存器,然后它从总线接收数据,并存入到寄存器中。控制字寄存器存储的信息控制每个计数器的工作方式和计数方式,控制字寄存器的信息只能写入,不能读出。控制字寄存器的功能定义如图3.18所示。3.2.38253工作方式8253中的3个独立计数器,每个都有6种工作方式供用户选择。1.方式0(计数结束中断)①计数器计一次数,当计数到0时OUT保持高电平,重新写入初值后,再开始计数;②8253内部计数在的上升沿,当写入初值后,8253在上升沿才开始计数;③在计数过程中,若GATE=0计数暂停,当GATE恢复为高后接着计数;④在计数过程中,若改变初值,计数器将重新开始计数;⑤8253没有中断控制电路和中断请求线,若要用于中断,可用OUT作为8259A的中断请求线,通过8259A产生中断。2.方式1(程序可控单拍脉冲)①若计数初值为N,则单拍脉冲宽度为N个输入脉冲间隔;②当计数到0后,可再次由GATE触发启动下一次计数,输出同样宽度的单拍脉冲;③在计数过程中,可通过GATE脉冲再触发。在再触发脉冲上升沿后的一个CLK的下沿,计数器重新开始计数;④在计数过程中,若改变初值,计数器不受影响。若再次由GATE触发,则以新的计数值开始计数(即计数值是下次有效)。3.方式2(速率发生器)①不用重新设置计数初值,就能够连续计数,输出固定频率的脉冲;②在计数过程中,若GATE=0计数暂停,当GATE恢复为高后的下一个CLK脉冲,计数器恢复初值重新计数;③在计数过程中,若改变初值,计数器不受影响。在下次计数时,则以新的计数值开始计数(即计数值是下次有效)。4.方式3(方波速率发生器)①不用重新设置计数初值,就能够连续计数,输出固定频率的脉冲;②在计数过程中,若GATE=0计数暂停,当GATE恢复为高后的下一个CLK脉冲,计数器恢复初值重新计数;③在计数过程中,若改变初值,计数器不受影响。在下次计数时,则以新的计数值开始计数(即计数值是下次有效)。5.方式4(软件触发选通)①CPU写入初值后的再下一个CLK才开始计数,所以实际上是写了N+1初值才输出一个负脉冲;②在计数过程中,若GATE=0禁止计数,当GATE恢复为高后的下一个CLK脉冲,计数器重新计数;③在计数过程中,若改变初值则按新值重新开始计数(本次有效)。6.方式5(硬件触发选通)①若设置初值为N,在门控脉冲触发经过N+1个CLK才输出一个负脉冲;②在计数过程中使用GATE脉冲,使计数器重新开始计数,但对输出状态没有影响;③在计数过程中,若改变初值,只要没有GATE脉冲触发不影响计数过程。写入新的初值后,若有GATE脉冲触发,则立即按新值开始计数。3.2.48253编程与应用8253的编程比较简单,一般过程如下:①输入控制字:通过控制字可设置计数通道、I/O方式、工作方式和计数方式等。计数方式根据计数范围来选择,当计数范围大于9999时必须采用二进制计数方式,计数范围小于9999时用二进制或二—十进制均可。②写入初值:初值根据要求的输出频率或时间间隔来确定,计算公式为:N=fi/f0或N=T0/Ti(f0为要求输出的频率,fi为8253输入频率)如fi=1MHz,要求输出800Hz的方波信号,则N=1000000/800=1250。在写入初值时必须先写低8位,然后在写入高8位。3.38255并行接口并行接口芯片具有以下功能:①两个或两个以上的具有锁存器或缓冲器的数据端口;②每个数据端口都具有与CPU用应答方式交换信号所必须的控制和状态信息,也有与外设交换信息所必须的控制和状态信息;③通常每个数据端口有能用中断方式与CPU交换信息所必须的电路;④片选和控制电路;⑤可用程序选择数据端口,选择端口的数据传送方向,选择与CPU交换信息的方法等。3.3.18255工作原理1.基本特征①8255具有两个8位(PA和PB)和两个4位(PC高/低4位)并行输入/输出端口,PC端口具有按位复位/置位功能;②有0方式、1方式和2方式等,可适应CPU和I/O接口的多种数据传送方式,分别对应无条件传送、应答查询传送和中断传送等;③PC端口除作数据端口外,当工作在1方式和2方式时,它的部分引线被分配为专用联络信号,PC端口可单独指定按位控制,作状态信号使用等;④8255A内部主要由控制寄存器、状态寄存器和数据寄存器组成,PA、PB和PC均具有输出锁存、输入缓冲功能。2.8255A内部结构8255A采用40线双列直插封装,其中24线用于连接I/O设备,内部结构如图3.26所示。3.8255A控制字控制字用于控制8255A各个端口的工作方式和端口的输入/输出,它通过+11端口输入到8255A。8255A控制字格式如图3.27所示。4.PC置位/复位为了实现控制的需要,PC可按位置位/复位,置位/复位格式定义如下:3.3.28255工作方式8255A有三种工作方式:0方式是一种基本输入输出工作方式,0方式把8255A的24条I/O线全部都用作传送数据,不设置应答信号线,常用于简单(无条件)传送,在0方式下,输出有锁存,输入只有缓冲能力而无锁存功能。1方式是一种选通输入输出方式,PA和PB用于传送数据,PC的部分引脚被指定为固定的专用应答信号,这种方式常用于查询(条件)传送或中断传送,数据的输入输出都具有锁存能力。2方式是双向选通输入输出方式,PA作为双向数据输入输出端口,PC的部分线用作专用的应答信号线,8255A只有PA才可以工作在2方式。1.0方式及其应用0方式是一种基本输入输出工作方式,8255A的PA、PB和PC端口的24条I/O线全部都用作传送数据,常用于简单数据传送。(1)简单输入输出简单输入输出也就是无条件传送方式,认为外设始终是准备就绪,随时可以提供或接收数据。如CPU读取系统配置、内存数据等,在外设中如信息LED显示、CRT显示等均属于这种情况。在工业控制中,步进电机的运行方式也是一种简单的输入输出。简单输入输出不需要查询外设的工作状态,因此可以获得较高的传输速率。(2)应答输入输出在0方式下,也可分配适当的端口信号作为应答状态线,通常PA和PB作为数据传送端口,PC的部分线作为状态或应答信号线。在实际应用中,可任意指定PC的哪些线作为状态线或应答线,只要程序与之匹配即可。2.1方式及其应用1方式是一种选通输入输出方式,PA和PB用于传送数据,PC的部分引脚被固定地指定为专用应答信号,这种方式常用于查询(条件