1第4章输入/输出、中断、定时与串行通信主要内容:介绍I/O的基本概念、I/O数据传递方式,中断的基本概念,串行通信基本概念。主要介绍单片机中断系统结构、特点及使用方法;片内定时器/计数器结构、原理及使用;片内串行口结构、原理以及双机和多机通信实现方法;PC机与单片机通信实现方法。24.1输入/输出概述4.1.1输入/输出的基本概念输入/输出设备又称为计算机外围设备;简称外设或I/O设备。单片机应用系统常用的输入设备有按钮、键盘、各种传感器等。常用的输出设备有LED(发光二极管显示器)、LCD(液晶显示器)等。二、输入/输出信息种类计算机与输入/输出设备之间交换信息,有三种信息形式:数据信息、控制信息和状态信息。一、输入/输出设备3三、输入/输出接口与端口CPU与外设,并不直接相连,而是通过接口电路进行连接。输入/输出设备与主机的连接部分称为输入/输出接口,简称I/O接口。输入/输出接口的作用是:2.锁存与缓冲作用:一般用D触发器进行锁存。1.隔离与寻址作用:例如右图用三态门组成的接口。3.信号电平或形式变换:例如A/D、D/A、232/485的变换。4通常接口电路中可编址并能进行读写操作的寄存器称为端口或简称口。一个接口电路中可能包括多个口,例如数据口、状态口、控制口,即包含有多个口地址。同一单片机系列中,片内集成的I/O模块各有不同,当片内I/O不能满足实际需求时,可扩展外部I/O。四、I/O的分类按照信号的传递方式,可将I/O分为串行和并行两类。按照I/O连接的信号大致可分为模拟量、数字量、脉冲量I/O三类。五、数据总线隔离技术为了正确地进行数据的I/O传递,必须解决数据总线的隔离问题,即在任一时刻,CPU只对一个I/O进行操作。为此,对输出设备的接口电路要使用锁存器,对输入设备的接口电路,使用三态缓冲器。5六、单片机I/O编址方式每一个I/O都需要编址,以便CPU分别进行寻址。常用的I/O编址方式有两种:独立编址方式和统一编址方式。独立编址方式:I/O和存储器分开编址,有各自独立的地址空间,采用不同的控制总线,使用不同的指令分别寻址。统一编址方式:I/O与数据存储器在同一地址空间编址,寻址方式相同,采用相同的地址、数据、控制总线,使用相同的指令寻址。64.1.2输入输出的传送方式单片机系统中有不同类型的I/O设备,由于I/O所连接的外设或I/O接口本身的速度与CPU的处理速度相比,通常低于CPU的速度,为了实现数据的正确传输,CPU通常采用三种控制方式,即无条件传送方式、查询方式和中断控制方式。一、无条件传送方式I/O或与I/O连接的外设随时都处于准备好状态,这时CPU不需要测试外设状态,随时直接对其进行操作。7YN查询状态就绪?输入/输出查询方式流程图二、查询方式查询方式是指CPU在执行输入输出指令之前,先对外围设备的状态进行检测,以判别外设是否准备就绪。如果已经准备就绪,CPU就可以执行输入输出指令。如果还没有准备就绪,必须继续查询(如右图所示)。查询方式的特点:实现简单,通用性强,适合各种设备数据的输入/输出;其缺点是需要占用CPU的时间,外设速度较慢时,效率较低。8三、中断方式中断方式下外设的状态信号以中断申请方式输入CPU。CPU响应中断,暂停正在执行的程序,转而执行中断服务程序,在中断服务程序中对外设进行输入/输出操作,中断返回后,再继续执行被中断的程序。中断方式可提高单片机系统的效率。94.2.1中断的概念当CPU正在处理某件事情的时候,内部或外部发生的某一事件(如一个电平的变化,一个脉冲沿的发生或定时器计数溢出等)请求CPU迅速去处理,于是,CPU暂时中止当前的工作,转去处理所发生的事件。处理完该事件以后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。请求主程序主程序中断服务返回响应中断流程4.2MCS-51单片机的中断系统10一、中断源中断源是指向CPU申请中断的事件来源。例如外部输入输出设备,定时/计数器,串行接口都可以作为中断源。二、中断优先权中断优先权也叫中断排序,是用户根据中断源的性质和重要性自行排列的先后次序。在多个中断源同时提出申请时,保证优先权高的中断源首先得到响应,纵使CPU正在处理一个中断,也要暂时停止较低级的中断。响应优先权更高的中断源请求。这个过程称为中断嵌套或多重中断。优先权排序可以用软件也可以用硬件实现。11三、中断系统的功能:(1)可实现高速CPU与慢速外设之间的配合。因为许多外围设备的速度比CPU慢,二者间无法同步地进行数据交换。为此可通过中断方式实现CPU与外围设备之间的协调工作。(2)可实现实时处理。实时处理是自动控制系统对计算机提出的要求,各控制参量可以随时向CPU发出中断申请,而CPU也必须做出快速响应和及时处理,以便使被控对象总保持在最佳工作状态。(3)实现故障的紧急处理。当外围设备或计算机出现故障时,可以利用中断系统请求CPU及时处理这些故障。(4)便于人机联系。操作人员可以利用键盘中断等,实现人机联系,完成人的干预。12四、中断响应过程1)寻找中断源。(中断识别)2)将当前PC值(下一条指令的地址)压入堆栈(即保护断点),以便中断返回时使用。3)寻找中断入口,以便转向执行中断服务程序。4)保护现场。5)执行中断服务程序(中断处理)。6)执行完中断服务程序后,恢复现场并返回主程序(中断返回)。执行一条指令有中断请求否?取下一条指令N关中断Y保护现场和断点开中断中断服务关中断恢复现场开中断返回134.2.2MCS-51单片机的中断系统一、中断源与中断标志位8051/8031型单片机提供了5个中断源:两个外部中断源和三个内部中断源。每一个中断源都有一个中断申请标志,但串行口占两个中断标志位,一共六个中断标志,下表给出了它们各自的名称。分类中断源名称中断申请标志触发方式中断入口地址外部中断外部中断0IE0(TCON.1)INT0(P3.2)引脚上的低电平/下降沿引起的中断0003H内部中断T0定时器/计数器0中断IF0(TCON.5)T0计数器溢出后引起的中断000BH外部中断外部中断1IE1(TCON.3)INT1(P3.3)引脚上的低电平/下降沿引起的中断0013H内部中断T1定时器/计数器1中断IF1(TCON.7)T1计数器溢出后引起的中断001BH内部中断串口中断RI(SCON.0)TI(SCON.1)串行口接收完成或发送完一帧数据后引起的中断0023H中断源和中断申请标志14MCS-51中断系统MCS-51中断系统结构框图中断源中断选择中断标志151.中断源(1)外部中断0请求,由P3.2引脚输入。可由用户设定为两种触发方式,(电平触发方式还是边沿触发方式)。一旦输入信号有效,则向CPU申请中断,并且将中断标志IE0置1。(2)外部中断1请求,由P3.3引脚输入。亦可由用户设定为电平触发方式还是边沿触发方式。一旦输人信号有效,则向CPU申请中断,并将中断标志IE1置1。(3)片内定时器T0溢出中断请求。当定时器T0产生溢出时,T0中断请求标志TF0置1,请求中断处理。(4)片内定时器T1溢出中断请求。当定时器T1产生溢出时,T1中断请求标志TF1置l,请求中断处理。(5)片内串行口发送/接收中断请求。当通过串行口发送或接收完一帧串行数据时,串行口中断请求标志TI或RI置1,请求中断处理。INT0IE0INT1IE1TF0TF1RITI图10、8051中断源16因此,与中断有关的特殊功能寄存器有:中断允许控制寄存器(IE)定时器/计数器控制寄存器(TCON)中断优先级控制寄存器(IP)串行口控制寄存器(SCON)MCS-51单片机的中断系统中,使用何种中断,采用何种触发方式,可通过定时器/计数器控制寄存器TCON和串行口控制寄存器SCON的有关位来规定。只要根据这些位的状态就能确定有无中断请求及中断的来源。在中断源与CPU之间有二级中断允许控制逻辑电路,一级为总允许,第二级为源允许,由IE控制。中断优先级由IP控制。172.中断请求标志(1)TCON的中断标志TCON是专用寄存器,字节地址为88H,它锁存了外部中断请求标志及T0和T1的溢出中断请求标志。TCOND7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0IT0/IT1:外部中断请求的触发方式选择位:=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效.IE0/IE1:外部中断申请标志位:=0:没有外部中断申请;=1:有外部中断申请。TF0/TF1:定时器溢出中断申请标志位:=0:定时器未溢出;=1:定时器溢出申请中断,进中断后自动清零。TR0/TR1:定时器运行启停控制位:=0:定时器停止运行;=1:定时器启动运行。18(2)SCON的中断标志SCON是串行口控制寄存器,与中断有关的是它的低两位TI和RI。TI(SCON.1):串行口发送中断标志位。每发送完一个串行帧,由硬件置位TI。CPU响应中断时,不能清除TI,TIRI(SCON.0):串行口接收中断标志位,当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。同样,RI必须由软件清除。SCONRITIRB8TB8RENSM2SM1SM019二、MCS—51的中断管理1、中断允许寄存器IE——中断的允许与开放0:关INT中断01:开INT中断00:关T中断1:开T中断001:开T中断0:关T中断0:关INT中断1:开INT中断11110:关T中断1:开T中断221:开所有中断0:关所有中断1:开串行口中断0:关串行口中断位地址IEEAAFADETACESABETAAEXA9ETA8EX00112在中断源与CPU之间有两级中断允许控制逻辑电路,一级为总允许,第二级为源允许,由IE控制。202.中断优先级寄存器IP——中断优先级控制内部自然优先级:入口地址INT0高0003HT0000BHINT10013HT1001BHTI/RI低0023H213.同一级中的5个中断源的优先顺序/INT0中断T0溢出中断/INT1中断T1溢出中断串口中断高低自然优先级中断优先原则:(概括为四句话)1)低级不中断高级2)高级不睬低级3)同级不能打断4)同级、同时中断,按自然优先级22MCS-51中断系统MCS-51中断系统结构框图中断源中断选择中断标志23中断处理过程一般分为三个阶段,即中断响应、中断处理和中断返回。三、中断响应的条件及过程1.中断响应(1)中断响应的条件:1)有中断源发出请求信号2)中断是开放的(总允许、源允许)3)没有封锁(受阻),受阻情况是:①CPU正在执行同级或高一级的中断服务程序;②现行机器周期不是正在执行的指令的最后一个机器周期,即现行指令完成前.不响应任何中断请求;③当前正在执行的是中断返回指令RETI或访问专用寄存器IE或IP的指令。也就是说,在执行RETI或是访问IE、IP的指令后,至少需要再执行一条其他指令,才会响应中断请求。24(2)中断响应过程进入中断响应周期。CPU在中断响应周期要完成下列操作:1)根据中断请求源的优先级高低,使相应的优先级状态触发器置1。2)清相应中断请求标志位IE0、IE1、TF0或TF1。3)保留断点,把PC内容压入堆栈保存。4)把被响应的中断源的服务程序入口地址送入PC,转入相应的中断服务程序。25(3)中断响应时间从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。1)最快响应时间以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序需要三个机器周期:1个周期(查询)+2个周期(长调用LCALL)2)最长时间若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期:2个周期执行当前指令(其中含有1个周期查询)+4个周期乘除指令+2个周期长调用=8个周期。262.中断处理(服务)与返回在编写中断服务程序时加注意的几点:(1)因各入口地址之间只相隔8个字节,所以通常在中断入口地址单元处存放一条无条件转移指令,使中断服务程序灵活地