第5章输入/输出和中断5.1输入/输出的概念5.2数据的传送方式5.3中断技术5.4MCS-51的中断系统§5.1输入/输出的基本概念输入输出设备简称I/O设备。I/O接口电路的作用:一个计算机系统的组成,除了CPU、存储器外,还必须有外部设备。计算机通过输入/输出设备和外界进行通信。计算机所用的数据以及现场采集的各种信息都要通过输入设备送到计算机;而计算的结果和计算机产生的各种控制信号又需通过输出设备输出到外部设备。一、输入/输出设备1输入设备功能是将计算程序、原始数据和各种现场采集的资料和信息输入到计算机。2输出设备功能是将运算的结果以人们容易识别的形式呈现给人们或将各种控制信号送给外界,以实现各种控制动作。3外存储器功能是存储主存储器暂时不用的系统软件和应用软件。二、输入/输出传送的信息1、数据信息1)数字量2)模拟量3)开关量2、状态信息3、控制信息计算机的I/O操作,即CPU和外部设备之间的数据传送却十分复杂。主要表现在以下几个方面:(1)外部设备的工作速度与计算机相比要低得多。(2)外部设备的种类繁多,有机械式、机电式及电子式等等。(3)外部设备的数据信号是多种多样的,既有电压信号,也有电流信号;既有数字量,还有模拟量。(4)外部设备的数据传送有近距离的,也有远距离的;有的使用并行数据传送,而有的则使用串行传送数据。三、输入/输出接口的作用及类型1、I/O口的作用实现与不同外设的速度匹配实现与外设的隔离改变信号的性质实现数据传输方式和电平的变换2、I/O接口的类型串行I/O接口:串行I/O接口可以从发送数据线上一位一位地连续发送数据和在发送完8位数据后自动(通过中断)从CPU并行接收下一个要送的字节,也可以从接收数据线上连续接收串行数据和在收到一个字节后自动向CPU发出中断请求,CPU响应该中断请求后便可通过中断服务并行提取这个接收到的数据。接口(interface),具有界面、相互联系等含义。接口特指计算机与外设之间在数据传送方面的联系,其功能主要是通过电路实现的,因此称之为接口电路,简称接口。并行I/O接口:一方面以并行方式和CPU传送I/O数据,另一方面又可以以并行方式和外设交换数据。3、MCS-51内部并行I/O口8051有四个并行I/O接口:P0、P1、P2、P3,都有双向I/O功能。P0:可以输出片外存储器的低八位地址,也可以同时用作8位双向数据总线。P1:数据输入/输出使用P2:输出片外存储器的高八位地址,也可以用作8位双向数据总线。P3:数据输入/输出使用,还具有第二功能。口线第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部中断0申请P3.3INT1外部中断1申请P3.4T0定时器/计数器0计数输入P3.5T1定时器/计数器1计数输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通四、I/O端口的编址方式1、I/O端口单独编址是指I/O端口地址和存储器存储单元地址分别编址,互为独立。为了区分这两种地址,制造CPU时必须单独集成专门I/O指令所需要的那部分逻辑电路。2、I/O端口和存储器统一编址是把I/O端口当作存储单元对待,也就是让I/O端口地址占用部分存储器单元地址。5.2.1无条件传送方式无条件传送也称为同步程序传送,类似于CPU和存储器之间的数据传送。只有那些一直为数据I/O传送作好准备的外部设备,才能使用无条件传送方式。这种传送方式不需要测试外部设备的状态,可以根据需要随时进行数据传送操作。无条件传送方式适用于以下两类外部设备的输入输出:§5.2数据的传送方式(1)外设的工作速度非常快,足以和CPU同步工作。(2)具有常驻的或变化缓慢的数据信号的外设。5.2.2查询传送方式查询传送又称为条件传送,即数据的传送是有条件的。在输入/输出之前,先要检测外设的状态,以了解外设是否已为数据输入输出作好了准备,只有在确认外设已“准备好”的情况下,CPU才能执行数据输入/输出操作。通常把通过程序对外设状态的检测称之为“查询”,所以这种有条件的传送方式又叫做程序查询方式。查询的流程图如图所示。图5―1查询方式流程图5.2.3中断传送方式由于查询传送方式为CPU主动要求传送数据,而它又不能控制外设的工作速度,因此只能用等待的方式来解决配合的问题。中断方式则是在外设为数据传送作好准备之后,就向CPU发出中断请求信号(相当于通知CPU),CPU接收到中断请求信号之后立即作出响应,暂停正在执行的原程序(主程序),而转去为外设的数据输入输出服务,待服务完之后,程序返回,CPU再继续执行被中断的原程序。由于CPU的工作速度很快,传送1次数据(包括转入中断和退出中断)所需的时间很短。对外设来讲,似乎是对CPU发出数据传送请求的瞬间,CPU就实现了;对主程序来讲,虽然中断了1个瞬间,但由于时间很短,也不会有什么影响。5.2.4DMA传送方式直接存储器存取,利用DMAC实现。实时测控,单片机能及时地响应和处理单片机外部事件或内部事件所提出的中断请求。5.3.1中断的概念CPU正在执行程序时,单片机外部或内部发生的某一事件,请求CPU迅速去处理。CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为中断。CPU处理事件的过程,称为CPU的中断响应过程。§5.3中断技术对事件的整个处理过程,称为中断处理(或中断服务)。5.3.2中断源所谓中断源就是引起中断的事件,亦即是什么部件要求中断。对于各种计算机来说,其中断源的允许数目是不一样的,例如Z80允许128个中断源(不包括非屏蔽中断),而8086/8088则允许256个中断源。MCS-51单片机相对来说较为简单,只提供了5个中断源:2个外部中断请求,2个片内定时器/计数器T0和T1的溢出中断请求TF0和TF1及串行口中断请求TI或RI(合为一个中断源)。5.3.3中断的分类1.外部设备中断源2.控制对象中断源3.故障中断源4.定时脉冲中断源5.人为设置中断源1.可屏蔽中断INT2.非可屏蔽中断NMI3.软件中断中断源向CPU提出的处理请求,称为中断请求(或中断申请)。进入中断→保护现场→中断处理恢复现场→中断返回中断方式优点:大大地提高了CPU的工作效率。5.3.4中断的处理过程1、中断响应单片机响应中断的条件为中断源有请求(中断允许寄存器IE相应位置1),且CPU开中断(即EA=1)。这样,在每个机器周期内,单片机对所有中断源都进行顺序检测,并可在任1个周期的S6期间,找到所有有效的中断请求,还对其优先级进行排队。但是,必须满足下列条件:•中断响应的条件(1)无同级或高级中断正在服务;(2)现行指令执行到最后1个机器周期且已结束;(3)若现行指令为RETI或需访问特殊功能寄存器IE或IP的指令时,执行完该指令且紧随其后的另1条指令也已执行完。单片机便在紧接着的下1个机器周期的S1期间响应中断。否则,将丢弃中断查询的结果。•中断响应过程单片机一旦响应中断,首先对相应的优先级有效触发器置位。然后执行1条由硬件产生的子程序调用指令,把断点地址压入堆栈,再把与各中断源对应的中断服务程序的入口地址送入程序计数器PC,同时清除中断请求标志(串行口中断和外部电平触发中断除外),从而程序便转移到中断服务程序。以上过程均由中断系统自动完成。各中断源所对应的中断服务程序的入口地址:中断源入口地址外部中断00003H外部中断10013H定时器/计数器T0000BH定时器/计数器T1001BH串行口中断0023HCPU从上面相应的地址开始执行中断服务程序直到遇到RETI指令为止。2、中断处理1)保护现场2)中断服务3)恢复现场4)开中断3、中断返回中断服务完成返回断点,继续执行原来的程序。§5.4MCS-51的中断系统一、中断源和中断标志MCS-51中典型的8051单片机有5个中断源,分别为2个从INT0、INT1(P3.2、P3.3)上输入的外部中断源0(INT0)和外部中断源1(INT1),2个片内定时器/计数器T/C0、T/C1的溢出中断源和1个片内串行口发送或接收中断源。1、定时器/计数器控制寄存器TCON(88H)TF1TF0IE1IT1IE0IT08FH8DH8BH8AH89H88HTF1:定时器/计数器T/C1的溢出中断请求标志位。T/C1被启动后,从初始值开始加1计数。当T/C1产生溢出中断(全“1”变为全“0”)时,TF1由硬件自动置位(置“1”),向CPU申请中断;当T/C1的溢出中断为CPU响应后,TF1由硬件自动复位(置“0”),中断申请撤除。TF0:定时器/计数器T/C0的溢出中断请求标志位。作用和TF1类似。IE1:外部中断1(INT1)的中断请求标志位。IE1=1有中断申请,IE1=0无中断申请。由硬件自动置位和复位。IT1:外部中断1(INT1)的触发控制标志位。当IT1=0,为电平触发方式,INT1低电平有效;IT1=1,INT1为边沿触发方式,INT1输入脚上的高到低的负跳变有效。IE0:外部中断0(INT0)的中断请求标志位。IT0:外部中断0(INT0)的触发控制标志位。2串行口控制寄存器SCON(98H)TIRI99H98HTI:串行口发送中断标志位。串行口发送完一组数据时,串行口电路向CPU发出串行口中断申请的同时也使TI由硬件自动置位。CPU响应此中断后,不能由硬件自动复位TI,而须由软件复位。RI:串行口接收中断标志位。串行口接收到一组数据时,串行口电路向CPU发出串行口中断申请的同时也使RI由硬件自动置位。CPU响应此中断后,不能由硬件自动复位RI,而须由软件复位。MCS-51系统复位后,TCON和SCON中各位被复位成“0”状态。二、MCS-51对中断请求的控制1、对中断允许的控制中断允许总控位EA,配合各中断源的中断允许控制位共同实现对中断请求的控制。这些中断允许控制位集成在中断允许寄存器IE(A8H)中。EAESET1EX1ET0EX0AFHACHABHAAHA9HA8HEA:CPU中断允许总控位,位地址为AFH。当EA=1时,CPU开放中断,每个中断源是允许还是禁止分别由各自的允许位确定。当EA=0,CPU关闭所有中断请求,称关中断。ES:串行口中断允许控制位,位地址为ACH。当ES=1,允许串行口中断,当ES=0,禁止串行口中断。ET1:定时器/计数器T/C1的溢出中断允许控制位,位地址为ACH。当ET1=1,允许T/C1中断,当ET1=0,禁止T/C1中断。EX1:外部中断1的中断允许控制位,位地址为AAH。当EX1=1,允许外部中断1中断,当EX1=0,禁止外部中断1中断。ET0:定时器/计数器T/C0的溢出中断允许控制位,位地址为A9H。当ET0=1,允许T/C0中断,当ET0=0,禁止T/C0中断。EX0:外部中断0的中断允许控制位,位地址为A8H。当EX0=1,允许外部中断0中断,当EX0=0,禁止外部中断0中断。中断允许寄存器IE的单元地址是A8H,各控制位也可位寻址,故既可以用字节传送指令也可以用位操作指令来对各个中断请求加以控制。例:开放T/C1的溢出中断MOVIE,#88H;或SETBEASETBET12对中断优先级的控制MCS-51具有两个中断优先级,可由软件设置每个中断源为高优先级中断或低优先级中断,可实现二级中断嵌套。IP(B8H):中断优先级寄存器,锁存各中断优先级的控制位,用户可由软件设定。PSPT1PX1PT0PX0BCHBBHBAHB9HB8HPS:串行口中断优先级控制位。当PS=1时,串行口中断被定义为高优先级中断,当PS=0,串行口中断被定义为低优先级中断。PT1:T/C1中断优先级控制位。当PT1=1时,T/C1中断被定义为高优先级中断,当PT1=0,T/C1中断被定义为低优先级中断。PX1:外部中断1中断优先级控制位。当PX1=1时,外部中断1中断被定义为高优先级中断,当PX1=0,外部中断1中断被定义为低优先级中断。PT0:T/C0中断优先级控制位。当PT0=1时,